Ejemplo n.º 1
0
def fija_horarios(usr,rango):
    	"""Modifica el archivo de configuracion con los nuevos horarios de acceso al pc"""

	xmldoc=parse_file(archivo.configuracion)
	usuarios=xmldoc.getElementsByTagName('usuarios')
	modificar=False
	for node in usuarios[0].childNodes:
		if node.nodeName.find(usr)!=-1 and usr.find(node.nodeName)!=-1:
		    modificar=True
		    break

	if modificar:
		node.setAttribute("acceso",rango)
	else:
		tab=usuarios[0].firstChild.nodeValue
		tab_hijo=tab+"\t"
		tab_salto="\n"+tab
		nodo_usuario=xmldoc.createElement(usr)
		nodo_usuario.setAttribute("acceso",rango)
		nodo_usuario.appendChild(xmldoc.createTextNode(tab_hijo))
		usuarios[0].appendChild(xmldoc.createTextNode(tab))
		usuarios[0].appendChild(nodo_usuario)
		usuarios[0].appendChild(xmldoc.createTextNode(tab_salto))

	correcto=False
	while not correcto:
	    try:
	        copia_seguridad()
		f2=open(archivo.configuracion,"w")
		f2.write(xmldoc.toxml())
		f2.close()
		correcto=True
	    except:
		correcto=False
Ejemplo n.º 2
0
def revisa_blacklists(file_conf):
    from func import parse_file

    xmldoc=parse_file(file_conf)
 
    bl=xmldoc.getElementsByTagName('blacklists')[0]
    #tab=str(bl.firstChild.nodeValue)
    tab="\n\t"
    node=bl.firstChild
    for i in range(len(bl.childNodes)):
	if node.nextSibling==None:
            bl.removeChild(node)
	    bl.appendChild(xmldoc.createTextNode(tab))
            break
        node=node.nextSibling


    correcto=False
    while not correcto:
        try:
            copia_seguridad()
            f=open(file_conf,'w')
            f.write(xmldoc.toxml())
            f.close()
            correcto=True
        except:
            correcto=False	
Ejemplo n.º 3
0
def actualiza_consumo (config):
    """ Actualiza el archivo de configuracion xml con el consumo actual de los servicios 
        Acepta como parametro una tabla con el usuario, el servicio, el campo y el tiempo.
        Campo y tiempo son listas."""
    from xml import xpath
   
    doc = parse_file(archivo.configuracion)
    
    iteraciones=len(config[0])
  
    for i in range (iteraciones):
        usuario=config[0][i]
        servicio=config[1][i]
        campo=config[2][i]
        tiempo=config[3][i]
        if xpath.Evaluate('/config/usuarios/'+usuario+'/'+servicio+'/limite_diario',doc)!=[]:
            j=0
            for c in campo:
                t=tiempo[j]
                xpath.Evaluate('/config/usuarios/'+usuario+'/'+servicio+'/'+c, doc)[0].firstChild.data=t
                j=j+1
    
    correcto=False
    while not correcto:
	try:
	    copia_seguridad() 
	    f2=open(archivo.configuracion,'w')
	    f2.write(doc.toxml())
	    f2.close()
	    correcto=True
	except:
	    correcto=False
Ejemplo n.º 4
0
def restaura_consumo(campo,valor):
    """Modifica todos los nodos de nombre 'campo' con 'valor' """
    
    xmldoc=parse_file(archivo.configuracion)
    
    items=xmldoc.getElementsByTagName(campo)
    for item in items:
        item.firstChild.data=valor
      
    correcto=False
    while not correcto:
	try:
	    copia_seguridad()
	    f2=open(archivo.configuracion,'w')
	    f2.write(xmldoc.toxml())
	    f2.close()
	    correcto=True
	except:
	    correcto=False
Ejemplo n.º 5
0
def actualiza_fecha(nueva_fecha):
    """Actualiza fecha registrada en archivo de configuracion con la actual"""
    from xml import xpath
    
    xmldoc=parse_file(archivo.configuracion)
    xpath.Evaluate('/config/demonio/fecha',xmldoc)[0].childNodes[0].data=nueva_fecha
    
    correcto=False
    while not correcto:
	try:
	    copia_seguridad()
	    f2=open(archivo.configuracion,'w')
	    f2.write(xmldoc.toxml())
	    f2.close()
	    correcto=True
	except:
	    correcto=False

    
    return
