コード例 #1
0
ファイル: gestion.py プロジェクト: japastor/controlies
def config():

    if not auth.user: redirect(URL(c='default',f='index'))

    configuracion=Config(cdb)
    configuracion.loadConfig()
       
    
       
    form=SQLFORM.factory(
          Field('m_server',type='string', label="Servidor correo (nombre:puerto)", length=50, default=configuracion.mail_server),
          Field('m_sender',type='string', label="Email de envio" , length=50, default=configuracion.mail_sender),
          Field('m_user', type='string', label="Usuario correo", length=50, default=configuracion.mail_user),
          Field('m_password',type='string',label="Contraseña correo" , length=30, default=configuracion.mail_password),
          Field ('m_receiver',type='string', label="Email receptor", length=50, default=configuracion.mail_receiver),
          Field ('a_teclado',type='boolean', label="Alertar teclado thinclients", length=50, default=True if configuracion.alert_teclado==1 else False),
          Field ('a_raton',type='boolean', label="Alertar raton thinclients", length=50, default=True if configuracion.alert_raton==1 else False),
          Field ('a_apagado',type='boolean', label="Alertar thinclients apagados", length=50, default=True if configuracion.alert_apagado==1 else False),
          Field ('l_email',type='boolean', label="Envio de correo resumen", length=50, default=True if configuracion.list_email==1 else False) ,
          submit_button='Guardar Datos Configuración')

    if form.accepts(request.vars, session):
          response.flash = 'Procesando datos, espere'                    
          configuracion.saveConfig(form.vars.m_server,form.vars.m_sender, form.vars.m_user, form.vars.m_password, form.vars.m_receiver, form.vars.a_teclado, form.vars.a_raton, form.vars.a_apagado, form.vars.l_email)          
          redirect( URL( 'gestion', 'config')) 

    return dict(form=form)
コード例 #2
0
ファイル: gestion.py プロジェクト: japastor/controlies
def getConfigData():

    configuracion=Config(cdb)
    configuracion.loadConfig()
    response=configuracion.getConfigData()
    
    return dict(response=response)
コード例 #3
0
def docheckapagado(host):

    ahora=datetime.datetime.today()
    
    #Ver si hay que mandar emails, siempre que traiga informacion
    configuracion=Config(cdb)
    configuracion.loadConfig()    
    if (configuracion.alert_apagado==1): 
    
        enviar_mensaje=False
        ultimos_estados=cdb(cdb.thinclients.host==host).select(orderby=~cdb.thinclients.time, limitby=(0, 2)).as_list()
        
        #Si hay algun estado anterior.... miramos si ha pasado de encendido->apagado.       
        if len(ultimos_estados)>0 :
            #Si el ultimo vale 0, estaba apagado.
            if (ultimos_estados[0]["raton"]=="0"):
               if len(ultimos_estados)>1:    #Si hay penultimo
                   #Si no vale 0, estaba encendido y ahora apagado. Hay que avisar de que está apagado.
                   if (ultimos_estados[1]["raton"]!="0"):
                       enviar_mensaje=True
               else:
                   #Si no hay penúltimo, avisamos de que está apagado.
                   enviar_mensaje=True           
                   
            if enviar_mensaje: 
                  mensaje="El thinclient "+host+" parece apagado o bloqueado ("+ahora.strftime("%d/%m/%Y %H:%M")+")\n\n"
                  configuracion.enviaMail('Aviso de thinclient '+host+" apagado", mensaje)


    return "OK"
コード例 #4
0
def doactualizahost(host,tipohost,ultimoarranque,ultimopkgsync,estadopaquetes): 
    ahora=datetime.datetime.today()
    fila=cdb((cdb.maquinas.host==host) & (cdb.maquinas.tipohost==tipohost)).select().last()
    if fila==None:
      if estadopaquetes!='':
           cdb.maquinas.insert(host=host,tipohost=tipohost,ultimorefresco=ahora,ultimoarranque=ultimoarranque,
                         ultimopkgsync=ultimopkgsync,estadopaquetes=estadopaquetes)   
      else:
           cdb.maquinas.insert(host=host,tipohost=tipohost,ultimorefresco=ahora,ultimoarranque=ultimoarranque)
    else:
      
      if fila.alert==1 and fila.ultimoarranque.strftime("%Y-%m-%d %H:%M")!=ultimoarranque[0:16]: 
             # Si está activada la alerta para ese host y es un nuevo arranque, se envia el mensaje de correo de alerta de encendido.
             # Para ver si es un nuevo arranque, comparamos las fechas de ultima arranque, desechando los segundos.
            configuracion=Config(cdb)
            configuracion.loadConfig()
            mensaje="Alerta: ha sido encendido el host monitorizado "+host+" con fecha "+ahora.strftime("%d/%m/%Y %H:%M")+"\n"
            configuracion.enviaMail("Encendido de "+host, mensaje)
                       
      if estadopaquetes!='':            
           fila.update_record(ultimorefresco=ahora, tipohost=tipohost, ultimopkgsync=ultimopkgsync,
                           ultimoarranque=ultimoarranque,
                           estadopaquetes=estadopaquetes)
      else:
           fila.update_record(ultimorefresco=ahora, tipohost=tipohost, ultimoarranque=ultimoarranque)
    return "OK"
