Вот пример на perl'е. Я его использую немного для другой цели, чтобы трафик лимитировать, но в твоем случае впринципе легко модернизируется:
[root@gw /]# cat /etc/squid/r.pl
#!/usr/bin/perluse DBI;
use DBI::DBD;
require "/etc/squid/logger.cfg";
$| = 1;
if ($LOG) {
open LOG, ">> $red_log";
unless ($LAZY_WRITE) { select LOG; $| = 1; select STDOUT; }
}
while (<>) {
($url, $cl_ip, $ident, $method) = split;
$dbh = DBI->connect("DBI:mysql:$dbname:$dbhost:$dbport", $dbuser, $dbpass) or die "Cannot connect to DataBase";
$sth = $dbh->prepare('SELECT max_traff FROM t_dnload WHERE username=?;');
$sth->execute($ident);
$max_traff = $sth->fetchrow_array;
$sth->finish;
$sth = $dbh->prepare('SELECT total_traff FROM t_dnload WHERE username=?;');
$sth->execute($ident);
$total_traff = $sth->fetchrow_array;
$sth->finish;
if ($max_traff < $total_traff) { $url = $path_nl; }
print "$url $cl_ip $ident $method\n";
print LOG "$url $cl_ip $ident $method \n";
$dbh->disconnect;
}
close LOG if $red_log;
___________________________________________
[root@gw /]# cat /etc/squid/logger.cfg
#!/usr/bin/perl
# Base Script Variables
$my_host = "http://my.host.ru/";
$my_webpath = "sq_stat/red_page/no_limit.html";
$path_nl = $my_host.$my_webpath;
# Logger path variables
$log_path = "/var/log/squid/";
$log_file = "access.log.0";
$input_file = $log_path.$log_file;
# Redirector path variables
$red_log = $log_path."redirector.log";
$LAZY_WRITE = 1;
# MySQL configuration
$dbname = 'squidlogs';
$dbhost = 'localhost';
$dbport = '3306';
$dbuser = 'sqstat';
$dbpass = 'sqstat';
# SQL Commands for update table t_dnload.
$sel_username = "SELECT username FROM t_dnload;";
$get_traffics = "SELECT SUM(size) FROM logs WHERE username=?;";
$upd_tot_traf = "UPDATE t_dnload SET total_traff=? WHERE username=?;";
_____________________________
mysql> describe t_dnload;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| username | varchar(20) | NO | | | |
| max_traff | bigint(20) | NO | | 0 | |
| total_traff | bigint(20) | NO | | 0 | |
+-------------+-------------+------+-----+---------+-------+