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()
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()
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!"
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])
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)
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)
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
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()
def sayhello_menuitem_activate_cb(self, widget, data=None): for slave in self.selected_slaves(): do_work('message', slave.address, slave.port, [_('Hello slave!')])
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)
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)