コード例 #5
0
def getConfigData():

    configuracion = Config(cdb)
    configuracion.loadConfig()
    response = configuracion.getConfigData()

    return dict(response=response)
コード例 #6
0
def sendTestMail():

    configuracion = Config(cdb)
    configuracion.loadConfig()
    return configuracion.enviaMail(
        'Desde controlies',
        'Este es un mensaje enviado desde Controlies. Si le ha llegado es que todo esta correcto.'
    )
コード例 #7
0
ファイル: gestion.py プロジェクト: japastor/controlies
def setConfigData():

    configuracion=Config(cdb)
    configuracion.loadConfig()    
    
    import gluon.contrib.simplejson
    
    #Los datos vienen en un string json y hay que reconstituirlos sobre un diccionario-lista python.
    data = gluon.contrib.simplejson.loads(request.vars["data"])
    
    try:
       a_teclado=False
       if str(data['a_teclado']) == "a_teclado":
             a_teclado=True
    except LookupError:
             pass
    try:
       a_raton=False
       if str(data['a_raton']) == "a_raton":
             a_raton=True
    except LookupError:
             pass
    try:
       a_apagado=False
       if str(data['a_apagado']) == "a_apagado":
             a_apagado=True
    except LookupError:
             pass
    try:
       l_email=False           
       if str(data['l_email']) == "l_email":       
             l_email=True
    except LookupError:
             pass      
             
    configuracion.saveConfig(data['m_server'],
                   data['m_sender'],
                   data['m_user'], 
                   data['m_password'], 
                   data['m_receiver'], 
                   a_teclado, 
                   a_raton, 
                   a_apagado, 
                   l_email,
                   data['horarios'])               
                   
    response = "OK"
    return dict(response = response)    
コード例 #8
0
def doactualizathinclient(host, raton, teclado):

    ahora=datetime.datetime.today()
    
    
    #Ver si hay que mandar emails, siempre que traiga informacion
    configuracion=Config(cdb)
    configuracion.loadConfig()    
    if (raton=="1" or teclado=="1") and (configuracion.alert_teclado==1 or configuracion.alert_raton==1): 
        
        #Busca ultimo estado que no sea "apagado", para comparar
        
        ultimo_estado=cdb((cdb.thinclients.host==host) & (cdb.thinclients.raton!="0") ).select(orderby=~cdb.thinclients.time).first()
        if ultimo_estado==None:
               ult_teclado="2"
               ult_raton="2"
        else:
               ult_teclado=ultimo_estado.teclado
               ult_raton=ultimo_estado.raton
               
        if (teclado=="1" and ult_teclado=="2" and configuracion.alert_teclado==1) or (raton=="1" and ult_raton=="2" and configuracion.alert_raton==1):
               mensaje="Aviso fallo teclado/ratón en thinclient "+host+" ("+ahora.strftime("%d/%m/%Y %H:%M")+")\n\n"
               est_teclado="Conectado" if teclado=="2" else "Desconectado"
               est_raton="Conectado" if raton=="2" else "Desconectado"
               mensaje=mensaje+"\tTeclado: "+est_teclado+"\n"
               mensaje=mensaje+"\tRaton: "+est_raton+"\n"
               configuracion.enviaMail('Aviso de thinclient '+host, mensaje)
        
    fila=cdb(cdb.thinclients.host==host).select(orderby=~cdb.thinclients.time).first()    
    if fila==None:
        cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado)  
    else:
      if fila.raton == "0":
         hora1=fila.time
         hora2=ahora
         diferencia=hora2-hora1
         if diferencia.seconds > 300 : #Si han pasado mas de 5 minutos es otro encendido
             cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado)  
         else:    	
             fila.update_record(time=ahora, raton=raton, teclado=teclado)
      else:
         cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado)  
        
    return "OK"
