Beispiel #1
0
    def session_time_menuitem_activate_cb(self, widget, data=None):
        if self.selected_slaves():
            result = self.time_dialog.run()
            if result == gtk.RESPONSE_OK:
                print self.time_combo.get_active_text()

                for slave in self.selected_slaves():
                    do_work('sess_time', slave.address, slave.port, [self.time_combo.get_active_text()],
                        RPC_TIMEOUT, self.cb)
                    if (self.cb):
                        if self.time_combo.get_active_text() == '00:00':
                            self.notify(title=_('Control de Puestos'), 
                                    text='Se ha eliminado el tiempo de sesion del equipo %s correctamente' % slave.host,
                                    icon='commiecc', urgency=1)
                            self.logger.info('Session time for slave %s has been removed' % slave.host)
                        else:
                            self.notify(title=_('Control de Puestos'), 
                                    text='Se ha establecido el tiempo de sesion del equipo %s a %s' % (slave.host, self.time_combo.get_active_text()),
                                    icon='commiecc', urgency=1)
                            self.logger.info('Session time for slave %s has been set to %s' % (slave.host, self.time_combo.get_active_text())) 
                    else:
                        self.notify(title=_('Control de Puestos'),
                                    text='No se ha establecido el tiempo de sesion del equipo %s correctamente' % slave.host,
                                    icon='commiecc', urgency=1)
                        self.logger.error('Session time for slave %s goes wrong' % slave.host)
            else:
                print 'Cancelled from ui'
            
            self.time_dialog.hide()
Beispiel #2
0
    def edit_menuitem_activate_cb(self, menuitem, data=None):
        selection = self.reg_tv.get_selection()
        model, selected = selection.get_selected()
        if selected is not None:

            #TODO: Add printer editing
            if selected[ICON_COL] == printer_icon:
                return

            row = model[selected]
            self.name_lbl.set_text(row[NAME_COL])
            self.ip_lbl.set_text(row[IP_COL])

            self.available_store.clear()
            for item in [x for x in available_computers if not x in get_clients_registered().keys()]:
                self.available_store.append([item])
        
            response = self.edit_dialog.run()
            if response == gtk.RESPONSE_OK:
                #TODO: Check if computer still alive before continue
                if self.name_box.get_active_text():
                    if row[ICON_COL] == wired_icon:
                        def cb(result):
                            if not result:
                                self.logger.error('Cant request renewal to %s' \
                                    % row[NAME_COL])
                        do_work('renewal', row[NAME_COL], 8000, [], 5, cb)
                            
                    self.update_name(row[NAME_COL], 
                        self.name_box.get_active_text())

            self.edit_dialog.hide()
Beispiel #3
0
 def detacher_menuitem_activate_cb(self, widget, data=None):
     for slave in self.selected_slaves():
         do_work('detach', slave.address, slave.port, '',
             RPC_TIMEOUT, self.cb)
         if (self.cb):
             self.notify(title=_('Control de Puestos'), text='El cliente %s ha sido desacoplado del centro correctamente' % slave.host,
                     icon='commiecc', urgency=1)
             self.logger.info('Slave %s has been detached' % slave.host) 
         else:
             print "not so good!" 
Beispiel #4
0
 def message_menuitem_activate_cb(self, widget, data=None):
     if self.selected_slaves():
         message = ''
         self.message_entry.set_text(message)
         if self.message_dialog.run() == gtk.RESPONSE_OK:
             message = self.message_entry.get_text()
         self.message_dialog.hide()
 
         if message:    
             for slave in self.selected_slaves():
                 do_work('message', slave.address, slave.port, [message])
Beispiel #5
0
    def remove_menuitem_activate_cb(self, menuitem, data=None):
        selection = self.reg_tv.get_selection()
        model, selected = selection.get_selected()
        if selected is not None:
            row = model[selected]

            #Aqui tenemos que republicar
            def cb(result):
                if not result:
                    self.logger.error('Cant request renewal to %s' % row[NAME_COL])
            client_name = row[NAME_COL]
            do_work('renewal', row[NAME_COL], 8000, [], 5, cb)
            self.delete_computer(client_name)
Beispiel #6
0
 def session_time_menuitem2_activate_cb(self, widget, data=None):
     for slave in self.selected_slaves():
         do_work('sess_time', slave.address, slave.port, ['00:00'],
             RPC_TIMEOUT, self.cb)
         if (self.cb):
             self.notify(title=_('Control de Puestos'),
                             text='Se ha eliminado el tiempo de sesion del equipo %s correctamente' % slave.host,
                             icon='commiecc', urgency=1)
             self.logger.info('Session time for slave %s has been removed' % slave.host)
         else:
             self.notify(title=_('Control de Puestos'),
                             text='Ha sido imposible desactivar el tiempo de sesion del equipo %s' % slave.host,
                             icon='commiecc', urgency=1)
             self.logger.error('Remove of session time for slave %s goes wrong' % slave.host)
