OK, Squid ademas de las ACLs que usa como bloqueo por IP, Macs, contenido, etc. Tambien incluye una directriz para poder llamar ademas tus propios desarrrollos, scripts, y proporcionar un tratamiento mas personalizado a los usuarios.
external_acl_type, asi como se conoce se llama de la siguiente manera:
external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]
Ahora veamos como funciona.Suponiendo que queremos mostrar informacion digamos terminos y condiciones o publicad a los usuarios por cierto tiempo como es el caso para lo que la use, En el archivo "/etc/squid/squid.conf" configuramos los siguientes parametros.
external_acl_type banned ttl=60 concurrency=100 %SRC /etc/squid/ips.pl
acl anyusuarios external banned
http_access deny !anyusuarios
deny_info ip:amostrar/banned.html anyusuarios
La directriz ejecuta por 60 segundos(ttl) un maximo de 100 conexiones(concurrency) y envia la ip (%SRC) al script "/etc/squid/ips.pl". El script recibe la IP en fomrato estandard de C STDIN y dentro de el usted puede hacer o usar practicamente, cualquier lenguaje. Ahora lo importante de el script es que debe devolver a Squid, dos valores "OK" o "ERR", debemos devolver mediante una STDOUT. En mi caso use perl :
#!/usr/bin/perl
$in = <STDIN>;
chomp($in);
@tmp=split(" ",$in);
$ip=$tmp[1];
..,,hacer algo con la IP, consultar lo que sea etc.
if($result ne "")
{
print ("ERR\n");
}
else
{
print ("OK\n");
}
Si Squid recibe ERR, ejecuta deny_info que es una IP a donde redireccionar, sino simplemente deja pasar la peticion. PUedes hacer muchas cosas ya que expande tus posibilidades al usar squid.
Espero les sirva, Saludos !!
Comentarios
Publicar un comentario