コード例 #9
0
ファイル: registro.py プロジェクト: manumora/controlies
def doactualizahost(host,tipohost,ultimoarranque,ultimopkgsync,estadopaquetes): 
    ahora=datetime.datetime.today()
    fila=cdb((cdb.maquinas.host==host) & (cdb.maquinas.tipohost==tipohost)).select().last()
    if fila==None:
      if estadopaquetes!='':
           cdb.maquinas.insert(host=host,tipohost=tipohost,ultimorefresco=ahora,ultimoarranque=ultimoarranque,
                         ultimopkgsync=ultimopkgsync,estadopaquetes=estadopaquetes)   
      else:
           cdb.maquinas.insert(host=host,tipohost=tipohost,ultimorefresco=ahora,ultimoarranque=ultimoarranque)
    else:
      
      if fila.alert==1 and fila.ultimoarranque.strftime("%Y-%m-%d %H:%M")!=ultimoarranque[0:16]: 
             # Si está activada la alerta para ese host y es un nuevo arranque, se envia el mensaje de correo de alerta de encendido.
             # Para ver si es un nuevo arranque, comparamos las fechas de ultima arranque, desechando los segundos.
            configuracion=Config(cdb)
            configuracion.loadConfig()
            mensaje="Alerta: ha sido encendido el host monitorizado "+host+" con fecha "+ahora.strftime("%d/%m/%Y %H:%M")+"\n"
            configuracion.enviaMail("Encendido de "+host, mensaje)
                       
      if estadopaquetes!='':            
           fila.update_record(ultimorefresco=ahora, tipohost=tipohost, ultimopkgsync=ultimopkgsync,
                           ultimoarranque=ultimoarranque,
                           estadopaquetes=estadopaquetes)
      else:
           fila.update_record(ultimorefresco=ahora, tipohost=tipohost, ultimoarranque=ultimoarranque)
    return "OK"
コード例 #10
0
ファイル: registro.py プロジェクト: manumora/controlies
def docheckapagado(host):

    ahora=datetime.datetime.today()
    
    #Ver si hay que mandar emails, siempre que traiga informacion
    configuracion=Config(cdb)
    configuracion.loadConfig()    
    if (configuracion.alert_apagado==1): 
    
        enviar_mensaje=False
        ultimos_estados=cdb(cdb.thinclients.host==host).select(orderby=~cdb.thinclients.time, limitby=(0, 2)).as_list()
        
        #Si hay algun estado anterior.... miramos si ha pasado de encendido->apagado.       
        if len(ultimos_estados)>0 :
            #Si el ultimo vale 0, estaba apagado.
            if (ultimos_estados[0]["raton"]=="0"):
               if len(ultimos_estados)>1:    #Si hay penultimo
                   #Si no vale 0, estaba encendido y ahora apagado. Hay que avisar de que está apagado.
                   if (ultimos_estados[1]["raton"]!="0"):
                       enviar_mensaje=True
               else:
                   #Si no hay penúltimo, avisamos de que está apagado.
                   enviar_mensaje=True           
                   
            if enviar_mensaje: 
                  mensaje="El thinclient "+host+" parece apagado o bloqueado ("+ahora.strftime("%d/%m/%Y %H:%M")+")\n\n"
                  configuracion.enviaMail('Aviso de thinclient '+host+" apagado", mensaje)


    return "OK"
コード例 #11
0
ファイル: registro.py プロジェクト: manumora/controlies
def doactualizathinclient(host, raton, teclado):

    ahora=datetime.datetime.today()
    
    
    #Ver si hay que mandar emails, siempre que traiga informacion
    configuracion=Config(cdb)
    configuracion.loadConfig()    
    if (raton=="1" or teclado=="1") and (configuracion.alert_teclado==1 or configuracion.alert_raton==1): 
        
        #Busca ultimo estado que no sea "apagado", para comparar
        
        ultimo_estado=cdb((cdb.thinclients.host==host) & (cdb.thinclients.raton!="0") ).select(orderby=~cdb.thinclients.time).first()
        if ultimo_estado==None:
               ult_teclado="2"
               ult_raton="2"
        else:
               ult_teclado=ultimo_estado.teclado
               ult_raton=ultimo_estado.raton
               
        if (teclado=="1" and ult_teclado=="2" and configuracion.alert_teclado==1) or (raton=="1" and ult_raton=="2" and configuracion.alert_raton==1):
               mensaje="Aviso fallo teclado/ratón en thinclient "+host+" ("+ahora.strftime("%d/%m/%Y %H:%M")+")\n\n"
               est_teclado="Conectado" if teclado=="2" else "Desconectado"
               est_raton="Conectado" if raton=="2" else "Desconectado"
               mensaje=mensaje+"\tTeclado: "+est_teclado+"\n"
               mensaje=mensaje+"\tRaton: "+est_raton+"\n"
               configuracion.enviaMail('Aviso de thinclient '+host, mensaje)
        
    fila=cdb(cdb.thinclients.host==host).select(orderby=~cdb.thinclients.time).first()    
    if fila==None:
        cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado)  
    else:
      if fila.raton == "0":
         hora1=fila.time
         hora2=ahora
         diferencia=hora2-hora1
         if diferencia.seconds > 300 : #Si han pasado mas de 5 minutos es otro encendido
             cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado)  
         else:    	
             fila.update_record(time=ahora, raton=raton, teclado=teclado)
      else:
         cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado)  
        
    return "OK"