Beispiel #7
0
    def discovered(self, dispatcher, slave):
        try:
    
            print 'Nuevo Equpo Descubierto. Direccion MAC ACTIVA:  %s ' %slave.hwaddr
            print 'Nombre del equipo descubierto %s' %slave.host
            print 'IP del nombre descubierto %s' %slave.address
            print 'Lista de MACS del equipo',slave.macs
    
    #        self.notify(title=_('Control de Puestos'), text='Se ha descubierto un equipo NO REGISTRADO con mac: %s' % slave.macs, icon='commiecc', urgency=1)
    
            # Tenemos que ir guardando los clientes avahi en una lista e ir comprobando que si estan registrados 
            # Si hay incongruencias se debe reiniciar 
            
            if slave.host.startswith("sin-registrar"):
                print "EL EQUIPO COMIENZA CON SIN-REGISTRAR"
                self.logger.info(" El equipo comienza con sin-registrar, se manda a reiniciar %s " % slave.host)
                do_work('reboot', slave.host, slave.port)
            
            list_macs=slave.macs.split(";")
            #print list_macs
            bol=False
            for mac in list_macs:
                self.dict_avahi[mac]=slave.host
                if hwmacadd_exists(mac):
                    bol=True
                else:
                    bol=False
            #Si bol= True quiere decir que todas las MACS del equipo registrado se encuentran registradas
            if bol == True: 
                ldap_slave_name=get_client_name(slave.hwaddr)
                print 'Nombre extraido del LDAP para la MAC: %s ' % ldap_slave_name
                print 'Nombre pasado en el descubrimiento: %s' % slave.host
                # Si estan registradas hay que ver si concierdan, para si no, reiniciar.
                for mac_avahi,client_avahi in self.dict_avahi.items():
                    if hwmacadd_exists(mac_avahi): 
                        name_ldap=get_client_name(mac_avahi)
                        if client_avahi.startswith("cliente") == False:
                            if client_avahi.startswith("impresora")==False:
                                #print "El cliente tampoco comienza como impresora"
                                print "Debug REINICIAR"  
                                self.logger.info(' Deberia mandarse a reiniciar el cliente %s:' % slave.host)
                                self.logger.info(' REBOOT-DEBUG %s: La mac está registrada pero el hostname no es ni del tipo cliente-x ni impresora-x' % (slave.host))
                                #do_work('reboot', client_avahi, slave.port)
                            else:
                               print "El cliente es una impresora"
                               #TODO repasar el tema de impresoras
                        elif client_avahi.startswith("cliente")==True: 
                            p=client_avahi.split(".")
                            client_avahi=p[0]
                            #Se supone que la informacion en le ldap estara correcta   
                            #pasamos a quitar el ultimo digito 
                            if client_avahi[-1].isalpha()== True:
                                client_avahi=client_avahi.strip(client_avahi[-1])
                            if name_ldap[-1].isalpha()== True:
                                name_ldap=name_ldap.strip(name_ldap[-1])
                            if client_avahi != name_ldap:                        
                                print "Comparacion entre " ,client_avahi ," y " + name_ldap 
                                print "DEBUG REINICIAR"
                             #   print "DEBUG: Nombre cliente avahi ", client_avahi
                                self.logger.info(' Deberia mandarse a reiniciar el cliente %s:' % slave.host)
                                self.logger.info(' REBOOT-DEBUG %s: La mac está registrada pero el avahi hostname %s no coincide con el del LDAP: %s' % (slave.host, client_avahi, name_ldap))
                                #do_work('reboot', client_avahi, slave.port)
                      
            elif bol==False:                  
                print "Alguna de las MACS no se encuentran registradas"
            #    self.notify(title=_('Control de Puestos'), text='Se ha descubierto un equipo NO REGISTRADO con mac: %s' % slave.macs, icon='commiecc', urgency=1)
                # Aqui se mandaria el mensaje de "Tiene equipos sin registrar"
    #            try:
    #                self.notify(title=_('Control de Puestos'),text='Existen equipos sin registrar', icon='commiecc', urgency=1)
    #            except e:
    #                print "Excepcion en el notify",e
                self.unreg_store.append([wired_icon, slave.host, slave.address,slave.hwaddr,slave.macs])
                self.logger.info(" Element added ");
                if slave.host.startswith("cliente") and not slave.host.startswith("cliente-live"):
                    print ("NO registrado y empiza como cliente, reiniciar!")
                    self.logger.info(' Deberia mandar a reiniciar el cliente %s:' % slave.host)
                    self.logger.info(' REBOOT-DEBUG %s: La mac no está registrada pero sin embargo su hostname es %s ' % (slave.host, slave.host))
