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();
}