WelcomeRedirector.pl
per Victor Carceler
—
darrera modificació
2020-03-25T16:35:33+02:00
Pequeño script que al utilizarse con Squid permite que la primera petición de cada máquina se redirija a determinada URL. Se utiliza en la XEiLL para mostrar una página de información en la primera visita de cada cliente.
Necesita un intérprete de Perl para funcionar.
WelcomeRedirector.pl
#!/usr/bin/perl
#
# WelcomeRedirector v0.1 (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ó.
#
# 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";
$|=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";
# Tenemos $address registrada ?
my @ips = keys %registro;
my $registrado = 0;
foreach(@ips) {
if ($_ == $address) {
if ((time - $registro{$address}) >= $TIMEOUT) {delete $registro{$address};
} else {
$registrado = 1;
#print "Tengo la ip registrada !!!";
}
}
}
if (! $registrado) {
$url = $URL;
print "302:$url\n";
$registro{$address}=time;
} else {
print "$url\n";
}
}
Parámetros de configuración:
Puede editar el script y cambiar el valor de las variables:
- $TIMEOUT
- Número de segundos durante el que se considera que la máquina ya ha sido avisada. Por ejemplo, si el valor es 3600, se mostrará a cada cliente la web informativa cada hora.
- $URL
- Dirección de la web a la que se redirigirá la primera solicitud de cada cliente