]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - html/cgi-bin/mail.cgi
suricata: Change midstream policy to "pass-flow"
[people/pmueller/ipfire-2.x.git] / html / cgi-bin / mail.cgi
old mode 100755 (executable)
new mode 100644 (file)
index be663a6..0ed3dfe
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2015  IPFire Team  <alexander.marx@ipfire.org>                #
+# Copyright (C) 2007-2020  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -18,9 +18,9 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
 #                                                                             #
 ###############################################################################
+
 use MIME::Lite;
+
 #enable only the following on debugging purpose
 #use warnings;
 #use CGI::Carp 'fatalsToBrowser';
@@ -43,7 +43,7 @@ my $errormessage='';
 #Read all parameters for site
 &Header::getcgihash(\%cgiparams);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
 #Show Headers
 &Header::showhttpheaders();
@@ -81,19 +81,10 @@ if ( -f $mailfile){
 
 #ACTIONS
 if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ #SaveButton on configsite
-       #Check fields
-       if ($cgiparams{'USEMAIL'} eq 'on'){
-               $errormessage=&checkmailsettings;
-       }else{
-               $cgiparams{'txt_mailserver'}='';
-               $cgiparams{'txt_mailport'}='';
-               $cgiparams{'txt_mailuser'}='';
-               $cgiparams{'txt_mailpass'}='';
-               $cgiparams{'mail_tls'}='';
-               $cgiparams{'txt_mailsender'}='';
-               $cgiparams{'txt_recipient'}='';
-       }
-       if(!$errormessage){
+       # Check fields
+       $errormessage = &checkmailsettings();
+
+       if (!$errormessage) {
                #clear hashes
                %auth=();
                %dma=();
@@ -110,14 +101,17 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ #SaveButton on configsite
                $mail{'SENDER'}                 = $cgiparams{'txt_mailsender'};
                $mail{'RECIPIENT'}              = $cgiparams{'txt_recipient'};
 
-               $auth{'AUTHNAME'}               = $cgiparams{'txt_mailuser'};
-               $auth{'AUTHPASS'}               = $cgiparams{'txt_mailpass'};
-               $auth{'AUTHHOST'}               = $cgiparams{'txt_mailserver'};
+               if ($cgiparams{'txt_mailuser'} && $cgiparams{'txt_mailpass'}) {
+                       $auth{'AUTHNAME'}               = $cgiparams{'txt_mailuser'};
+                       $auth{'AUTHPASS'}               = $cgiparams{'txt_mailpass'};
+                       $auth{'AUTHHOST'}               = $cgiparams{'txt_mailserver'};
+                       print TXT1 "$auth{'AUTHNAME'}|$auth{'AUTHHOST'}:$auth{'AUTHPASS'}\n";
+               }
 
                $dma{'SMARTHOST'}               = $cgiparams{'txt_mailserver'};
                $dma{'PORT'}                    = $cgiparams{'txt_mailport'};
-               $dma{'STARTTLS'}                = '' if ($cgiparams{'mail_tls'});
-               $dma{'SECURETRANSFER'}  = '' if exists $dma{'STARTTLS'};
+               $dma{'STARTTLS'}                = '' if ($cgiparams{'mail_tls'} eq 'explicit');
+               $dma{'SECURETRANSFER'}  = '' if ($cgiparams{'mail_tls'} eq 'explicit' || $cgiparams{'mail_tls'} eq 'implicit');
                $dma{'SPOOLDIR'}                = "/var/spool/dma";
                $dma{'FULLBOUNCE'}              = '';
                $dma{'MAILNAME'}                = "$mainsettings{'HOSTNAME'}.$mainsettings{DOMAINNAME}";
@@ -129,7 +123,7 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ #SaveButton on configsite
                        print TXT "$k $v\n";
                }
                close TXT;
-               print TXT1 "$auth{'AUTHNAME'}|$auth{'AUTHHOST'}:$auth{'AUTHPASS'}\n";
+               close TXT1;
                close TXT2;
 
        }else{
@@ -146,28 +140,31 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'email testmail'}"){ #Testmail button on
 
 #FUNCTIONS
 sub configsite{
-       
-
        #If update set fieldvalues new
        if($cgiparams{'update'} eq 'on'){
-               $dma{'USEMAIL'}= 'on';
+               $mail{'USEMAIL'}        = 'on';
+               $mail{'SENDER'}         =  $cgiparams{'txt_mailsender'};
+               $mail{'RECIPIENT'}      =  $cgiparams{'txt_recipient'};
                $dma{'SMARTHOST'}       = $cgiparams{'txt_mailserver'};
                $dma{'PORT'}            = $cgiparams{'txt_mailport'};
-               $auth{'AUTHUSER'}       = $cgiparams{'txt_mailuser'};
+               $auth{'AUTHNAME'}       = $cgiparams{'txt_mailuser'};
                $auth{'AUTHHOST'}       = $cgiparams{'txt_mailserver'};
                $auth{'AUTHPASS'}       = $cgiparams{'txt_mailpass'};
+               $dma{'STARTTLS'}        = $cgiparams{'mail_tls'};
        }
        #find preselections
        $checked{'usemail'}{$mail{'USEMAIL'}}   = 'CHECKED';
-       $checked{'mail_tls'}{'on'}                              = 'CHECKED' if exists $dma{'STARTTLS'};
-       
+       $selected{'mail_tls'}{'explicit'} = 'selected' if exists $dma{'STARTTLS'};
+       $selected{'mail_tls'}{'implicit'} = 'selected' if (exists $dma{'SECURETRANSFER'}) and (not exists $dma{'STARTTLS'});
+       $selected{'mail_tls'}{'disabled'} = 'selected' if (not exists $dma{'SECURETRANSFER'}) and (not exists $dma{'STARTTLS'});
+
        #Open site
        &Header::openpage($Lang::tr{'email settings'}, 1, '');
        &Header::openbigbox('100%', 'center');
        &error;
        &info;
        &Header::openbox('100%', 'left', $Lang::tr{'email config'});
-       
+
        #### JAVA SCRIPT ####
        print<<END;
 <script>
@@ -229,10 +226,16 @@ END
                </tr>
                <tr>
                        <td>$Lang::tr{'email tls'}</td>
-                       <td><input type='checkbox' name='mail_tls' $checked{'mail_tls'}{'on'}></td>
+                       <td>
+                               <select name='mail_tls'>
+                                       <option value='implicit' $selected{'mail_tls'}{'implicit'}>$Lang::tr{'email tls implicit'}</option>
+                                       <option value='explicit' $selected{'mail_tls'}{'explicit'}>$Lang::tr{'email tls explicit'}</option>
+                                       <option value='disabled' $selected{'mail_tls'}{'disabled'}>$Lang::tr{'disabled'}</option>
+                               </select>
+                       </td>
                </tr>
 END
-               if (! -z $dmafile && $mail{'USEMAIL'} eq 'on'){
+               if (! -z $dmafile && $mail{'USEMAIL'} eq 'on' && !$errormessage){
                        print "<tr>";
                        print "<td></td>";
                        print "<td><input type='submit' name='ACTION' value='$Lang::tr{'email testmail'}'></td>";
@@ -254,7 +257,7 @@ END
        </form>
 END
        &Header::closebox();
-       &Header::closebigbox(); 
+       &Header::closebigbox();
        &Header::closepage();
        exit 0;
 }
@@ -263,23 +266,27 @@ sub checkmailsettings {
        #Check if mailserver is an ip address or a domain
        if ($cgiparams{'txt_mailserver'} =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/){
                if (! &General::validip($cgiparams{'txt_mailserver'})){
-                       $errormessage.="$Lang::tr{'email invalid mailip'} $cgiparams{'txt_mailserver'}<br>";
+                       $errormessage .= $Lang::tr{'email invalid mailip'} . "<br>";
                }
        }elsif(! &General::validfqdn($cgiparams{'txt_mailserver'})){
-                       $errormessage.="$Lang::tr{'email invalid mailfqdn'} $cgiparams{'txt_mailserver'}<br>";
+                       $errormessage .= $Lang::tr{'email invalid mailfqdn'} . "<br>";
        }
        #Check valid mailserverport
        if($cgiparams{'txt_mailport'} < 1 || $cgiparams{'txt_mailport'} > 65535){
-               $errormessage.="$Lang::tr{'email invalid mailport'} $cgiparams{'txt_mailport'}<br>";
+               $errormessage .= $Lang::tr{'email invalid mailport'} . "<br>";
        }
        #Check valid sender
        if(! $cgiparams{'txt_mailsender'}){
-               $errormessage.="$Lang::tr{'email empty field'} $Lang::tr{'email mailsender'}<br>";
+               $errormessage .= $Lang::tr{'email empty field'} . "<br>";
        }else{
                if (! &General::validemail($cgiparams{'txt_mailsender'})){
-                       $errormessage.="<br>$Lang::tr{'email invalid'} $Lang::tr{'email mailsender'}<br>";
+                       $errormessage .= "$Lang::tr{'email invalid'} $Lang::tr{'email mailsender'}<br>";
                }
        }
+       # Check for a valid recipient
+       if (!&General::validemail($cgiparams{'txt_recipient'})) {
+               $errormessage .= $Lang::tr{'email recipient invalid'} . "<br>";
+       }
        return $errormessage;
 }
 
@@ -290,7 +297,7 @@ sub testmail {
                To              => $mail{'RECIPIENT'},
                #Cc             => 'some@other.com, some@more.com',
                Subject => 'IPFire Testmail',
-               Type    => 'multipart/mixed'
+               Type    => 'multipart/alternative'
        );
 
        ### Add parts (each "attach" has same arguments as "new"):
@@ -299,15 +306,6 @@ sub testmail {
                Data    => "This is the IPFire test mail."
        );
 
-       ### Add attachment for testing
-       #$msg->attach(
-       #       Type     => 'application/txt',
-       #       Encoding => 'base64',
-       #       Path     => '/var/ipfire/dma/dma.conf',
-       #       Filename => 'dma.conf',
-       #       Disposition => 'attachment'
-       #);
-
        $msg->send_by_sendmail;
 }
 
@@ -328,18 +326,3 @@ sub error {
                &Header::closebox();
        }
 }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-