ispadmin.proxy
index
/usr/lib/python2.2/site-packages/ispadmin/proxy.py

ispadmin - Suite Administracion Correo/Web/DNS
 
Gestión del proxy (squid)

 
Modules
            
ispadmin.config
ispadmin.interfaz
os
re
shlex
string
sys
ispadmin.system
types
 
Classes
            
squid_file
squirm_file
 
class squid_file
      clase que mantiene el fichero de configuración de squid en
orden, ejemplos de uso:
 
gestiona solo reglas del tipo url_regex + red sobre la
que se aplica, y solo dentro de un bloque (begin ispadmin)
y (end ispadmin) del fichero de configuración (si este bloque
no está, lo crea AL FINAL)
además hace la recarga del programa cuando hay modificaciones
y se asegura el bloqueo del fichero mediante fcntl
 
 
 
 #fichero.append( "192.168.1.0/24","*.exe$",tipo )
 #fichero.delete( "192.168.1.0/24","*.exe$",tipo )
 0 (porque no la encontró)        
 #print fichero.get( "192.168.1.0/24" )
 [   [ [255.255.255.0,192.168.1.0],"*.mp3",0 ] , ... ]
 #fichero.imprimir()
 #fichero.guardar()
 
 los tokens manejados y RECONOCIDOS como válidos (el resto darían
 error, dentro del bloque (begin isadmin) y (end ispadmin) del
 fichero de configuración, serán los siguientes ([] indica que
 es opcional):
 
 acl NOMBRE url_regex [-i] EXPRESION
 acl NOMBRE src DIRECCION[/MASCARA]
 http_access (deny|allow) LISTA_ACL_DECLARADOS_ANTES
 
   Methods defined here:
__identificador__(self)
genera un nuevo identificador a partir de self.__identificadores__
__init__(self, fichero='/etc/squid.conf')
maneja por defecto /etc/squid.conf, fichero de configuración
habitual en squid
append(self, host, url, prohibido=1, tipo='url_regex')
añade una nueva regla de tipo url_regex + red sobre la
que se aplica
delete(self, host, url, prohibido=None, tipo='url_regex')
devuelve 1 si borra algo (borra tanto si está activo
como si no lo está
 
si prohibido se especifica se borra esa concreta,
en caso contrario le da igual que esté prohibido
o permitido
esta_la_regla(self, regla)
el formato será
[ ['mascara_red','ip_o_red'], 'elem', prohibido, 'tipo' ]
prohibido = 1
permitido = 0
tipo = 'url_regex' (por defecto), 'src' ...
exists(self, host, elem=None, estado=None, tipo=None)
comprueba que no haya una regla igual,
lo más normal es llamarla con estado=None y tipo=None)
get(self, host=None, elem=None, estado=None, tipo=None)
para recuperar la global, habría que usar
como host 0.0.0.0/0.0.0.0, con None lo que hacemos
es ignorar ese campo
 
devuelve siempre una lista, con los elementos
en el formato:
     [ host,elem,1|0,tipo ]
guardar(self)
guardar implica también recargar la configuración
(si se guarda algo entonces devuelve un 1)
imprimir(self, host=None, elem=None, estado=None)
muestra por pantalla la configuración que en squid
sería válida sin  argumentos, o aquella subconfiguración
concreta
save(self, array, fichero)
genera una configuración válida (sólo se puede guardar la
que es global en un fichero, ya que si juntamos varias
parciales los identificadores que genera se repiten

Data and non-method functions defined here:
__doc__ = 'clase que mantiene el fichero de configuraci\xf3n d...cess (deny|allow) LISTA_ACL_DECLARADOS_ANTES\n '
__module__ = 'ispadmin.proxy'
 
class squirm_file
      manejar el fichero de configuración /etc/squirm.patterns que
nos permite pasar por el antivirus una serie de extensiones
de archivo
 
   Methods defined here:
__init__(self, fichero='/etc/squirm.patterns')
maneja por defecto /etc/squirm.patterns, fichero de configuración
habitual del redirector squirm
append(self, extension, estado=1, excepcion=0)
añade una nueva extensión a examinar por el antivirus
extension = 3caracteres
estado    = 0|1 (0=desactivado y no será escaneado,
                 1=activado y será escaneado)
excepcion = 0|1 (0 es una extensión, 1 es una excepción y lo
                 añade por tanto en la tabla de excepciones,
                 estado sería 0|1 también, pero extensión
                 sería la url que no pasaría por el antivirus
delete(self, extension, excepcion=0)
guardar(self)

Data and non-method functions defined here:
__doc__ = 'manejar el fichero de configuraci\xf3n /etc/squirm....s una serie de extensiones\n de archivo\n '
__module__ = 'ispadmin.proxy'
 
Functions
            
convertir_a_red(mascara)
dada una máscara de red, la devuelve en formato 255.255.255.255
tanto si se introduce con /24 como si viene en este formato,
en caso de estar mal devuelve error
es_host(ip)
verifica que el valor dado es una IP correcta para host o red
es_mascara(ip)
para ser una máscara de red, además exigiremos que en
los bits no haya ningún cero tras comenzar los unos:
 
111100111 -> no sería válida
111110000 -> sería válida
es_subred(host1, host2)
comprueba que host1 sea subred de host2
(y no al revés)
extrae_extension(extension)
comprueba que lo que el usuario nos dió sea una extensión
(None es devuelto en caso contrario)
extrae_ip_net(host)
extraer la ip y la máscara de red en un array en el formato
[ mascara,ip ]
(la máscara se pone antes para permitir una ordenación
 que haga que primero se apliquen las reglas concretas
 de un equipo y por encima las de la red)
 
 ejemplos:
 #print extrae_ip_net( "192.168.1.0/255.255.224.0" )
 [ '255.255.224.0','192.168.1.0' ]        
 #print extrae_ip_net( "192./224." )
 [ '224.0.0.0','192.0.0.0' ]
 #print extrae_ip_net( "192.168/28." )
 [ '255.255.255.0','192.168.0.0' ]
extrae_url(url)
comprueba que lo que el usuario nos dió sea una url
(None es devuelto en caso contrario)
formatea(regla, separador=None)
devuelve un string válido para ser mostrado por pantalla o bien
enviado a un fichero
 
si no se indica separador el resultado es formateado por columnas,
en caso contrario el separador es usado para separar las diferentes
columnas
 
la regla se compone de:
[ ['mascara_red','ip_o_red'], 'elem_prohibido', activo_o_no,tipo  ]
y hemos de generar:
extension;192.168.1.0;255.255.255.0;mp3;bloqueada
formatea_extension(extension)
dada una extension por el usuario, la formatea para que sea
aceptada en el fichero, y de paso verifica que sea una extensión
válida
formatea_url(url)
a menos que ya contengan la palabra http:// o contengan caract
especiales (*,?) se añade el ^http:// al principio para poderla
insertar en el archivo (y para poderla borrar igual, ya que el
usuario nos la dará sin http:// y en el archivo está con tal)
get_red(host)
de una tupla [255.255.0.0,192.168.1.1] se queda únicamente con la
parte de red (en este caso sería 192.168)
misma_red(host1, host2)
host1 y host2 son tuplas del tipo [255.255.255.255,192.168.1.1]
y se comparan a ver si están en la misma red o no
 
Data
             __antimascara__ = {'0': 0, '128': 1, '192': 2, '224': 3, '240': 4, '248': 5, '252': 6, '254': 7}
__extension__ = <_sre.SRE_Pattern object>
__file__ = '/usr/lib/python2.2/site-packages/ispadmin/proxy.pyc'
__ipv4re__ = <_sre.SRE_Pattern object>
__mascara__ = {0: '0', 1: '128', 2: '192', 3: '224', 4: '240', 5: '248', 6: '252', 7: '254'}
__name__ = 'ispadmin.proxy'
__url__ = <_sre.SRE_Pattern object>