#                    do_work('reboot', slave.host, slave.port)

            for item in self.reg_store:
                print 'Equipo registrado, nombre: %s ' %item[NAME_COL]
                print 'Equipo registrado, MAC: %s ' %item[MACS_COL]
            for item in self.unreg_store:
                print 'Equipo NO registrado, nombre %s ' %item[NAME_COL]
                print 'Equipo NO registrado, MAC %s ' %item[MACS_COL]
        except Exception, e:
            print e
Beispiel #8
0
    def unreg_iv_button_release_event_cb(self, reg_tv, event):
        selection = self.unreg_iv.get_item_at_pos(int(event.x), int(event.y))
        print "DEBUG Selection: ",selection
        if selection:
            selected = self.unreg_store[selection[0]]	
            print "DEBUG SELECTED ",selected 
            print "selected[ICON_COL] ", selected[ICON_COL] 
            print "selected[NAME_COL] ", selected[NAME_COL]
            print "selected[IP_COL] " ,selected[IP_COL] 
            print "selected[ALLMACS_COL]" ,selected[ALLMACS_COL]  
            # Add printer
            if selected[ICON_COL] == printer_icon:
                themac = getoutput('arping -f -w 10 '+selected[IP_COL]+'|grep reply|awk \'{print $5}\'').strip('[[,]]')
                self.printer_mac_entry.set_text(themac)
                self.printer_mac_entry.set_sensitive(False)
                self.available_store.clear()
                for item in [x for x in available_printers if not x in get_clients_registered().keys()]:
                    self.available_store.append([item])
                if not hwmacadd_exists(themac):
                    response = self.printer_dialog.run()
                    if response == gtk.RESPONSE_OK and self.printer_name_box.get_active_text():
                        if self.register_computer(self.printer_name_box.get_active_text(), self.printer_mac_entry.get_text()):
                            self.notify(title=_('Control de Puestos'),text='La impresora se ha registrado, apague y enciandala para que los cambios surtan efecto', icon='commiecc', urgency=1) 
                    self.printer_dialog.hide()
                    return
                else:
                    dialog_just_printer_added = gtk.MessageDialog(parent = None,
                        flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                        type = gtk.MESSAGE_ERROR, buttons = gtk.BUTTONS_OK,
                        message_format = 'Registro de impresoras')
                    dialog_just_printer_added.format_secondary_text('Parece que esta impresora está ya añadida, apáguela y vuélvala a encender')
                    if dialog_just_printer_added.run() == gtk.RESPONSE_OK:
                        dialog_just_printer_added.destroy()
                        return

            # Add computer         
            self.name_lbl.set_text(selected[NAME_COL])
            self.ip_lbl.set_text(selected[IP_COL])

            self.available_store.clear()
            for item in [x for x in available_computers if not x in get_clients_registered().keys()]:
                self.available_store.append([item])
        
            response = self.edit_dialog.run()
            if response == gtk.RESPONSE_OK:
                #TODO: Check if computer still alive before continue
                if self.name_box.get_active_text():
                    try:
                        print selected
                        print type(selected[NAME_COL])
                        cadena_macs= selected[ALLMACS_COL]
	                print "DEBUG CADENA MACS",cadena_macs
                        list_macs=cadena_macs.split(";")
                        for mac in list_macs:
                            if hwmacadd_exists(mac):
                                print "Operacion de duplicacion no permitida"
                            else:
                                self.register_computer(self.name_box.get_active_text(),
                            list_macs) #ADRIAN:Aqui se debe pasar una lista de mac             
                 
                            def cb(result):
                                if not result:
                                    self.logger.error('Cant request renewal to %s' \
                                        % row[NAME_COL])                       
                            do_work('renewal', selected[NAME_COL], 8000, [], 5, cb)
                    except:
                        print "Excepcion"
                try:
                    self.notify(title=_('Control de Puestos'),text='El equipo se ha registrado, deberá reiniciarlo para que el registro se complete en el equipo.', icon='commiecc', urgency=1)
                except:
                    print "Notify Exception"

            self.edit_dialog.hide()
Beispiel #9
0
 def sayhello_menuitem_activate_cb(self, widget, data=None):
     for slave in self.selected_slaves():
         do_work('message', slave.address, slave.port, [_('Hello slave!')])
Beispiel #10
0
 def session_menuitem_activate_cb(self, widget, data=None):
     for slave in self.selected_slaves():
         do_work('listener', slave.address, slave.port, None, RPC_TIMEOUT, 
             self.cb)
         self.logger.debug('Listener sended to %s' % slave.host)
Beispiel #11
0
 def hello_menuitem_activate_cb(self, widget, data=None):
     for slave in self.selected_slaves():
         do_work('helloworld', slave.address, slave.port, ['returnme'], 
             RPC_TIMEOUT, self.cb)
         self.logger.debug('HelloWorld sended to %s' % slave.host)