Página 1 de 1

Squid+Squish

Publicado: Mar, 18 Ene 2011, 10:40
por nelson
Principalmente los servidores de los joven club, controlan las cuotas de internet con un software llamado squish, el cual se integra a el squid, se puede controlar de dos formas, lo mismo que por horas conectados que por mb descargados.
Alguien me pudiera ayudar un poco con este tema, porque la verdad que lo e intentado mil veces y nada, si me pudieran especificar detalladamente los pasos desde cero (contando con el squid ya instalado) , se los agradeceria.
(P.D no estoy hablando de delay_pool para limitar ancho de banda, sino, crear coutas)

Re: Squid+Squish

Publicado: Sab, 12 Feb 2011, 17:27
por 103
La instalación es sencilla, puedes hacerla manual o utilizando el script que incluye el paquete. Esta es la manual:

1. Copiar en /usr/local/squish los archivos:

Código: Seleccionar todo

squish.pm
 squish.pl
 squish.cron.sh
squish.cgi
rdsquish.pm
apache-squish.conf 
2. Copiar squish.conf en /etc/squid/ (si usas squid3 entonces sería en /etc/squid3)
3. Crear el archivo squished vacío en /etc/squid (si usas squid3 entonces sería en /etc/squid3)
4. Agregar esta la línea en /etc/apache2/httpd.conf:

Código: Seleccionar todo

Include /usr/local/squish/apache-squish.conf
 
5. Agregar estas líneas en el archivo de configuración del squid:

Código: Seleccionar todo

acl SQUISHLOC dst nombre_de_tu_servidor_proxy (fqdn)
acl SQUISHED1 proxy_auth -i "/etc/squid/squished" # si usas squid3 sería /etc/squid3/squished
deny_info http://nombre_de_tu_servidor_proxy/squish/?squished& SQUISHED1
http_access allow SQUISHLOC
http_access deny SQUISHED1
6. Agregar esta línea en /etc/crontab:

Código: Seleccionar todo

*/5 * * * * root /usr/local/squish/squish.cron.sh
Esto es para que actualice cad 5 minutos la información de la actividad de los usuarios. La información se verá en http://proxy.dominio/squish

Esto lo puedes hacer automáticamente corriendo el archivo Makefile que se incluye en el paquete de instalación del squish:

Código: Seleccionar todo

make install
Notas:
- Si utitlizas squid3 entonces deberías editar el archivo /usr/local/squish/squish.pl y en especificar en varias líneas squid3 en vez de squid.
- Si usas squid3 entonces deberías editar el archivo squish.cron.sh en la línea 32:

Código: Seleccionar todo

for DIR in \
	/var/squid/logs \
	/var/log/squid \ ###cambiar esta línea por /var/log/squid3 \
	/usr/local/squid/var/logs \
	; do
	if [ -d $DIR ] ; then LOGDIR=$DIR; fi
done
El script buscará el access.log es una de esas tres ubicaciones. Por defecto en Debian y sus derivados este archivo está en /var/log/squid3.

El archivo de configuración del squish es fácil de entender:

Código: Seleccionar todo

usuario   cantidad/período

donde:
usuario: nombre de usuario o dirección IP con este formato 192\.168\.0\.1
cantidad: cantidad de Mb(Mb) u horas(h)
período: day(diario), week(semanal), month(mensual)
Ejemplos:

Código: Seleccionar todo

pepe 20h/month # el usuario pepe tiene una cuota de 20 horas en el mes
.* 60h/month # todos los usuarios tienen una cuota de 60 horas en el mes
pedro 20Mb/day # el usuario pedro tiene una cuota de 20 Mb diarios

Re: Squid+Squish

Publicado: Sab, 12 Feb 2011, 19:33
por nelson
Te la comistes mi hermano, gracias, me voy a poner manos a la obra en cuanto pueda. De verdad que gracias, no habia podido encontrar esta informacion tan detallada.

Re: Squid+Squish

Publicado: Dom, 13 Feb 2011, 13:54
por rolyston
nelson escribió:Te la comistes mi hermano, gracias, me voy a poner manos a la obra en cuanto pueda. De verdad que gracias, no habia podido encontrar esta informacion tan detallada.
Ponte en contacto también con el admin del Canal Educativo 2, Lester hace cuestión de días lo instalo con bueno resultados.
Te mando el correo a tu correo.
:mrgreen:

Re: Squid+Squish

Publicado: Lun, 14 Feb 2011, 08:32
por 103
nelson escribió:Te la comistes mi hermano, gracias, me voy a poner manos a la obra en cuanto pueda. De verdad que gracias, no habia podido encontrar esta informacion tan detallada.
Para eso estamos aquí, para ayudar.

Re: Squid+Squish

Publicado: Mar, 15 Feb 2011, 12:20
por 103
¿Funciona o no?

Re: Squid+Squish

Publicado: Sab, 12 Mar 2011, 16:18
por nelson
Me demore en contestar, pero simplemente por cuestiones de tiempo de que no habia tenido la cabeza suficientemente fresca como para ponerme para el squish, ya que me ha dado buenos dolores de cabeza.
Cuento de que con esta configuracion,, todo a la perfeccion, habia descargado 1001 manual de internet y ninguno me habia servido.
La prueba la realize en debian lenny, de trabas pequeñas que ahora recuerde, solamente estos detalles:
Tuve que editar el archivo apache-squish.conf, ya que al menos el mio dice:

