Los “ayudadores” del calamar

El título les parecerá que este entrada sería una mera perdida de tiempo, que sería un off-topic total o una entrada de la GreenPeace, pero no es así es que quería ser nacionalista y escribir en Español (Squid helpers).

Hoy en día necesité  autenticar un Squid-cache contra el Active Directory de Windows, y como a la primera no me funcionó el helper LDAP que viene por defecto escribí un pequeño script en python que funciona, capaz a alguien le sea útil.

#!/usr/bin/env python  

import ldap, sys
from syslog import *

LDAP_SERVER='ldap://' + sys.argv[1]
try:
    ldap_client = ldap.initialize(LDAP_SERVER)
except:
    syslog(LOG_ERR,"Couldn't connect to the LDAP")
    sys.exit()

while (1):
    try:
        (user,passwd) = sys.stdin.readline().strip().split(" ")
        ldap_client.simple_bind_s(user,passwd)
        syslog(LOG_INFO,"%s login" % user)
        # Login success
        print "OK"
    except:
        syslog(LOG_INFO,"%s login failed" % user)
        # Sorry, an error
        print "ERR"
        sys.stdout.flush() # Requerido en algunas distros
ldap_client.unbind()

Es un simple script como lo ven, puede estar escrito en cualquier lenguaje (que tenga stdin y stdout) como PHP, C, Ruby, Haskell, Bash, pero elegí python para mostrar que tambíen hablo otro lenguajes (aparte de PHP y C). Tambíen pueden autenticar contra cualqueir cosa (ejemplo contra una DB como hacen acá) y por ejemplo asignar usuario por tiempos. Por último, para configurar el helper (asumiendo que el 192.168.1.1 es el servidor de ActiveDirectory):

auth_param basic program /path/to/login.py 192.168.1.1

# Aquí vi que algunos muggles que ponian 20, es muy alto, y no vale la pena
# a no ser que se tenga miles de usuarios.
auth_param basic children 5 

auth_param basic realm Type your password
# tiempo que será valido el login, para no hacer
# overhead tendría que ser un tiempo razonable
auth_param basic credentialsttl 5 minutes

Espero que mis días como sysadm lleguen a su fin, extraño los días de programar para vivir, no es lo mismo que pase a ser solo un hobbie.

8 Comments

  1. o_O mira le vo al python…!!!!

    La verdad ni las mas minima idea deq ace…. pero bue.. algo bueno me imagino…

  2. Samuel Giubi says:

    Buenas Cesar!,

    Saludos como siempre.

    Realmente está interesante la propuesta, es innovadora principalmente, pero como te mencionaba ayer en el chat, realmente fue mas por elección tuya hacerlo asi y me parece genial. Podemos con squid-cache autentificarnos a un A.D. sin muchas lineas ( 2 como mucho ) acompañado de una post-configuración de un par de lineas y listo, pero bien me decias que no querías realizarlo de la manera default así que entendí.-

    En lo personal me he volcado a una “ideologia” (por qué no decirlo así) de producutividad; es decir, si para autentificar el squid-cache a un active directory necesito hacer un script de 2 lineas y luego cambiar un par de valores en el squid.conf; lo hago, testeo, pruebo, simulo algunas situaciones y si funciona y me satisface, se queda; sino a buscar otros métodos, pero la idea es lograr que funcione y en menos tiempo para producir menos gastos, etc. No me gustaría -en lo personal- basar mis soluciones en métodos que llevan más tiempo o dan más vuelta a algo que se puede solucionar fácilmente, también para poder prevenir cualquier tipo de situaciones extrañas a ocurrir; solucionarlo no sería un dolor de cabeza o al menos, no seria sumar un valor aun mas complicado que la situación en sí; mi idea es ser práctico. No estoy muy a favor por ello de las personas que no quieran usar un Framework por ejemplo, o un CMS o un Template, etc; asumiendo que simplemente hacer “lo default” es ser pobre; productividad, tiempo y calidad son las metas en un mismo concepto. Pero es mi postura en lo personal.-

    No deja de ser impresionante y me alegra conocer hoy otro método, no queda realmente del todo claro pero se entiende. Saludos Cesar!.-

    • Es un ejemplo, lo interesante es que podes escribir tu propio helper, como por ejemplo para que se autentique con PostgreSQL o SQLite, darles horarios, también podes escribir otro tipos de helpers, osea con otras acciones, a mi me gusta que es extensible sin que toques su código C.

  3. George Palksueto says:

    Wow, sabes hartísimo loco, de verdad te admiro, Python como todo un googler! Saludos desde Gye,Ec

  4. rafael says:

    Muito bom seu blog César! parabéns..

  5. Cristiano Barros says:

    Dear Cesar, could you write a post about your experience trying to work abroad? Best Regards, Cristiano Barros.

Leave a Reply