Ejemplo n.º 6
0
def nodo_usuario(usr):
    """Crea la estructura basica de un usuario en el archivo de configuracion en caso de no existir"""
    xmldoc=parse_file(archivo.configuracion)
    
    padre=xmldoc.getElementsByTagName('usuarios')
    encontrado=False
    for user in padre[0].childNodes:
	if user.nodeName.find(usr)!=-1 and usr.find(user.nodeName)!=-1:
	    encontrado=True
	    break
    
    if not encontrado:
	tab=padre[0].firstChild.nodeValue+"\t"
	tab_hijo=tab+"\t"
	nodo_usuario=xmldoc.createElement(usr)
	nodo_usuario.setAttribute("acceso",'Mo0000-2359Tu0000-2359We0000-2359Th0000-2359Fr0000-2359Sa0000-2359Su0000-2359')
	nodo_usuario.appendChild(xmldoc.createTextNode(tab))
	todo=xmldoc.createElement("todo")
	activo=xmldoc.createElement("activo")
	activo.appendChild(xmldoc.createTextNode("1"))
	todo.appendChild(xmldoc.createTextNode(tab_hijo))
	todo.appendChild(activo)
	todo.appendChild(xmldoc.createTextNode(tab_hijo))
	nodo_usuario.appendChild(todo)
	nodo_usuario.appendChild(xmldoc.createTextNode(tab))
	padre[0].appendChild(xmldoc.createTextNode(padre[0].firstChild.nodeValue))
	padre[0].appendChild(nodo_usuario)
	padre[0].appendChild(xmldoc.createTextNode("\n"+padre[0].firstChild.nodeValue))
	
	
	correcto=False
	while not correcto:
	    try:
	        copia_seguridad()
		f2=open(archivo.configuracion,"w")
		f2.write(xmldoc.toxml())
		f2.close()
		correcto=True
	    except:
		correcto=False
Ejemplo n.º 7
0
def elimina_srv(servicio):
    """Borra el sevicio que se le pase como argumento del archivo de configuracion"""
    from func import extrae_users, servicio_definido
    xmldoc=parse_file(archivo.configuracion)
    srvs=xmldoc.getElementsByTagName("servicios")
    j=False
    for i in srvs[0].childNodes:
	if i.localName == servicio:
	    srvs[0].removeChild(i)
	    if j:
		srvs[0].removeChild(j)
	j=i
    #si algun usuario tiene definida entrada para este servicio se elimina 
    users=extrae_users(archivo.mefilog)
    padre=xmldoc.getElementsByTagName('usuarios')[0]
    for user in users:
	if servicio_definido(user,servicio,archivo.mefilog):
		for nodo_user in padre.childNodes:
		    if nodo_user.nodeName.find(user)!=-1 and user.find(nodo_user.nodeName)!=-1:
			break	
		for hijo in nodo_user.childNodes:
			if hijo.nodeName.find(servicio)!=-1 and servicio.find(hijo.nodeName)!=-1:
				nodo_user.removeChild(hijo.previousSibling)
				nodo_user.removeChild(hijo)
				break
									    

    correcto=False
    while not correcto:
	try:
	    copia_seguridad()
	    f2=open(archivo.configuracion,"w")
	    f2.write(xmldoc.toxml())
	    f2.close()
	    correcto=True
	except:
	    correcto=False
