]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/squid-accounting/accounting.cgi
Update libvirt to 2.1
[ipfire-2.x.git] / src / squid-accounting / accounting.cgi
index a5a93767201ce50ad099ded24ea95432a5e45d1b..0fe5ff6b343e929676e2594241906ff784293111 100755 (executable)
@@ -56,12 +56,17 @@ my $count=0;
 my $col;
 my $proxlog=$Lang::tr{'stopped'};
 my $proxsrv=$Lang::tr{'stopped'};
+my $mailfile="${General::swroot}/dma/mail.conf";
 
 &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("$settingsfile", \%settings) if(-f $settingsfile);
 
+if ( -f $mailfile){
+       &General::readhash($mailfile, \%mail);
+}
+
 #Find out which lang is set (used later to set decimal separator correctly)
 my $uplang=uc($mainsettings{'LANGUAGE'});
 setlocale LC_NUMERIC,"$mainsettings{'LANGUAGE'}_$uplang";
@@ -92,15 +97,16 @@ if ($cgiparams{'BILLACTION'} eq "open_preview"){
        my $actyear  = $now[5];
        my ($from,$till)=&ACCT::getmonth($actmonth,$actyear);
        my @billar = &ACCT::GetTaValues($from,$till,$rggrp);
-       &ACCT::pdf2(\@billar,$actmonth,$actyear,$mwst,$address_cust,$address_host,$billpos,$rggrp,$cur,"on");
+       my $tempfile=&ACCT::pdf2(\@billar,$actmonth,$actyear,$mwst,$address_cust,$address_host,$billpos,$rggrp,$cur,"on");
        #Show PDF preview
-       open(DLFILE, "</var/ipfire/accounting/bill/tmp.pdf") or die "Unable to open tmp.pdf: $!";
+       open(DLFILE, "<$tempfile") or die "Unable to open tmp.pdf: $!";
        my @fileholder = <DLFILE>;
        print "Content-Type:application/pdf\n";
-       my @fileinfo = stat("/var/ipfire/accounting/bill/tmp.pdf");
+       my @fileinfo = stat($tempfile);
        print "Content-Length:$fileinfo[7]\n";
        print "Content-Disposition:attachment;filename='tmp.pdf';\n\n";
        print @fileholder;
+       unlink ($tempfile);
        exit (0);
 }
 
