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