WelcomeRedirector.pl
per Victor Carceler
—
darrera modificació
2020-03-25T15:40:45+01:00
WelcomeRedirector.pl
— 2.1 KB
Continguts del fitxer
#!/usr/bin/perl
#
# WelcomeRedirector v0.2 (por Victor Carceler)
#
# Este script es software libre GPL
#
# Este script es un redirector para Squid (http://www.squid-cache.org/Doc/FAQ/FAQ-15.html)
# Cuando Squid recibe una petición, se la pasa a WelcomeRedirector y el script retorna
# la URL que Squid debe retornar al cliente.
#
# Si es la primera vez que el cliente realiza la petición, o hace más de TIMEOUT segundos
# desde la última petición, el cliente es dirigido a URL. En caso contrario el cliente
# obtiene el documento que pidió.
# NO_REDIRECT_PREFIX indica un prefijo que si se encuentra en la dirección del cliente
# evitará que sea redirigido (aunque sea la primera conexión).
#
# Para que Squid utilice este software debe configurar la directiva redirect_program
# y redirect_children (con valor 1) en squid.conf
my $TIMEOUT = 3600;
my $URL = "http://iespuigcastellar.xeill.net/activitats/xeill";
my $NO_REDIRECT_PREFIX = "192.168";
$|=1;
my %registro;
while (<>) {
@X = split;
$url = $X[0];
$address = $X[1];
$ident = $X[2];
$method = $X[3];
#print "Petición: $url -> $address -> $ident -> $method\n";
my $registrado = 0;
# Sólo redirigimos peticiones que no coinciden con NO_REDIRECT_PREFIX
if ($address !~ /$NO_REDIRECT_PREFIX/) {
# Tenemos $address registrada ?
my @ips = keys %registro;
foreach(@ips) {
if ($_ == $address) {
if ((time - $registro{$address}) >= $TIMEOUT) {delete $registro{$address};
} else {
$registrado = 1;
#print "Tengo la ip registrada !!!";
}
}
}
} else {
$registrado = 1; # Nos saltamos la redirección
}
if (! $registrado) {
$url = $URL;
print "302:$url\n";
$registro{$address}=time;
} else {
print "$url\n";
}
}
