diff -up smeserver-sme8admin-1.3/root/etc/e-smith/web/functions/sme8admin.newsql smeserver-sme8admin-1.3/root/etc/e-smith/web/functions/sme8admin --- smeserver-sme8admin-1.3/root/etc/e-smith/web/functions/sme8admin.newsql 2012-06-16 13:05:55.000000000 -0400 +++ smeserver-sme8admin-1.3/root/etc/e-smith/web/functions/sme8admin 2013-12-30 00:27:53.000000000 -0500 @@ -1044,6 +1044,106 @@ sub showDhcpd #details du service pppoe sub showPppoe { +# get first db entry +my $requete="SELECT substr(debut,1,4), substr(debut,6,2) FROM pppoe ORDER BY debut ASC LIMIT 1"; + + #connexion a la base de donnees mySQL + connectBD(); + #recuperation des donnees + my $rq=$bd->prepare($requete) or print $q->p(sprintf(gettext("MySQL error : Impossible to prepare SQL query \"%s\" : %s\n"),$requete,$bd->errstr)); + $rq->execute or print $q->p(sprintf(gettext("MySQL error : Can't execute query : %s\n"),$rq->errstr)); + + my @debut = $rq->fetchrow_array(); +# get first db entry +my $requete="SELECT substr(fin,1,4), substr(fin,6,2) FROM pppoe ORDER BY debut DESC LIMIT 1"; + + #connexion a la base de donnees mySQL + connectBD(); + #recuperation des donnees + my $rq=$bd->prepare($requete) or print $q->p(sprintf(gettext("MySQL error : Impossible to prepare SQL query \"%s\" : %s\n"),$requete,$bd->errstr)); + $rq->execute or print $q->p(sprintf(gettext("MySQL error : Can't execute query : %s\n"),$rq->errstr)); + + my @fin = $rq->fetchrow_array(); + + my $end_yymm = $debut[0].$debut[1]; + my $yymm = $fin[0].$fin[1]; + my $startMonth = $debut[1]; + my $startYear = $debut[0]; + my $endMonth; + my $endYear; + my $preMonth; + my $preYear; + my $i=0; + +print $q->p(gettext("Traffic by Month")); + print $q->start_table({-border=>'1'}), + $q->start_Tr; + print $q->th(gettext("year-month")); + print $q->th(gettext("IN (GB)")); + print $q->th(gettext("OUT (GB)")); + print $q->th(gettext("TOTAL (GB)")); + $q->end_Tr; + + while ($end_yymm < $yymm) { + + if ($startMonth eq '12') { + $endMonth = 1; + $endYear = $startYear + 1; + } else { + $endMonth = $startMonth + 1; + $endYear = $startYear; + } + ## Now that you have the end year and month incremented setup the end_yymm variable again to be picked up in the while statement: + $end_yymm = $startYear . ${\(length($startMonth) == 1 ? '0' : '')} . $startMonth; + + if ($startMonth eq '1') { + $preMonth=12; + $preYear=$startYear-1; + } + else { + $preMonth=$startMonth-1; + $preYear= $startYear; + } + # ...... carry on with the rest of your code +# print "**$end_yymm
\n"; + + $requete="SELECT substring(`fin`,1,7) as 'month', +round(SUM(`volume_in`)/1024/1024/1024,3) as 'In (Go)' , +round(SUM(`volume_out`) /1024/1024/1024,3) as 'Out (Go)' , +round(SUM(`volume_in` + `volume_out`)/1024/1024/1024,3) as 'Total (Go)' , +SUM(TIME_TO_SEC(`duree`))/3600/24 as 'duree' +FROM `pppoe` WHERE +# mois +(`debut`> '$startYear-$startMonth-01 00:00:00' and `fin`< '$endYear-$endMonth-01 00:00:00') +# bordure +or ( `debut`> '$preYear-$preMonth-01 00:00:00' and `debut`< '$startYear-$startMonth-01 00:00:00' and `fin`> '$startYear-$startMonth-01 00:00:00') +or ( `debut`< '$endYear-$endMonth-01 00:00:00' and `fin`> '$endYear-$endMonth-01 00:00:00' and `fin`< '$endYear-$endMonth-28 00:00:00')"; + + my $rq=$bd->prepare($requete) or print $q->p(sprintf(gettext("MySQL error : Impossible to prepare SQL query \"%s\" : %s\n"),$requete,$bd->errstr)); + $rq->execute or print $q->p(sprintf(gettext("MySQL error : Can't execute query : %s\n"),$rq->errstr)); + +my @ligne = $rq->fetchrow_array(); +print $q->start_Tr; + print $q->td("$startYear-". ${\(length($startMonth) == 1 ? '0' : '')} ."$startMonth"); + print $q->td($ligne[1]); + print $q->td($ligne[2]); + print $q->td($ligne[3]); + print $q->end_Tr; + + # get ready for next loop + if ($startMonth eq '12') { + $startMonth = 1; + $startYear++; + } else { + $startMonth++ + } + + } # end the while loop +print $q->end_table; + +deconnectBD(); + + showDbData( [ [gettext("Start"),], [gettext("End"),], @@ -1147,7 +1247,7 @@ sub showDbData print $q->table($q->Tr($q->td(gettext("Connections which lasted ")), $q->td({bgcolor=>"#FF4444"},sprintf(gettext("more than %s hours are highlighted.\n"),$params{'LimitVpnDuration'})))); } - elsif ($q->param('service') eq 'pppoe') + elsif ($q->param('service') eq 'wan'|| $q->param('service') eq 'pppoe' ) { print $q->table($q->Tr($q->td(gettext("Connections which lasted ")), $q->td({bgcolor=>"#FF4444"},sprintf(gettext("less than %s hours are highlighted.\n"),$params{'LimitPppoeDuration'})))), @@ -1185,7 +1285,7 @@ sub showDbData #si le nb d'heure > limite, surbrillance print $q->start_Tr({bgcolor=>(($1 >= $params{'LimitVpnDuration'})?"#FF4444":"#FFFFFF")}); } - elsif ($q->param('service') eq 'pppoe') + elsif ($q->param('service') eq 'wan' || $q->param('service') eq 'pppoe') { #on interroge la bd pour voir si il y a eu une longue deconnexion #(beaucoup plus simple que de parser les 2 dates et faire une difference, la on utilise la possibilite de calcul de diff de dates de MySQL) diff -up smeserver-sme8admin-1.3/root/usr/bin/sme8admind.newsql smeserver-sme8admin-1.3/root/usr/bin/sme8admind --- smeserver-sme8admin-1.3/root/usr/bin/sme8admind.newsql 2013-12-30 00:21:28.000000000 -0500 +++ smeserver-sme8admin-1.3/root/usr/bin/sme8admind 2013-12-30 00:22:54.000000000 -0500 @@ -292,8 +292,11 @@ sub connectBD #DBI:mysql, deconnecte MOI sub deconnectBD { - $bd->disconnect; - if (!defined ($bd)) {print "MYSQL error $DBI::errstr\n";} + if (defined ($bd)) { + $bd->disconnect or + warn "MYSQL error $DBI::errstr\n";} + else + { print "mysql : nothing to disconnect";} } #---------------------------------------------------------------- @@ -424,6 +427,47 @@ sub tell_log { sub parse_logs { connectBD(); + # ici on met a jour volume connexion meme si pas fini si pppoe et si pas trouvé de fin dans log + my $smedb=esmith::ConfigDB->open; + my $ppoeif = $smedb->get("ExternalInterface")->prop('Name'); + my $recBytes=`cat /proc/net/dev|grep $ppoeif|cut -d ':' -f2|tr -s ' '| sed -e 's/^[ \t]*//'|cut -d ' ' -f1`; + my $senBytes=`cat /proc/net/dev|grep $ppoeif|tr -s ' '| sed -e 's/^[ \t]*//'|cut -d " " -f9`; + + #my $requete="SELECT pid_pppd FROM pppoe WHERE ORDER DESC LIMIT 1"; + #my $rq=$bd->prepare($requete) or print $q->p(sprintf(gettext("MySQL error : Impossible to prepare SQL query \"%s\" : %s\n"),$requete,$bd->errstr)); + #$rq->execute or print $q->p(sprintf(gettext("MySQL error : Can't execute query : %s\n"),$rq->errstr)); + #my $pidPppd = $rq->fetchrow_array(); + my $pidPppd=`cat /var/run/$ppoeif.pid`; + print "the current pid for pppd is $pidPppd \n"; + + my $reslt1=execute_sql_query("SELECT * FROM pppoe WHERE pid_pppd='$pidPppd'"); + #si on a trouve une ligne ==> update dans pppoe + if ($reslt1 != "0E0") { + my $requete1="UPDATE pppoe SET volume_out=$senBytes, volume_in=$recBytes, fin=now() where pid_pppd=$pidPppd ORDER BY debut DESC LIMIT 1;"; + #print "requete a executer : $requete1 \n"; + execute_sql_query($requete1); + } + # on fait de même pour les conenxions VPN + foreach my $mypid (`ls /var/run/ppp[0-9]*.pid`){ + $mypid =~ /\/var\/run\/(ppp[0-9]*).pid/; + my $vpnif = $1; + $mypid = `cat $mypid`; + if ($vpnif ne $ppoeif ) { + my $recBytes=`cat /proc/net/dev|grep $vpnif|cut -d ':' -f2|tr -s ' '| sed -e 's/^[ \t]*//'|cut -d ' ' -f1`; + my $senBytes=`cat /proc/net/dev|grep $vpnif|tr -s ' '| sed -e 's/^[ \t]*//'|cut -d " " -f9`; + + my $reslt1=execute_sql_query("SELECT * FROM vpn WHERE pid_pppd='$mypid'"); + + if ($reslt1 != "0E0") { + my $requete1="UPDATE vpn SET volume_out=$senBytes, volume_in=$recBytes, fin=now() where pid_pppd=$mypid ORDER BY debut DESC LIMIT 1;"; + #print "requete a executer : $requete1 \n"; + execute_sql_query($requete1); + } + } + } + + + ($net_dhcp,$net_mail_in,$net_mail_out,$net_spam,$net_virus)=(0,0,0,0,0); foreach my $nom (@logs) { @@ -631,7 +675,7 @@ sub parse_logs { if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName afpd\[(\d+)\]: login (\w+) \(uid \d+/o) { #$1: date $2:pid $3:login my $debut=mkmysqldate($1); - #pourquoi cette bidouille sur la date ?? + #pourquoi cette bidouille sur la date ?? #pour retrouver la bonne cnx=>pid et la date du open session #il doit avoir eu lieu au plus 10sec avant le login execute_sql_query("UPDATE afp SET login='$3' where pid_afpd=$2 and debut > '$debut' - interval 10 second"); @@ -665,7 +709,7 @@ sub parse_logs { #Jul 14 12:49:58 sas pppd[1878]: rcvd [IPCP ConfAck id=0x2 ] #Match: date hostname pppd[pid]: rcvd [IPCP ConfAck id=0xxx? ] #if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pppd\[(\d+)\]: rcvd \[IPCP ConfAck id=0x\w+ \]/o) - if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pppd\[(\d+)\]: local IP address (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { + if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pppd\[(\d+)\]: rcvd \[IPCP ConfAck id=0x\w+ \]/o) { #$1: date $2:pid $3.$4.$5.$6:ip my $date=mkmysqldate($1); my $ip=ipdot2ipnum($3,$4,$5,$6); @@ -674,65 +718,107 @@ sub parse_logs { } #PPPOE ip peer - #Jul 14 12:49:58 sas pppd[1878]: sent [IPCP ConfAck id=0x1 ] + #Jul 14 12:49:58 sas pppd[1878]: sent [IPCP ConfAck id=0x1 ] #Match: date hostname pppd[pid]: sent [IPCP ConfAck id=0xxx? ] #if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pppd\[(\d+)\]: sent \[IPCP ConfAck id=0x\w+ \]/o) if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pppd\[(\d+)\]: remote IP address (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { #$1: date $2:pid $3.$4.$5.$6:ip my $date=mkmysqldate($1); my $ip=ipdot2ipnum($3,$4,$5,$6); - execute_sql_query("UPDATE pppoe SET peer='$ip' where pid_pppd=$2 and debut > '$date' - interval 5 second"); + #faut faire un update, mais soit dans pppoe, soit dans vpn + my $reslt=execute_sql_query("SELECT * FROM pppoe WHERE pid_pppd='$2' ORDER BY debut DESC LIMIT 1"); + my $requete="UPDATE "; + #si on a trouve une ligne ==> update dans pppoe + if ($reslt != "0E0") { $requete.="pppoe SET peer='$ip' where pid_pppd=$2 and debut > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1";} + #sinon c une fin de cnx vpn; on fait un guess que deux connexions vpn ont pas eu lieu dans les memes 5 secondes... + else { $requete.="vpn SET vpn_clt='$ip' where pid_pppd=$2 and debut > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1";} + # $requete.="SET peer='$ip' where pid_pppd=$2 and debut > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1"; + execute_sql_query($requete); next; } - #VPN ip vpn_srv & pid_pptpd - #Jun 25 15:43:31 test pptpd[636]: CTRL: local address = 192.168.2.1 - if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL: local address = (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { - #$1: date $2:pid $3.$4.$5.$6:ip - my $date=mkmysqldate($1); - my $ip=ipdot2ipnum($3,$4,$5,$6); - execute_sql_query("INSERT INTO vpn VALUES ('$date',null,null,null,null,$ip,null,null,null,$2,null)"); - next; - } + if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pppd\[(\d+)\]: local IP address (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { + #$1: date $2:pid $3.$4.$5.$6:ip + my $date=mkmysqldate($1); + my $ip=ipdot2ipnum($3,$4,$5,$6); + #faut faire un update, mais soit dans pppoe, soit dans vpn + my $reslt=execute_sql_query("SELECT * FROM vpn WHERE debut > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1"); + my $requete="UPDATE "; + #si on a trouve une ligne ==> update dans vpn + my $smedb=esmith::ConfigDB->open; + my $localif = $smedb->get("LocalIP")->prop('type'); + print "IP IF local $localif - IP $3.$4.$5.$6 \n"; + if ($reslt != "0E0" && "$3.$4.$5.$6" eq $localif ) + { $requete.="vpn SET vpn_srv='$ip', pid_pppd=$2 WHERE pid_pppd IS NULL and debut > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1"; + execute_sql_query($requete);} + next; + } - #VPN ip vpn_clt - #Jun 25 15:43:31 test pptpd[636]: CTRL: remote address = 192.168.2.250 - if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL: remote address = (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { - #$1: date $2:pid $3.$4.$5.$6:ip - my $date=mkmysqldate($1); - my $ip=ipdot2ipnum($3,$4,$5,$6); - execute_sql_query("UPDATE vpn SET vpn_clt=$ip where pid_pptpd=$2 and debut > '$date' - interval 5 second"); - next; - } - #VPN ip client - #Jun 25 15:43:31 test pptpd[636]: CTRL: Client 192.168.185.66 control connection started - if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL: Client (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}) control connection started/o) { - #$1: date $2:pid $3.$4.$5.$6:ip - my $date=mkmysqldate($1); - my $ip=ipdot2ipnum($3,$4,$5,$6); - execute_sql_query("UPDATE vpn SET ip=$ip where pid_pptpd=$2 and debut > '$date' - interval 5 second"); - next; - } - #VPN checkip pid_pppd - #Jun 25 15:43:33 test pptpd[637]: CTRL (PPPD Launcher): local address = 192.168.2.1 - if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL \(PPPD Launcher\): local address = (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { - #$1: date $2:pid !!! PPPD !!! $3.$4.$5.$6:ip + #VPN ip vpn_srv & pid_pptpd + #old # Jun 25 15:43:31 test pptpd[636]: CTRL: local address = 192.168.2.1 + #old: #if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL: local address = (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { + #Dec 15 15:59:13 atlas pptpd[19918]: CTRL: Client 24.14.190.157 control connection started + #Dec 15 15:59:13 atlas pptpd[19918]: CTRL: Starting call (launching pppd, opening GRE) + #Dec 15 15:59:13 atlas pppd[19919]: Plugin radius.so loaded. + #Dec 15 15:59:13 atlas pppd[19919]: RADIUS plugin initialized. + #Dec 15 15:59:13 atlas pppd[19919]: pppd 2.4.4 started by root, uid 0 + #Dec 15 15:59:13 atlas pppd[19919]: Using interface ppp1 + #Dec 15 15:59:13 atlas pppd[19919]: Connect: ppp1 <--> /dev/pts/5 + #Dec 15 15:59:17 atlas pppd[19919]: MPPE 128-bit stateless compression enabled + #Dec 15 15:59:18 atlas pppd[19919]: found interface br0 for proxy arp + #Dec 15 15:59:18 atlas pppd[19919]: local IP address 192.168.12.1 + #Dec 15 15:59:18 atlas pppd[19919]: remote IP address 192.168.12.250 + #Dec 15 15:59:18 atlas esmith::event[19939]: Processing event: ip-up.pptpd ppp1 /dev/pts/5 460800 192.168.12.1 192.168.12.250 pptpd + if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL: Client (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}) control connection started/o) { + #$1: date $2:pid $3.$4.$5.$6:ip my $date=mkmysqldate($1); my $ip=ipdot2ipnum($3,$4,$5,$6); - execute_sql_query("UPDATE vpn SET pid_pppd=$2 where vpn_srv=$ip and debut > '$date' - interval 5 second"); + execute_sql_query("INSERT INTO vpn VALUES ('$date',null,null,$ip,null,0,null,null,null,$2,null)"); next; } - #Deprecated !!! Dans sme7, l'auth se fait via Radius, qui ne loggue rien par défaut => pas moyen de connaitre simplement le login - #VPN login - #Jun 25 15:43:36 test pppd[637]: CHAP peer authentication succeeded for rv - if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pppd\[(\d+)\]: CHAP peer authentication succeeded for ([0-9a-z-]+)/o) { - #$1: date $2:pid $3:login - my $date=mkmysqldate($1); - execute_sql_query("UPDATE vpn SET login='$3' where pid_pppd=$2 and debut > '$date' - interval 20 second"); - next; - } + ##VPN ip vpn_clt + ##Jun 25 15:43:31 test pptpd[636]: CTRL: remote address = 192.168.2.250 + ##Dec 15 15:27:33 atlas pppd[15747]: remote IP address 192.168.12.250 + ##if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL: remote address = (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { + # #$1: date $2:pid $3.$4.$5.$6:ip + # my $date=mkmysqldate($1); + # my $ip=ipdot2ipnum($3,$4,$5,$6); + # execute_sql_query("UPDATE vpn SET vpn_clt=$ip where pid_pptpd=$2 and debut > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1"); + # next; + #} + + ##VPN ip client + ##Jun 25 15:43:31 test pptpd[636]: CTRL: Client 192.168.185.66 control connection started + #if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL: Client (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}) control connection started/o) { + # #$1: date $2:pid $3.$4.$5.$6:ip + # my $date=mkmysqldate($1); + # my $ip=ipdot2ipnum($3,$4,$5,$6); + # execute_sql_query("UPDATE vpn SET ip=$ip where pid_pptpd=$2 and debut > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1"); + # next; + #} + + ##VPN checkip pid_pppd + ##Jun 25 15:43:33 test pptpd[637]: CTRL (PPPD Launcher): local address = 192.168.2.1 + ## does not exist anymore + #if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pptpd\[(\d+)\]: CTRL \(PPPD Launcher\): local address = (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/o) { + # #$1: date $2:pid !!! PPPD !!! $3.$4.$5.$6:ip + # my $date=mkmysqldate($1); + # my $ip=ipdot2ipnum($3,$4,$5,$6); + # execute_sql_query("UPDATE vpn SET pid_pppd=$2 where vpn_srv=$ip and debut > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1"); + # next; + #} + + ##Deprecated !!! Dans sme7, l'auth se fait via Radius, qui ne loggue rien par défaut => pas moyen de connaitre simplement le login + ##VPN login + ##Jun 25 15:43:36 test pppd[637]: CHAP peer authentication succeeded for rv + #if($l =~ /(\w{3}\s{1,2}\d{1,2} [0-9:]{8}) $SystemName pppd\[(\d+)\]: CHAP peer authentication succeeded for ([0-9a-z-]+)/o) { + # #$1: date $2:pid $3:login + # my $date=mkmysqldate($1); + # execute_sql_query("UPDATE vpn SET login='$3' where pid_pppd=$2 and debut > '$date' - interval 20 second ORDER BY debut DESC LIMIT 1"); + # next; + #} #PPPOE && VPN !!! temps de connexion #Jul 15 12:49:58 sas pppd[1878]: Connect time 1440.0 minutes. @@ -746,7 +832,7 @@ sub parse_logs { if ($reslt != "0E0") { $requete.="pppoe ";} #sinon c une fin de cnx vpn else { $requete.="vpn ";} - $requete.="SET duree=sec_to_time($3*60), fin='$date' where pid_pppd=$2"; + $requete.="SET duree=sec_to_time($3*60), fin='$date' where pid_pppd=$2 ORDER BY debut DESC LIMIT 1"; execute_sql_query($requete); next; } @@ -764,8 +850,8 @@ sub parse_logs { if ($reslt != "0E0") { $requete.="pppoe ";} #sinon c une fin de cnx vpn else { $requete.="vpn ";} - $requete.="SET volume_out=$3, volume_in=$4 where pid_pppd=$2 and fin > '$date' - interval 5 second"; - execute_sql_query($requete); + $requete.="SET volume_out=$3, volume_in=$4 where pid_pppd=$2 and fin > '$date' - interval 5 second ORDER BY debut DESC LIMIT 1"; + next; } } @@ -773,6 +859,8 @@ sub parse_logs { # libération du fichier de log courant, enregistrement de la position tell_log("$logdir$nom", $fh); } + + deconnectBD(); }