Ejemplo n.º 8
0
def revisa_grupo(grupo,descrip,f_obj,archivo,DBdest):
    """Se revisa grupo en archivo de configuracion, con las respectivas entradas
    que ese grupo engloba"""

    cad_domains='domains'
    cad_urls='urls'
    cad_expressions='expressions'
    nlista={'domains':0,'urls':0,'expressions':0}
    actual={'domains':0,'urls':0,'expressions':0}
   
    #comprueba descripciones que incluye el grupo
    for content in os.listdir(DBdest):
        if cad_domains.find(content)!=-1:
            nlista['domains']=1   
        if cad_urls.find(content)!=-1:
            nlista['urls']=1   
        if cad_expressions.find(content)!=-1:
            nlista['expressions']=1   
        
    #elemento dentro del que se inserta el grupo
    bl=f_obj.getElementsByTagName('blacklists')[0]

    #tab=str(bl.firstChild.nodeValue)
    tab="\n\t"
    tab_hijo=tab+'\t'
    for node in bl.childNodes:

        actual['domains']=0
        actual['urls']=0
        actual['expressions']=0

        if node.nodeName.find('group')!=-1:
            if node.attributes['tag'].value.find(grupo)!=-1:
                for hijo in node.childNodes:

                    if hijo.nodeName.find('entry')!=-1:
                        if cad_domains.find(hijo.attributes['tag'].value)!=-1:
                            actual['domains']=1		
                        if cad_urls.find(hijo.attributes['tag'].value)!=-1:
                            actual['urls']=1		
                        if cad_expressions.find(hijo.attributes['tag'].value)!=-1:
                            actual['expressions']=1		
    
    
                if nlista['domains']==1 and actual['domains']==0:
                    dm=f_obj.createElement('entry')
                    dm.setAttribute('tag','domains')
                    node.insertBefore(f_obj.createTextNode(tab_hijo),node.lastChild)
                    node.insertBefore(dm,node.lastChild)

                if nlista['urls']==1 and actual['urls']==0:
                    ur=f_obj.createElement('entry')
                    ur.setAttribute('tag','urls')
                    node.insertBefore(f_obj.createTextNode(tab_hijo),node.lastChild)
                    node.insertBefore(ur,node.lastChild)
    
                if nlista['expressions']==1 and actual['expressions']==0:
                    ex=f_obj.createElement('entry')
                    ex.setAttribute('tag','expressions')
                    node.insertBefore(f_obj.createTextNode(tab_hijo),node.lastChild)
                    node.insertBefore(ex,node.lastChild)
    

    correcto=False
    while not correcto:
        try:
            copia_seguridad()
            f=open(archivo,'w')
            f.write(f_obj.toxml())
            f.close()
            correcto=True
        except:
            correcto=False    
Ejemplo n.º 9
0
def append_grupo(grupo,descrip,f_obj,archivo,DBdest):
    """Se agrega grupo a archivo de configuracion, con las respectivas entradas
    que ese grupo engloba"""
    import os

    cad_domains='domains'
    cad_urls='urls'
    cad_expressions='expressions'
    #comprueba descripciones que incluye el grupo
    
    
    #elemento dentro del que se inserta el grupo
    bl=f_obj.getElementsByTagName('blacklists')[0]

    #tab=str(bl.firstChild.nodeValue)
    tab="\n\t"
    n=tab.rfind('\t')
    tab_padre=tab[:n]
    tab_hijo=tab+'\t'
    tab_hijo2=tab_hijo+'\t'

    ds=f_obj.createElement('descripcion')
    ds.appendChild(f_obj.createTextNode(tab_hijo2))
    ds.appendChild(f_obj.createTextNode(descrip))
    ds.appendChild(f_obj.createTextNode(tab_hijo))
    
    dm=f_obj.createElement('entry')
    dm.setAttribute('tag','domains')
    ur=f_obj.createElement('entry')
    ur.setAttribute('tag','urls')    
    ex=f_obj.createElement('entry')
    ex.setAttribute('tag','expressions')

    gr=f_obj.createElement('group')    
    gr.appendChild(f_obj.createTextNode(tab_hijo))
    gr.appendChild(ds)

    if os.path.isfile(DBdest+"/domains"):
        gr.appendChild(f_obj.createTextNode(tab_hijo))
        gr.appendChild(dm)

    if os.path.isfile(DBdest+"/urls"):
        gr.appendChild(f_obj.createTextNode(tab_hijo))
        gr.appendChild(ur)
    if os.path.isfile(DBdest+"/expressions"):
        gr.appendChild(f_obj.createTextNode(tab_hijo))
        gr.appendChild(ex)    
        
    gr.setAttribute('local','no')
    gr.setAttribute('tag',grupo)
    gr.appendChild(f_obj.createTextNode(tab))
  
    bl.insertBefore(f_obj.createTextNode(tab),bl.lastChild)
    bl.insertBefore(gr,bl.lastChild)
    
    correcto=False
    while not correcto:
        try:
            copia_seguridad()
            f=open(archivo,'w')
            f.write(f_obj.toxml())
            f.close()
            correcto=True
        except:
            correcto=False    
