87 lines
1.7 KiB
Perl
Executable File
87 lines
1.7 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
$|=1;
|
|
|
|
use DBI;
|
|
use FindBin qw($Bin);
|
|
|
|
require "$Bin/../script/conntrack.conf";
|
|
|
|
local $SIG{ALRM} = sub {
|
|
my $time = localtime; # scalar context
|
|
# print LOG "$$ - $time - Exit\n";
|
|
exit 1;
|
|
};
|
|
|
|
srand($$);
|
|
$timeout = 60 * (int(rand(5))+61);
|
|
$limit = 50;
|
|
|
|
my $dbmysql = DBI->connect("DBI:mysql:;host=$DBhost", $DBuser, $DBpass) or die ($DBI::errstr);
|
|
$sts = $dbmysql->prepare("use $DBname");
|
|
$sts->execute ();
|
|
|
|
open LOG, ">> /usr/local/mybin/proxy/squid_acl/squid_pool.log";
|
|
LOG->autoflush(1);
|
|
# pass = PASSWORD('".$param[1]."')
|
|
|
|
alarm $timeout;
|
|
while($limit) {
|
|
my $query = "";
|
|
my $input = <>;
|
|
print LOG "AUTH -- $input\n";
|
|
chop $input;
|
|
|
|
my @param = split / /, $input;
|
|
|
|
if ($param[0] ne "") {
|
|
$query = " SELECT
|
|
id,
|
|
primo,
|
|
(tempo*3600)-time_to_sec(timediff(ultimo, primo)) AS rimasto,
|
|
tempo
|
|
FROM
|
|
proxy_utenti
|
|
WHERE
|
|
user = '".$param[0]."'
|
|
AND
|
|
pass = ENCRYPT('".$param[1]."',LEFT(pass, 2))
|
|
AND
|
|
attivo = 1";
|
|
$limit--;
|
|
alarm $timeout;
|
|
} else {
|
|
$limit = 0;
|
|
}
|
|
|
|
next if ($query eq "");
|
|
|
|
$sts = $dbmysql->prepare($query);
|
|
$sts->execute ();
|
|
|
|
if ($ref = $sts->fetchrow_hashref ) {
|
|
my $id = $$ref{'id'};
|
|
my $primo = $$ref{'primo'};
|
|
my $rimasto = $$ref{'rimasto'};
|
|
my $tempo = $$ref{'tempo'};
|
|
|
|
my $agg = "";
|
|
my $query = "";
|
|
if (($tempo > 0) && ($rimasto < 0)){
|
|
$agg = "attivo = 0,";
|
|
}
|
|
|
|
if (!$primo) {
|
|
$query = "UPDATE proxy_utenti SET $agg primo = NOW(), ultimo = NOW() WHERE id = $id";
|
|
} else {
|
|
$query = "UPDATE proxy_utenti SET $agg ultimo = NOW() WHERE id = $id";
|
|
}
|
|
# print LOG "$rimasto -- $query\n";
|
|
$sts = $dbmysql->prepare($query);
|
|
$sts->execute ();
|
|
print "OK\n";
|
|
} else {
|
|
print "ERR\n";
|
|
}
|
|
}
|
|
exit;
|