Squid3 intenta agregar un tipo_acl_externo personalizado


2

Estoy tratando de crear un acl helper externo para squid3 para (con suerte) cortar algunas líneas de configuración de mi servidor squid3 y escribí un simple script de python para ello:

#!/usr/bin/python

import sys
import logging
import time


logger = logging.getLogger( 'squid_auth' )
logger.setLevel( logging.DEBUG )
fh = logging.FileHandler( 'spam.log' )
fh.setLevel( logging.DEBUG )
formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' )
fh.setFormatter( formatter )
logger.addHandler( fh )


def grant ():
      sys.stdout.write( 'OK\n' )
      sys.stdout.flush()


def deny ():
      sys.stdout.write( 'ERR\n' )
      sys.stdout.flush()


while True:
      line = sys.stdin.readline().strip()
      if line:
              logger.info( line )
              grant()
      else:
              time.sleep( 1 )

y lo agregué a mi squid.conf:

external_acl_type custom_acl %SRC %LOGIN %DST /etc/changemyip/squid/config/acl.py
acl CustomAcl external custom_acl
http_access allow CustomAcl

La ruta al script es correcta (puedo ejecutarlo en shell), el programa tiene derechos de ejecución y todo, pero, cuando vuelvo a cargar el calamar, aparece este error unas 5-6 veces y luego el calamar se bloquea:

Aug 17 14:08:52 server7 (squid): The custom_acl helpers are crashing too rapidly, need help!
Aug 17 14:08:52 server7 squid[28233]: Squid Parent: child process 28290 exited with status 1
Aug 17 14:08:52 server7 squid[28233]: Exiting due to repeated, frequent failures

Como puede ver, el script solo se imprime OK\nen el stdout para otorgar a todos. Ni siquiera he comenzado a implementar ninguna lógica.

Probado con la versión de calamar: 3.1.19


¿Has probado sin \ n (CR / LF)?
GioMac

Probado y no funciona.
Romeo Mihalcea

intenta eliminar% LOGIN, solo prueba
GioMac

debug_options ALL
GioMac

Respuestas:


2

Tuve un problema similar. Logré solucionarlo cambiando la propiedad del script al usuario de squid y moviendo el archivo desde mi directorio de inicio a algún lugar del sistema de archivos raíz.


0

Todavía tenía el mismo problema incluso después de seguir las instrucciones útiles de @tyrells.

¿La solución?

Necesitamos hacer que el script de Python sea ejecutable ejecutando el siguiente comando.

sudo chmod u+x /path/to/external-acl.py

Para resumir, aquí hay instrucciones paso a paso.

  1. Mueva su script a algún lugar del sistema de archivos raíz. Para mi fue/usr/share/acl.py
  2. Repara los permisos. sudo chown proxy:proxy /usr/share/acl.py
  3. Haga que el script sea ejecutable. sudo chmod u+x /usr/share/acl.py
  4. Reiniciar los calamares. sudo service squid restart
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.