Ejemplo n.º 10
0
def avanz_usr(todos,user,tabla,listas):
    """Establece los parametros de un usuario en el archivo d econfiguracion"""
    xmldoc=parse_file(archivo.configuracion)
    usuarios=xmldoc.getElementsByTagName("usuarios")
    anterior=False	
    for i in usuarios[0].childNodes:
        if i.localName == user:
            usuarios[0].removeChild(i)
	    if anterior:
		 usuarios[0].removeChild(anterior)
	anterior=i

    usr=xmldoc.createElement(user)
    
    web=False 
    if listas!=[]: 
	web=True
	include_web=True
	cad_web="web"
    
    if todos:
        usr.appendChild(xmldoc.createTextNode("\n\t\t\t"))
        tod=xmldoc.createElement("todo")
        tod.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
        act=xmldoc.createElement("activo")
        act.appendChild(xmldoc.createTextNode("1"))
        tod.appendChild(act)
        tod.appendChild(xmldoc.createTextNode("\n\t\t\t"))
        usr.appendChild(tod)
        usr.appendChild(xmldoc.createTextNode("\n\t\t"))
	
    else:
	filas=len(tabla[0])
	for i in range(filas):
	    if web:
		if cad_web.find(tabla[0][i])!=-1:
		    include_web=False
	    usr.appendChild(xmldoc.createTextNode("\n\t\t\t"))
	    srv=xmldoc.createElement(tabla[0][i])
	    srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    if tabla[8][i]!="SL":
	    	lim_d=xmldoc.createElement("limite_diario")
	    	lim_d.appendChild(xmldoc.createTextNode(tabla[1][i]))
	    	srv.appendChild(lim_d)
	    	srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    	lim_s=xmldoc.createElement("limite_semanal")
	    	lim_s.appendChild(xmldoc.createTextNode(tabla[2][i]))
	    	srv.appendChild(lim_s)
	    	srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    	lim_m=xmldoc.createElement("limite_mensual")
	    	lim_m.appendChild(xmldoc.createTextNode(tabla[3][i]))
	    	srv.appendChild(lim_m)
	    	srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    	tot_d=xmldoc.createElement("total_diario")
	    	tot_d.appendChild(xmldoc.createTextNode(tabla[4][i]))
	    	srv.appendChild(tot_d)
	    	srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    	tot_s=xmldoc.createElement("total_semanal")
	    	tot_s.appendChild(xmldoc.createTextNode(tabla[5][i]))
	    	srv.appendChild(tot_s)
	    	srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    	tot_m=xmldoc.createElement("total_mensual")
	    	tot_m.appendChild(xmldoc.createTextNode(tabla[6][i]))
	    	srv.appendChild(tot_m)
	    	srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    	prorroga=xmldoc.createElement("prorroga")
	    	prorroga.appendChild(xmldoc.createTextNode(tabla[7][i]))
	    	srv.appendChild(prorroga)
	    	srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    
	    act=xmldoc.createElement("activo")
	    act.appendChild(xmldoc.createTextNode("1"))
	    srv.appendChild(act)
	    srv.appendChild(xmldoc.createTextNode("\n\t\t\t"))
	    usr.appendChild(xmldoc.createTextNode("\n\t\t\t"))
	    usr.appendChild(srv)
	    
    if web:
 	if include_web:
	    usr.appendChild(xmldoc.createTextNode("\n\t\t\t"))
	    srv=xmldoc.createElement("web")
	    srv.appendChild(xmldoc.createTextNode("\n\t\t\t\t"))
	    act=xmldoc.createElement("activo")
	    act.appendChild(xmldoc.createTextNode("1"))
	    srv.appendChild(act)
	    srv.appendChild(xmldoc.createTextNode("\n\t\t\t"))
	    usr.appendChild(xmldoc.createTextNode("\n\t\t\t"))
	    usr.appendChild(srv)
	
     
    usr.appendChild(xmldoc.createTextNode("\n\t\t"))
    usuarios[0].appendChild(xmldoc.createTextNode("\n\t\t"))
    usuarios[0].appendChild(usr)
    usuarios[0].appendChild(xmldoc.createTextNode("\n\t"))

    correcto=False
    while not correcto:
	try:
	    copia_seguridad()
	    f2=open(archivo.configuracion,"w")
	    f2.write(xmldoc.toxml())
	    f2.close()
	    correcto=True
	except:
	    correcto=False