コード例 #12
0
def setConfigData():

    configuracion = Config(cdb)
    configuracion.loadConfig()

    import gluon.contrib.simplejson

    #Los datos vienen en un string json y hay que reconstituirlos sobre un diccionario-lista python.
    data = gluon.contrib.simplejson.loads(request.vars["data"])

    try:
        a_teclado = False
        if str(data['a_teclado']) == "a_teclado":
            a_teclado = True
    except LookupError:
        pass
    try:
        a_raton = False
        if str(data['a_raton']) == "a_raton":
            a_raton = True
    except LookupError:
        pass
    try:
        a_apagado = False
        if str(data['a_apagado']) == "a_apagado":
            a_apagado = True
    except LookupError:
        pass
    try:
        l_email = False
        if str(data['l_email']) == "l_email":
            l_email = True
    except LookupError:
        pass

    configuracion.saveConfig(data['m_server'], data['m_sender'],
                             data['m_user'], data['m_password'],
                             data['m_receiver'], a_teclado, a_raton, a_apagado,
                             l_email, data['horarios'])

    response = "OK"
    return dict(response=response)
コード例 #13
0
ファイル: gestion.py プロジェクト: japastor/controlies
def sendTestMail():

    configuracion=Config(cdb)
    configuracion.loadConfig()
    return configuracion.enviaMail('Desde controlies', 'Este es un mensaje enviado desde Controlies. Si le ha llegado es que todo esta correcto.')
コード例 #14
0
ファイル: gestion.py プロジェクト: japastor/controlies
def sendReportMail():

    configuracion=Config(cdb)
    configuracion.loadConfig()
    return configuracion.sendListReport()
コード例 #15
0
def sendReportMail():

    configuracion = Config(cdb)
    configuracion.loadConfig()
    return configuracion.sendListReport()
コード例 #16
0
def config():

    if not auth.user: redirect(URL(c='default', f='index'))

    configuracion = Config(cdb)
    configuracion.loadConfig()

    form = SQLFORM.factory(
        Field('m_server',
              type='string',
              label="Servidor correo (nombre:puerto)",
              length=50,
              default=configuracion.mail_server),
        Field('m_sender',
              type='string',
              label="Email de envio",
              length=50,
              default=configuracion.mail_sender),
        Field('m_user',
              type='string',
              label="Usuario correo",
              length=50,
              default=configuracion.mail_user),
        Field('m_password',
              type='string',
              label="Contraseña correo",
              length=30,
              default=configuracion.mail_password),
        Field('m_receiver',
              type='string',
              label="Email receptor",
              length=50,
              default=configuracion.mail_receiver),
        Field('a_teclado',
              type='boolean',
              label="Alertar teclado thinclients",
              length=50,
              default=True if configuracion.alert_teclado == 1 else False),
        Field('a_raton',
              type='boolean',
              label="Alertar raton thinclients",
              length=50,
              default=True if configuracion.alert_raton == 1 else False),
        Field('a_apagado',
              type='boolean',
              label="Alertar thinclients apagados",
              length=50,
              default=True if configuracion.alert_apagado == 1 else False),
        Field('l_email',
              type='boolean',
              label="Envio de correo resumen",
              length=50,
              default=True if configuracion.list_email == 1 else False),
        submit_button='Guardar Datos Configuración')

    if form.accepts(request.vars, session):
        response.flash = 'Procesando datos, espere'
        configuracion.saveConfig(form.vars.m_server, form.vars.m_sender,
                                 form.vars.m_user, form.vars.m_password,
                                 form.vars.m_receiver, form.vars.a_teclado,
                                 form.vars.a_raton, form.vars.a_apagado,
                                 form.vars.l_email)
        redirect(URL('gestion', 'config'))

    return dict(form=form)