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"; } }