Ejemplo n.º 11
0
def crea_srv(servicio,puertos_tcp,puertos_udp):
    """Acepta una cadena alfanumerica y dos listas de enteros, 
	crea un servicio de nombre igual a la cadena con los puertos tcp y udop de las listas
	y lo graba en el archivo de configuracion"""
    nivel=0
    if puertos_tcp!=['']:
	j=-10
	consecutivos=[]
	cons=False
	for i in puertos_tcp:
	    if int(i)==int(j)+1:
		consecutivos.append(str(j))
		cons=True
		if i==puertos_tcp[-1]:
		    consecutivos.append(i)
	    elif cons or i == puertos_tcp[-1]:
		consecutivos.append(j)
		consecutivos.append("-")
		cons=False
	    j=i
	cc=[]
	if len(consecutivos) > 0 and consecutivos[-1]!="-":
	    consecutivos.append("-")
	items=len(consecutivos)
	if items > 2:
	    ii=0
	    cc.append(consecutivos[ii])
	    for i in range(items):
		if consecutivos[i]=="-":
		    cc.append(consecutivos[i-1])
		    ii=i+1
		    if items!=i+1:
			cc.append(consecutivos[ii])
	    unicos_tcp=[]
	    for i in puertos_tcp:
		existe=False
		for j in consecutivos:
		    if i == j:
			existe=True
		if not existe:
		    unicos_tcp.append("s-"+i)
	    items=len(cc)
	    consecutivos_tcp=[]
	    for i in range(0,items,2):
		consecutivos_tcp.append("s-"+cc[i]+":"+"s-"+cc[i+1])
	else:
	    unicos_tcp=[]
	    consecutivos_tcp=['']
	    for i in puertos_tcp:
		unicos_tcp.append("s-"+i)
    else:
	nivel=nivel+1
	unicos_tcp=['']
	consecutivos_tcp=['']
   
    if puertos_udp!=['']:
	j=-10
	consecutivos=[]
	cons=False
	for i in puertos_udp:
	    if int(i)==int(j)+1:
		consecutivos.append(str(j))
		cons=True
		if i==puertos_udp[-1]:
		    consecutivos.append(i)
	    elif cons or i == puertos_udp[-1]:
		consecutivos.append(j)
		consecutivos.append("-")
		cons=False
	    j=i
	cc=[]
	if len(consecutivos) > 0 and consecutivos[-1]!="-":
	    consecutivos.append("-")
	items=len(consecutivos)
	if items > 2:
	    ii=0
	    cc.append(consecutivos[ii])
	    for i in range(items):
		if consecutivos[i]=="-":
		    cc.append(consecutivos[i-1])
		    ii=i+1
		    if items!=i+1:
			cc.append(consecutivos[ii])
	    unicos_udp=[]
	    for i in puertos_udp:
		existe=False
		for j in consecutivos:
		    if i == j:
			existe=True
	    
		if not existe:
		    unicos_udp.append("s-"+i)
	    items=len(cc)
	    consecutivos_udp=[]
	    for i in range(0,items,2):
		consecutivos_udp.append("s-"+cc[i]+":"+"s-"+cc[i+1])
	else:
	    unicos_udp=[]
	    consecutivos_udp=['']
	    for i in puertos_udp:
		unicos_udp.append("s-"+i)
    else:
	nivel=nivel+1
	unicos_udp=['']
	consecutivos_udp=['']
 
    if nivel != 2:
	tcp=''
	for i in unicos_tcp:
	    tcp=tcp+i+";"
	for i in consecutivos_tcp:
	    tcp=tcp+i+";"
	if tcp:
	    r=True
	    while r:
		if len(tcp)>0 and tcp[-1]==";":
		    tcp=tcp[:-1]
		else:
		    r=False
	udp=''
	for i in unicos_udp:
	    udp=udp+i+";"
	for i in consecutivos_udp:
	    udp=udp+i+";"
	if udp:
	    r=True
	    while r:
		if len(udp)>0 and udp[-1]==";":
		    udp=udp[:-1]
		else:
		    r=False


	xmldoc=parse_file(archivo.configuracion)

	todos_srv=xmldoc.getElementsByTagName("servicios")
	todos_srv[0].appendChild(xmldoc.createTextNode("\t"))
	nodo_srv=xmldoc.createElement(servicio)
	nodo_srv.setAttribute("tcp",tcp)
	nodo_srv.setAttribute("udp",udp)
	todos_srv[0].appendChild(nodo_srv)
	todos_srv[0].appendChild(xmldoc.createTextNode("\n\t"))
	correcto=False
	while not correcto:
	    try:
	        copia_seguridad()
		f2=open(archivo.configuracion,"w")
		f2.write(xmldoc.toxml())
		f2.close()
		correcto=True
	    except:
		correcto=False
	
    return nivel