def socketProcess(self): print 'Checking' try: reads, writes, errs = select.select(self.rsocks, self.wsocks, [], 0) print 'Checking tried...' except: print 'Except...' return for sock in reads: if sock == self.serversocket: client, name = sock.accept() self.rsocks.append(client) self.senders[client]='socket' self.activity+=20 elif sock == self.localsocket: client, name = sock.accept() self.rsocks.append(client) self.senders[client]='localsocket' self.activity+=20 else: ptype=self.senders[sock] print ptype print "" s = sock.recv(1024) print "Socket message received: "+s if (re.match(r"^[ \t\r\n]+$",s)): self.rsocks.remove(sock) del self.senders[sock] else: mess=config.socketMessage(s,sock) if (( re.search('^exit',s) ) or (s=="")): print 'exiting..' self.rsocks.remove(sock) del self.senders[sock] else: self.activity=self.activity+4+self.activity*0.1 out=self.parseMessage(mess,ptype) if ( out != None ): try: print "Sending answer on socket message..." s=out if (isinstance(out,config.socketMessage)): s=out.getBody() sock.send(s) except: self.rsocks.remove(sock) del self.senders[sock]
def getUser(self,mess,a): if ((a.has_key('pw_name')) or (a.has_key('pw_uid'))): jm=xmpp.Message(self.cfg.getAdminJID(),'%nss getUser '+self.d.packData(a)) onanswer=lambda message,answer,data: ( isinstance(answer,types.DictType) and answer.has_key('pw_name') and self.d.sendMessage(config.socketMessage('1\n'+self.userToString(answer),mess.socket)) or self.d.sendMessage(config.socketMessage('0\n',mess.socket)) ) self.d.sendMessage(jm,onanswer) return None else: s='' print "Getting next user..." if (len(self.cachedUsers)>0): print "!!" user=self.getNextUser() print user if (user!=None): s='1\n'+self.userToString(user) else: s='0\n' else: s='0\n' print s return s
def getShadow(self,mess,a): if (a.has_key('sp_namp')): jm=xmpp.Message(self.cfg.getAdminJID(),'%nss getShadow '+self.d.packData(a)) onanswer=lambda message,answer,data: ( isinstance(answer,types.DictType) and answer.has_key('sp_namp') and self.d.sendMessage(config.socketMessage('1\n'+self.shadowToString(answer),mess.socket)) or self.d.sendMessage(config.socketMessage('0\n',mess.socket)) ) self.d.sendMessage(jm,onanswer)
def toFirstGroup(self,mess,a): print "Going to first group..." jm=xmpp.Message(self.cfg.getAdminJID(),'%nss getGroupsList') onanswer=lambda message,answer,data: ( self.cachedGroupsList(answer) and self.d.sendMessage(config.socketMessage('1\n',mess.socket)) or self.d.sendMessage(config.socketMessage('0\n',mess.socket)) ) self.d.sendMessage(jm,onanswer)
def getGroup(self,mess,a): if ((a.has_key('gr_name')) or (a.has_key('gr_gid'))): jm=xmpp.Message(self.cfg.getAdminJID(),'%nss getGroup '+self.d.packData(a)) onanswer=lambda message,answer,data: ( isinstance(answer,types.DictType) and answer.has_key('gr_name') and self.d.sendMessage(config.socketMessage('1\n'+self.groupToString(answer),mess.socket)) or self.d.sendMessage(config.socketMessage('0\n',mess.socket)) ) self.d.sendMessage(jm,onanswer) return None else: s='' print "Getting next group..." if (len(self.cachedGroups)>0): group=self.getNextGroup() if (group!=None): s='1\n'+self.groupToString(group) else: s='0\n' else: s='0\n' print s return s