@@ -135,11 +141,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ #SaveButton on configsite
        if ($cgiparams{'USEMAIL'} eq 'on'){
                $errormessage=&checkmailsettings;
        }elsif($cgiparams{'USEMAIL'} ne 'on'){
-               $cgiparams{'txt_mailserver'}='';
-               $cgiparams{'txt_mailport'}='';
-               $cgiparams{'txt_mailuser'}='';
-               $cgiparams{'txt_mailpass'}='';
-               $cgiparams{'mail_tls'}='';
                $cgiparams{'txt_mailsender'}='';
                $cgiparams{'txt_mailsubject'}='';
                $mailtxt='';
@@ -154,11 +155,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ #SaveButton on configsite
                $settings{'CURRENCY'}   = $cgiparams{'txt_currency'};
                $settings{'SKIPURLS'}   = $skipurls;
                $settings{'USEMAIL'}    = $cgiparams{'USEMAIL'};
-               $settings{'MAILSRV'}    = $cgiparams{'txt_mailserver'};
-               $settings{'MAILPORT'}   = $cgiparams{'txt_mailport'};
-               $settings{'MAILUSER'}   = $cgiparams{'txt_mailuser'};
-               $settings{'MAILPASS'}   = $cgiparams{'txt_mailpass'};
-               $settings{'TLS'}                = $cgiparams{'mail_tls'};
                $settings{'MAILSENDER'} = $cgiparams{'txt_mailsender'};
                $settings{'MAILSUB'}    = $cgiparams{'txt_mailsubject'};
                $settings{'MAILTXT'}    = $mailtxt;
@@ -567,10 +563,6 @@ sub configsite{
        #If update set fieldvalues new
        if($cgiparams{'update'} eq 'on'){
                $settings{'USEMAIL'} = 'on';
-               $settings{'MAILSRV'} = $cgiparams{'txt_mailserver'};
-               $settings{'MAILPORT'} = $cgiparams{'txt_mailport'};
-               $settings{'MAILUSER'} = $cgiparams{'txt_mailuser'};
-               $settings{'MAILPASS'} = $cgiparams{'txt_mailpass'};
                $settings{'MAILSUB'} = $cgiparams{'txt_mailsubject'};
                $settings{'MAILTXT'} = $cgiparams{'txt_mailtxt'};
        }
@@ -579,14 +571,13 @@ sub configsite{
        $checked{'logging'}{$settings{'LOG'}}                                   = 'CHECKED';
        $checked{'multiuser'}{$settings{'MULTIUSER'}}                   = 'CHECKED';
        $checked{'usemail'}{$settings{'USEMAIL'}}                               = 'CHECKED';
-       $checked{'mail_tls'}{$settings{'TLS'}}                                  = 'CHECKED';
-       
+
        #Open site
        &Header::openpage($Lang::tr{'acct settings'}, 1, '');
        &Header::openbigbox('100%', 'center');
        &error;
        &Header::openbox('100%', 'left', $Lang::tr{'acct config'});
-       
+
        #### JAVA SCRIPT ####
        print<<END;
 <script>
@@ -630,57 +621,45 @@ END
                <td>$Lang::tr{'acct multiuser'}</td>
                <td><input type='checkbox' name='multiuser' $checked{'multiuser'}{'on'}></td>
                <td></td>
-       <tr>
+       </tr>
        <tr>
                <td>$Lang::tr{'acct mwst'}</td>
                <td><input type='text' name='txt_mwst' value='$settings{'MWST'}' style='width:22em;'></td>
                <td></td>
+       </tr>
        <tr>
                <td>$Lang::tr{'acct currency'}</td>
                <td><input type='text' name='txt_currency' value='$settings{'CURRENCY'}' style='width:22em;'></td>
                <td></td>
-       
+       </tr>
        <tr>
                <td valign='top'>$Lang::tr{'acct skipurl'}</td>
                <td style='padding-left:0.2em;'><textarea name="txt_skipurls" cols="20" rows="6" style='width:22em;'>$settings{'SKIPURLS'}</textarea></td>
                <td></td>
        </tr>
+END
+
+if ($mail{'USEMAIL'} eq 'on'){
+       if (!$settings{'MAILSENDER'}){
+               $settings{'MAILSENDER'} = $mail{'SENDER'};
+       }
+print <<END;
        <tr>
                <td>$Lang::tr{'acct usemail'}</td>
                <td><label><input type='checkbox' name='USEMAIL' id='MAIL' $checked{'usemail'}{'on'}></label></td>
                <td></td>
        </tr>
-       </table><br>
+END
+}
 
+print <<END;
+       </table><br>
        <div class="MAILSRV">
                <table style='width:100%;'>
                <tr>
-                       <td style='width:24em'>$Lang::tr{'acct mailaddr'}</td>
-                       <td><input type='text' name='txt_mailserver' value='$settings{'MAILSRV'}' style='width:22em;'></td>
-               </tr>
-               <tr>
-                       <td>$Lang::tr{'acct mailport'}</td>
-                       <td><input type='text' name='txt_mailport' value='$settings{'MAILPORT'}' size='3'></td>
-               </tr>
-               <tr>
-                       <td>$Lang::tr{'acct mailuser'}<img src='/blob.gif' alt='*' /></td>
-                       <td><input type='text' name='txt_mailuser' value='$settings{'MAILUSER'}' style='width:22em;'></td>
-               </tr>
-               <tr>
-                       <td>$Lang::tr{'acct mailpass'}<img src='/blob.gif' alt='*' /></td>
-                       <td><input type='password' name='txt_mailpass' value='$settings{'MAILPASS'}' style='width:22em;' ></td>
-               </tr>
-               <tr>
-                       <td>$Lang::tr{'acct tls'}</td>
-                       <td><input type='checkbox' name='mail_tls' $checked{'mail_tls'}{'on'}></td>
-               </tr>
-               <tr>
-                       <td>$Lang::tr{'acct mailsender'}</td>
+                       <td style='width:24em'>$Lang::tr{'acct mailsender'}</td>
                        <td><input type='text' name='txt_mailsender' value='$settings{'MAILSENDER'}' style='width:22em;'></td>
                </tr>
-               <tr>
-                       <td colspan='2'>&nbsp;</td>
-               </tr>
                <tr>
                        <td>$Lang::tr{'acct subject'}</td>
                        <td><input type='text' name='txt_mailsubject' value='$settings{'MAILSUB'}' style='width:22em;'></td>
@@ -692,7 +671,6 @@ END
                </table>
        </div>
 
-
        <table style='width:100%;'>
        <tr>
                <td colspan='3' display:inline align='right'><input type='submit' name='ACTION' value='$Lang::tr{'save'}'></td>
@@ -906,7 +884,7 @@ sub generatemonthgraph{
        my $sth;
        my $cnt=0;
        #If we want to show Data from within last 2 months, get DATA from ACCT
-       if ( ! $grmon < ($mon+1) && $gryear == ($year+1900)){
+       if ( $grmon == ($mon)+1 && $gryear == ($year+1900)){
                $sth=&ACCT::getmonthgraphdata("ACCT",$from,$till,$grhost);
        }else{
                #If we want to show data from a date older than last two months, use ACCT_HIST
@@ -1115,64 +1093,89 @@ print<<END;
                        </tr>
                        <tr>
                                <td>$Lang::tr{'acct companytype'}</td>
+<!-- TODO: when the value of this radio button changes, the layout needs to be reloaded so "blob.gif" gets displayed -->
                                <td>
                                        <input type='radio' name='rdo_companytype' value='CUST' $checked{'rdo_companytype'}{'CUST'}>$Lang::tr{'acct customer'} &nbsp;
                                        <input type='radio' name='rdo_companytype' value='HOST' $checked{'rdo_companytype'}{'HOST'}>$Lang::tr{'acct hoster'}</td>
-                               <td style='width:8em;'>$Lang::tr{'acct bank'}</td>
+                               <td style='width:8em;'>$Lang::tr{'acct bank'}
+END
+
+if ($cgiparams{'rdo_companytype'} eq 'HOST'){
+       print "&nbsp;<img src='/blob.gif' alt='*' />";
+}
+
+print <<END;
+                               </td>
                                <td>
                                        <input type='text' name='txt_bank' value='$cgiparams{'txt_bank'}' style='width:25em;'></td>
                        </tr>
                        <tr>
-                               <td>$Lang::tr{'acct company'}</td>
+                               <td>$Lang::tr{'acct company'}&nbsp;<img src='/blob.gif' alt='*' /></td>
                                <td>
                                        <input type='text' name='txt_company' value='$cgiparams{'txt_company'}' style='width:25em;'></td>
-                               <td>$Lang::tr{'acct iban'}<img src='/blob.gif' alt='*' /></td>
+                               <td>$Lang::tr{'acct iban'}</td>
                                <td>
                                        <input type='text' name='txt_iban' value='$cgiparams{'txt_iban'}' style='width:25em;'></td>
                        </tr>
                        <tr>
-                               <td>$Lang::tr{'acct name1'}<img src='/blob.gif' alt='*' /></td>
+                               <td>$Lang::tr{'acct name1'}</td>
                                <td>
                                        <input type='text' name='txt_name1' value='$cgiparams{'txt_name1'}' style='width:25em;'></td>
-                               <td>$Lang::tr{'acct bic'}<img src='/blob.gif' alt='*' /></td>
+                               <td>$Lang::tr{'acct bic'}</td>
                                <td>
                                        <input type='text' name='txt_bic' maxlength='8' value='$cgiparams{'txt_bic'}' style='width:25em;'></td>
                        </tr>
                        <tr>
-                               <td>$Lang::tr{'acct str'}</td>
+                               <td>$Lang::tr{'acct str'}&nbsp;<img src='/blob.gif' alt='*' /></td>
                                <td align='left'>
                                        <input type='text' name='txt_str' value='$cgiparams{'txt_str'}' style='width:25em;'></td>
-                               <td>$Lang::tr{'acct blz'}</td>
+                               <td>$Lang::tr{'acct blz'}
+END
+
+if ($cgiparams{'rdo_companytype'} eq 'HOST'){
+       print "&nbsp;<img src='/blob.gif' alt='*' />";
+}
+
+print <<END;
+                               </td>
                                <td>
                                        <input type='text' name='txt_blz' maxlength='8' value='$cgiparams{'txt_blz'}' style='width:25em;'></td>
                        </tr>
                        <tr>
-                               <td>$Lang::tr{'acct str_nr'}</td>
+                               <td>$Lang::tr{'acct str_nr'}&nbsp;<img src='/blob.gif' alt='*' /></td>
                                <td><input type='text' name='txt_str_nr' value='$cgiparams{'txt_str_nr'}' style='width:25em;'></td>
-                               <td>$Lang::tr{'acct kto'}</td>
+                               <td>$Lang::tr{'acct kto'}
+END
+
+if ($cgiparams{'rdo_companytype'} eq 'HOST'){
+       print "&nbsp;<img src='/blob.gif' alt='*' />";
+}
+
+print <<END;
+                               </td>
                                <td>
                                        <input type='text' name='txt_kto' value='$cgiparams{'txt_kto'}' style='width:25em;'></td>
                        </tr>
 
                        
                        <tr>
-                               <td>$Lang::tr{'acct plz'}</td>
+                               <td>$Lang::tr{'acct plz'}&nbsp;<img src='/blob.gif' alt='*' /></td>
                                <td>
                                        <input type='text' name='txt_plz' value='$cgiparams{'txt_plz'}' style='width:25em;'></td>
-                               <td>$Lang::tr{'acct email'}</td>
+                               <td>$Lang::tr{'acct email'}&nbsp;<img src='/blob.gif' alt='*' /></td>
                                <td><input type='text' name='txt_email' value='$cgiparams{'txt_email'}' style='width:25em;'></td>
                        </tr>
                        <tr>
-                               <td>$Lang::tr{'acct city'}</td>
+                               <td>$Lang::tr{'acct city'}&nbsp;<img src='/blob.gif' alt='*' /></td>
                                <td><input type='text' name='txt_city' value='$cgiparams{'txt_city'}' style='width:25em;'></td>
-                               <td>$Lang::tr{'acct inet'}<img src='/blob.gif' alt='*' /></td>
+                               <td>$Lang::tr{'acct inet'}</td>
                                <td>
                                        <input type='text' name='txt_inet' value='$cgiparams{'txt_inet'}' style='width:25em;'></td>
                        </tr>
                        <tr>
                                <td></td>
                                <td></td>
-                               <td>$Lang::tr{'acct hrb'}<img src='/blob.gif' alt='*' /></td>
+                               <td>$Lang::tr{'acct hrb'}</td>
                                <td>
                                        <input type='text' name='txt_hrb' value='$cgiparams{'txt_hrb'}' style='width:25em;'></td>
                        </tr>
@@ -1185,19 +1188,19 @@ print<<END;
                        <tr>
                                <td></td>
                                <td></td>
-                               <td>$Lang::tr{'acct tel'}<img src='/blob.gif' alt='*' /></td>
+                               <td>$Lang::tr{'acct tel'}</td>
                                <td>
                                        <input type='text' name='txt_tel' value='$cgiparams{'txt_tel'}' style='width:25em;'></td>
                        </tr>
                        <tr>
                                <td></td>
                                <td></td>
-                               <td>$Lang::tr{'acct fax'}<img src='/blob.gif' alt='*' /></td>
+                               <td>$Lang::tr{'acct fax'}</td>
                                <td>
                                        <input type='text' name='txt_fax' value='$cgiparams{'txt_fax'}' style='width:25em;'></td>
                        </tr>
                        <tr>
-                               <td colspan='6'><img src='/blob.gif' alt='*' /><font size="1">$Lang::tr{'acct optional'}</font></td>
+                               <td colspan='6'><img src='/blob.gif' alt='*' /><font size="1">&nbsp;$Lang::tr{'acct not optional'}</font></td>
                        </tr>
                        <tr>
 END
@@ -1714,14 +1717,14 @@ if ($host && $cust){
        <form method='post' action='$ENV{'SCRIPT_NAME'}' ENCTYPE='multipart/form-data'>
                <table style='width:100%;'>
                        <tr>
-                               <td style='width: 22em;'>$Lang::tr{'name'}</td>
+                               <td style='width: 22em;'>$Lang::tr{'name'}&nbsp;<img src='/blob.gif' alt='*' /></td>
                                <td><input type='text' name='txt_billgroup' value='$cgiparams{'txt_billgroup'}' style='width: 24em;'></td>
                        </tr>
                        <tr>
                                <td><br></td>
                        </tr>
                        <tr>
-                               <td valign='top'>$Lang::tr{'acct billtext1'}<img src='/blob.gif' alt='*' /></td>
+                               <td valign='top'>$Lang::tr{'acct billtext1'}</td>
                                <td><textarea name='txt_billtext1' cols='40' rows='5'  style='width: 24em;' maxlength='300'>$cgiparams{'txt_billtext1'}</textarea></td>
                        </tr>
                        <tr><td><br></td></tr>
@@ -1781,7 +1784,7 @@ END
        my $val=sprintf"%.3f",$cgiparams{'txt_cent'};
        print"<tr><td>$Lang::tr{'acct cent'}</td><td><input type='text' name='txt_cent' value='$val' size='3'>$settings{'CURRENCY'} </td></tr>";
        #Optional note
-       print"<tr><td colspan='2' align='left'><img src='/blob.gif' alt='*' /><font size='1'>$Lang::tr{'acct optional'}</font></td></tr>";
+       print"<tr><td colspan='2' align='left'><img src='/blob.gif' alt='*' /><font size='1'>$Lang::tr{'required field'}</font></td></tr>";
        print"<tr><td colspan='2' align='right'><br><br>";
        print"</td></tr></table>";
 
@@ -1958,9 +1961,9 @@ END
 sub viewtablehosts{
        $dbh=&ACCT::connectdb;
        &Header::openbox('100%', 'left', $Lang::tr{'acct hosts'});
-       my $mon=$_[0];
-       my $year=$_[1];
-       my ($from,$till)=&ACCT::getmonth($mon,$year);
+       my $mon1=$_[0];
+       my $year1=$_[1];
+       my ($from,$till)=&ACCT::getmonth($mon1,$year1);
        $count=0;
        #Menu to display another month
        print<<END;
@@ -1985,7 +1988,7 @@ END
                </select></td>
                <td style='text-align: center;'><select name='year'>
 END
-       for (my $j=2014;$j<=($year);$j++){
+       for (my $j=2014;$j<=($year1);$j++){
                if(($_[1]) eq $j){
                        print"<option selected>$j</option>";
                }else{
@@ -2010,7 +2013,12 @@ END
                <th></th>
        </tr>
 END
-       my $res = $dbh->selectall_arrayref("SELECT SUM(BYTES),min(TIME_RUN),max(TIME_RUN),NAME from ACCT where TIME_RUN between ".$from." and ".$till." group by NAME;");
+       my $res;
+       if (($mon)+1 == $mon1 && ($year)+1900 == $year1){
+               $res = $dbh->selectall_arrayref("SELECT SUM(BYTES),min(TIME_RUN),max(TIME_RUN),NAME from ACCT where TIME_RUN between ".$from." and ".$till." group by NAME;");
+       }else{
+               $res = $dbh->selectall_arrayref("SELECT SUM(BYTES),min(strftime('%s',TIME_RUN)),max(strftime('%s',TIME_RUN)),NAME from ACCT_HIST where date(TIME_RUN) > date($from,'unixepoch') and date(TIME_RUN) < date($till,'unixepoch') group by NAME;");
+       }
        my $sumbytes;
        my $type;
        my $lineval;
@@ -2035,8 +2043,8 @@ END
                                        <input type='image' src='/images/utilities-system-monitor.png' alt="$Lang::tr{'status'}" title="$Lang::tr{'status'}" />
                                        <input type='hidden' name='ACTION' value='viewgraph'>
                                        <input type='hidden' name='host' value='$name'>
-                                       <input type='hidden' name='month' value='$mon'>
-                                       <input type='hidden' name='year' value='$year'>
+                                       <input type='hidden' name='month' value='$mon1'>
+                                       <input type='hidden' name='year' value='$year1'>
                                        <input type='hidden' name='traffic' value="$Lang::tr{'acct sum'} $Lang::tr{'acct traffic'} $lineval $type">
                                        </form>
                                        
@@ -2169,18 +2177,6 @@ END
 }
 
 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{'acct invalid mailip'} $cgiparams{'txt_mailserver'}<br>";
-               }
-       }elsif(! &General::validfqdn($cgiparams{'txt_mailserver'})){
-                       $errormessage.="$Lang::tr{'acct invalid mailfqdn'} $cgiparams{'txt_mailserver'}<br>";
-       }
-       #Check valid mailserverport
-       if($cgiparams{'txt_mailport'} < 1 || $cgiparams{'txt_mailport'} > 65535){
-               $errormessage.="$Lang::tr{'acct invalid mailport'} $cgiparams{'txt_mailport'}<br>";
-       }
        #Check valid sender
        if(! $cgiparams{'txt_mailsender'}){
                $errormessage.="$Lang::tr{'acct empty field'} $Lang::tr{'acct mailsender'}<br>";