#
$domain='company.com';
$mysql='/usr/local/mysql/bin/mysql';
-$tmpfile='/tmp/mysql.input';
+$tmpfile='/var/tmp/mysql.input';
#
#
$realm_del = '@' if ($realm_del eq '');
$realm_for = 'suffix' if ($realm_for eq '');
$pass = ($sql_password ne '') ? "-p$sql_password" : '';
+die "SQL server not defined\n" if ($sql_server eq '');
$opt = "-O connect_timeout=$sql_timeout" if ($sql_timeout);
-@extras = (split /\s+/,$sql_extra) if ($sql_extra ne '');
+@servers = (split /\s+/,$sql_extra) if ($sql_extra ne '');
+unshift @servers, $sql_server;
open LOG, "<$file"
or die "Could not open file $file\n";
($year,$mon,$mday,$hour,$min,$sec)=UnixDate($date2,'%Y','%m','%d','%H','%M','%S');
}
$time = "$year-$mon-$mday $hour:$min:$sec";
- if (/\[([\w\-]+?)\]\s+\(from (.+?)\)/){
+ if (/\[([\w\-\.]+?)\]\s+\(from (.+?)\)/){
$user = $1;
($nas,$port,$caller) = (split /\s+/,$2)[1,3,5];
}
- elsif (/\[([\w\-]+?)\/.+?\]\s+\(from (.+?)\)/){
+ elsif (/\[([\w\-\.]+?)\/.+?\]\s+\(from (.+?)\)/){
$user = $1;
($nas,$port,$caller) = (split /\s+/,$2)[1,3,5];
}
$caller='' if (!defined($caller));
- $user =~s/[^\w\-\.]//g;
+ $user =~s/[^\w\-\.\d]//g;
$nas =~s/[^\w\.]//g;
if ($nas ne 'localhost' && $nas !~ /\.$domain$/){
$nas .= ".$domain";
$user = ($realm_for eq 'suffix') ? $one : $two;
}
}
- open TMP, ">$tmpfile"
- or die "Could not open temporary file\n";
- print TMP "INSERT INTO $sql_accounting_table (UserName,NASIPAddress,NASPortId,AcctStartTime,AcctStopTime,AcctSessionTime,AcctInputOctets,AcctOutputOctets,CallingStationId,AcctTerminateCause) VALUES ('$user','$addr','$port','$time','$time','0','0','0','$caller','$cause');";
- close TMP;
- `$mysql -h$sql_server $opt -u$sql_username $pass $sql_database <$tmpfile`;
- foreach $extra (@extras){
- `$mysql -h$extra $opt -u$sql_username $pass $sql_database <$tmpfile`;
+ foreach $server (@servers){
+ unlink "$tmpfile.$server" if ($delete{$server});
+ open TMP, ">>$tmpfile.$server"
+ or die "Could not open temporary file\n";
+ print TMP "INSERT INTO $sql_accounting_table (UserName,NASIPAddress,NASPortId,AcctStartTime,AcctStopTime,AcctSessionTime,AcctInputOctets,AcctOutputOctets,CallingStationId,AcctTerminateCause) VALUES ('$user','$addr','$port','$time','$time','0','0','0','$caller','$cause');";
+ close TMP;
+ `$mysql -h$server $opt -u$sql_username $pass $sql_database <$tmpfile.$server`;
+ $exit = $? >> 8;
+ $delete{$server} = ($exit == 0) ? 1 : 0;
+ print "ERROR: SQL query failed for host $server\n" if ($exit != 0);
}
}
}