def messageHandler(self, conn, msg): print "---message--------------------------------------------------" #print unicode(dir(msg)) #print unicode(msg.getFrom()).split("/")[0] #print " "+self.jid # extractint content from message if msg.getBody(): sender = unicode(msg.getFrom()) content = unicode(msg.getBody()) type = unicode(msg.getType()) self.chat = "" #try: # content = msg.getBody().encode("iso-8859-1") #except (UnicodeDecodeError, UnicodeEncodeError): # print "[ENCODING ERROR] ..." # content=u"" # GROUPCHAT try: if type.__eq__("groupchat"): print "GROUPCHAT!!!!!!" self.chat = sender.split("/")[0] print u"chat: "+self.chat except Exception, e: print u"[ERROR] sender: "+sender print e #content = unicode(content, "iso-8859-1") print u"("+type+u") Sender: " + sender + u"\n Content: " + content # try to parse ass Address addr = Address(content) print "parsed address: " + addr.__str__() if content.__eq__("show"): print " parsing as show command" self.send(self.root.returnTree(0), sender) elif content.__eq__("xml"): print " parsing as xml command" self.send(self.root.toXml(), sender) elif content.__eq__("list"): print " parsing as list command" result = "" for elem in self.root.getChild(Config.get("jabber", "jid")).getAddressList(): result += elem+"\n" self.send(result, sender) elif content.__eq__("help"): print " parsing as help command" help = ''' enter: help to print this message xml to print xml representation show to print message overview list to print all available addresses search: enter search command with * before eg "*play" Use following XML to sent a Packet: <?xml version="1.0" ?> <packet from="*****@*****.**" to="/Finder/Say"> <string name="text"> Hello master, my name is hal2000 </string> </packet>''' self.send(help, sender) elif content[0:1].__eq__("*"): print " parsing as search command" result = [] answer = "" # seperate search string form data string searchstring = content.split(" ")[0][1:] datastring = "" for elem in content.split(" ")[1:]: datastring += " "+elem datastring = datastring[1:] print "'"+searchstring+"' - '"+datastring+"'" # search in address index for searchstring and build a list with resulting addresses for elem in self.root.getAddressList(): if not elem.lower().find(searchstring.lower()) == -1: result.append(elem) print result, result.__len__() # if there is only one address resulting, execute it if result.__len__() == 1: answer = " executing: "+result[0][5:] #try: if True: if datastring.__len__() == 0: tmp = str(self.root.getByAddress(result[0][5:]).use()) else: tmp = str(self.root.getByAddress(result[0][5:]).use(datastring)) if not tmp == None: answer+="\n"+str(tmp) self.send(answer, sender) #except Exception, e: # print "[SEARCH PARSE ERROR] "+str(e) # otherwise return result to sender else: for elem in result: answer += elem[5:]+"\n" self.send(answer, sender) elif addr.isAddress(): print " parsing as address command: "+addr.__str__() print " with data: >"+addr.data+"<" try: if addr.data.__len__() == 0: #print "call address WITHOUT parameter" result = self.root.getByAddress(addr.__str__()).use() else: #print "call address WITH parameter" result = self.root.getByAddress(addr.__str__()).use(addr.data) if not result == None: self.send(result, sender) print " "+str(result) except Exception, e: self.send("[ADDRESS XMPP ERROR] "+content+" is not a valid address.", sender) print "[ADDRESS XMPP ERROR] "+str(e)