Código: Seleccionar todo

Alias /squish "/home/andrewm/software/squint/squish/"

<Directory "/home/andrewm/software/squint/squish/">
        Options +ExecCGI
        AddHandler cgi-script .cgi
        DirectoryIndex squish.cgi
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

y en este caso, los archivos se encuentran en: /usr/local/squish

quedaria:

Código: Seleccionar todo


Alias /squish "/usr/local/squish/"

<Directory "/usr/local/squish/">
        Options +ExecCGI
        AddHandler cgi-script .cgi
        DirectoryIndex squish.cgi
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>
lo otro, que si tuve que tirarme a buscar en la red, me dio tremendo error la pagina http://servidor/squish/
fue algo como esto:

Código: Seleccionar todo

Software error:
Can't locate GD.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /var/www/squish/squish.cgi line 163.
BEGIN failed--compilation aborted at /var/www/squish/squish.cgi line 163.
La solucion fue instalar:
apt-get install libgd-gd2-perl
F5 a la pagina, y completo, funcionando al 100%
User 24 hours Week Month Year 24 hours Week Month Year
192.168.1.10 261.55kb 261.55kb 261.55kb 261.55kb 23:11m 23:58m 23:58m 23:58m
nelson 152.00kb 152.00kb 152.00kb 152.00kb 23:42m 23:42m 23:42m 23:42m
Total 413.55kb 413.55kb 413.55kb 413.55kb 46:53m 47:40m 47:40m 47:40m
Increible al menos con la suerte que yo tengo para esto jaja.
Ahora solo me queda cacharrearlo y aprender bien como es la cosa y ver si lo adapto a mis necesidades.
Tambien traigo unas duditas:
-por ejemplo, el tiempo que tiene el cron para actualizar, es de 5 min, yo se lo baje a 1 y funciono, es esto malo, no se recomienda o como es la cosa? (solo es cuestion de no tener que estar esperando 5 min para ver los cambios).

-lo otro,, ya veo que el squish da bastantes detalles, pero demasiadoss!! ja, eemplo, el usuario nelson que fue la prueba que hice, le puse 1mb/day, pero me muestra tambien el de la semana, el mes, el año, y lo mismo para el tiempo de conexion, alguna forma de rebajar esto?.

-Donde se guarda esta informacion?, es decir, debe de tener alguna db interna que el consulte o algo, no se archivos de texto o algo?.
Saludos y gracias por la ayuda, muy agradecido

Re: Squid+Squish

Publicado: Mar, 15 Mar 2011, 19:50
por 103
Quedaría:

Código: Seleccionar todo


Alias /squish "/usr/local/squish/"

<Directory "/usr/local/squish/">
        Options +ExecCGI
        AddHandler cgi-script .cgi
        DirectoryIndex squish.cgi
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>
Válida la aclaración, esto se me había pasado porque normalmente edito el archivo de configuración de la instalación de squish y simplemente make install, lo que pasa es que de la manera que lo expliqué es para que se entienda con profundidad.
La solucion fue instalar:
apt-get install libgd-gd2-perl
Sí, squish necesita GD para generar los gráficos para los usuarios.
Tambien traigo unas duditas:
-por ejemplo, el tiempo que tiene el cron para actualizar, es de 5 min, yo se lo baje a 1 y funciono, es esto malo, no se recomienda o como es la cosa? (solo es cuestion de no tener que estar esperando 5 min para ver los cambios).
No creo que sea necesario que cron ejecute el script cada 1 minuto, creo que esto aumentaría un poco el CPU, de todas maneras la diferencia que hay entre 5 minutos y 1 minuto es muy poca y esta información es para los usuarios, realmente no le veo caso.
-lo otro,, ya veo que el squish da bastantes detalles, pero demasiadoss!! ja, eemplo, el usuario nelson que fue la prueba que hice, le puse 1mb/day, pero me muestra tambien el de la semana, el mes, el año, y lo mismo para el tiempo de conexion, alguna forma de rebajar esto?.
Claro, si el usuario "nelson" tiene 1mb/day tuvo 1mb/day ayer y antes de ayer, etc. por lo tanto esa información es válida. Si sabes algo de Perl CGI puedes editar el archivo squid.cgi que es el que genera las estadísticas que toma de la base de datos del squish. Por ejemplo, yo tengo que solamente se vea en la tabla las horas consumidas en el mes y no los demás datos, en fin de cuentas a los usuarios solo les interesa la cantidad de horas que han consumido. Además de esto también tengo que si las horas consumidas se pasan de 48 sigan mostrándose en horas y no en días, squish muestra las horas consumidas en días por defecto cuando pasan de 48. Esto lo hice precisamente editando el archivo squish.cgi. La tabla que tengo es más menos así:

Código: Seleccionar todo

--------------------------
Usuario   Horas Consumidas
--------------------------
usuario1  ##:##h
usuario2  ##:##h
usuario3  ##:##h
usuarion  ##:##h
--------------------------
-Donde se guarda esta informacion?, es decir, debe de tener alguna db interna que el consulte o algo, no se archivos de texto o algo?.
/var/lib/squish/usdb.stor
Saludos y gracias por la ayuda, muy agradecido
Para eso estamos.

De todas maneras no estoy muy conforme con squish, pero es la herramienta más eficiente que he encontrado. Tengo pensado en hacer algo parecido al squish con menos características, pero todavía no me decido, el tiempo y los usuarios son oro.