Provant el capo, que es un redirector per al Squid, he vist que no acabava de funcionar del tot bé. En comptes de retocar el codi existent, he decidit fer un redirector nou, que no s'ahgi de compilar, amb Perl i que sigui més fàcil. Al menys m'ho sembla a mi :-)
Aquest és l'script:
#!/usr/bin/perl
#
# startpage.pl (Squid Proxy Redirector)
# joan.llopart@guifi.net 03-2008
# Redirects proxy user to a defined startpage every certain time.
use strict;
#
# --- CONFIG ---
#
# Startpage will be shown every ... (time in seconds)
my $ref_time = 3600; # 1 hour
#
# Redirection to this webpage
my $startp = "302:http://guifi.net";
#
# Directory to save user/timestamp DB
# (squid owner needs write permissions in this directory)
my $dat_dir = "/tmp";
#
# Track users by IP or username. Username only effective if proxy uses
# some kind of authentication.
my $match = "user"; # user / IP
# Autoflush STDOUT on each printed character
local $| = 1;
$SIG{INT} = sub { die "Bye!"; };
while ( 1 ) {
# Get stuff from squid
my $buff_in = <>;
chomp( $buff_in );
my ( $url, $src_add, $ident, $method) = split( / /, $buff_in );
# Quits if squid does
if( !$url || !$src_add || !$ident || !$method ) { die("Bye!"); };
# Match by username or IP
my $id = ($match eq "user") ? $ident : $src_add;
# Check user's timestamp
open(DATA, "<$dat_dir/startpage.dat");
my $newdat='';
# (flag1) 0 = new user / 1 = timestamp OK / 2 = update timestamp
my $flag1=0;
while ( my $line=<DATA> ) {
chomp($line);
my( $user, $ltime ) = split( /:/, $line );
if( $user eq $id ) {
$flag1=1;
if( ($ltime + $ref_time) < time() ) {
$flag1=2;
$ltime=time();
}
}
$newdat.="$user:$ltime\n";
}
close(DATA);
# If new user or user timestamp changed, update DB
if( $flag1!=1 ) {
# New user? add it ...
if( !$flag1 ) { $newdat.="$id:".time()."\n"; }
open(DATA, ">$dat_dir/startpage.dat");
print DATA $newdat;
close(DATA);
}
# Show startpage if necessary
if( $flag1!=1 ) {
print $startp." ".$src_add." ".$ident." ".$method."\n";
} else {
print $url." ".$src_add." ".$ident." ".$method."\n";
}
} # while( 1 )
El poseu en el lloc que us agradi mes, en aquest l'exemple l'he guardat a /home/joan/scripts, amb el nom startpage.pl. Editeu el /etc/squid/squid.conf, busqueu on hi ha el Tag de url_rewrite_program i hi afegiu:
url_rewrite_program /home/joan/scripts/startpage.pl
Per a configurar el redirector startpage.pl, l'obriu amb l'editor i podeu canviar:
Recarregeu l'squid i llestos. No l'he pogut provar en un proxy amb molta càrrega, solament en un de proves, però crec que ha de funcionar sense cap mena de problema.
Comentaris
Gracies
Molt bo el com es fa jo el tinc funcionant i va molt be
un pregunta per variar com es pot fer per que redirigeixi cada user o ip a un lloc difrent?
be moltes gracies
S'ha de modificar l'script de
S'ha de modificar l'script de manera que tinguis una llista amb els nom d'ususuari i a quina web els vols redirigir. I que quan arribi una solicitud a l'script, comprovi el nom d'usuari en a aquesta llista i el redirigeixi, si cal, a la URL definida.