]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - html/cgi-bin/mail.cgi
Hardcode theme to ipfire
[ipfire-2.x.git] / html / cgi-bin / mail.cgi
index d409a4c69da3cf1e4b13988025600e1548e77a34..68c516660bf32c040e025fbe04972c78729e2ffd 100755 (executable)
@@ -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        #
@@ -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=();
@@ -101,8 +92,8 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ #SaveButton on configsite
 
                #clear configfiles
                open (TXT, ">$dmafile") or die("Could not open /var/ipfire/dma/dma.conf: $!\n");
-               open (TXT1, ">$authfile") or die("Could not open /var/ipfire/dma/dma.conf: $!\n");
-               open (TXT2, ">$mailfile") or die("Could not open /var/ipfire/dma/dma.conf: $!\n");
+               open (TXT1, ">$authfile") or die("Could not open /var/ipfire/dma/auth.conf: $!\n");
+               open (TXT2, ">$mailfile") or die("Could not open /var/ipfire/dma/mail.conf: $!\n");
                close TXT2;
 
                #Fill hashes with actual values
@@ -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,20 +140,23 @@ 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, '');
@@ -204,35 +201,41 @@ END
        <div class="MAILSRV">
                <table style='width:100%;'>
                <tr>
-                       <td style='width:24em'>$Lang::tr{'email mailaddr'}</td>
+                       <td>$Lang::tr{'email mailsender'}<img src='/blob.gif' alt='*' /></td>
+                       <td><input type='text' name='txt_mailsender' value='$mail{'SENDER'}' style='width:22em;'></td>
+               </tr>
+               <tr>
+                       <td>$Lang::tr{'email mailrcpt'}<img src='/blob.gif' alt='*' /></td>
+                       <td><input type='text' name='txt_recipient' value='$mail{'RECIPIENT'}' style='width:22em;'></td>
+               </tr>
+               <tr>
+                       <td style='width:24em'>$Lang::tr{'email mailaddr'}<img src='/blob.gif' alt='*' /></td>
                        <td><input type='text' name='txt_mailserver' value='$dma{'SMARTHOST'}' style='width:22em;'></td>
                </tr>
                <tr>
-                       <td>$Lang::tr{'email mailport'}</td>
+                       <td>$Lang::tr{'email mailport'}<img src='/blob.gif' alt='*' /></td>
                        <td><input type='text' name='txt_mailport' value='$dma{'PORT'}' size='3'></td>
                </tr>
                <tr>
-                       <td>$Lang::tr{'email mailuser'}<img src='/blob.gif' alt='*' /></td>
+                       <td>$Lang::tr{'email mailuser'}</td>
                        <td><input type='text' name='txt_mailuser' value='$auth{'AUTHNAME'}' style='width:22em;'></td>
                </tr>
                <tr>
-                       <td>$Lang::tr{'email mailpass'}<img src='/blob.gif' alt='*' /></td>
+                       <td>$Lang::tr{'email mailpass'}</td>
                        <td><input type='password' name='txt_mailpass' value='$auth{'AUTHPASS'}' style='width:22em;' ></td>
                </tr>
                <tr>
                        <td>$Lang::tr{'email tls'}</td>
-                       <td><input type='checkbox' name='mail_tls' $checked{'mail_tls'}{'on'}></td>
-               </tr>
-               <tr>
-                       <td>$Lang::tr{'email mailsender'}</td>
-                       <td><input type='text' name='txt_mailsender' value='$mail{'SENDER'}' style='width:22em;'></td>
-               </tr>
-               <tr>
-                       <td>$Lang::tr{'email mailrcpt'}</td>
-                       <td><input type='text' name='txt_recipient' value='$mail{'RECIPIENT'}' style='width:22em;'></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>";
@@ -263,21 +266,21 @@ 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>";
                }
        }
        return $errormessage;
@@ -328,18 +331,3 @@ sub error {
                &Header::closebox();
        }
 }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-