首先,将python,libexpat,python-expat,libopenssl,python-openssl这几个包编译到固件中。 然后,将xmpp,dnspython这两个包复制到python的库文件目录: /usr/lib/python2.6/ 然后运行测试程序:
#!/usr/bin/python# -*- coding: utf-8 -*-# $Id: bot.py,v 1.2 2006/10/06 12:30:42 normanr Exp $# edit by TLightSky 2012/06/08 16:05import sysimport xmppcommands={}i18n={'ru':{},'en':{}}########################### user handlers start ##################################i18n['en']['HELP']="This is example jabber bot.\nAvailable commands: %s"def helpHandler(user,command,args,mess): lst=commands.keys() lst.sort() return "HELP",', '.join(lst)i18n['en']['EMPTY']="%s"i18n['en']['HOOK1']='Responce 1: %s'def hook1Handler(user,command,args,mess): return "HOOK1",'You requested: %s'%argsi18n['en']['HOOK2']='Responce 2: %s'def hook2Handler(user,command,args,mess): return "HOOK2","hook2 called with %s"%(`(user,command,args,mess)`)i18n['en']['HOOK3']='Responce 3: static string'def hook3Handler(user,command,args,mess): return "HOOK3"*int(args)########################### user handlers stop ############################################################### bot logic start #####################################i18n['en']["UNKNOWN COMMAND"]='Unknown command "%s". Try "help"'i18n['en']["UNKNOWN USER"]="I do not know you. Register first."def messageCB(conn,mess): text=mess.getBody() user=mess.getFrom() user.lang='en' # dup if text.find(' ')+1: command,args=text.split(' ',1) else: command,args=text,'' cmd=command.lower() if commands.has_key(cmd): reply=commands[cmd](user,command,args,mess) else: reply=("UNKNOWN COMMAND",cmd) if type(reply)==type(()): key,args=reply if i18n[user.lang].has_key(key): pat=i18n[user.lang][key] elif i18n['en'].has_key(key): pat=i18n['en'][key] else: pat="%s" if type(pat)==type(''): reply=pat%args else: reply=pat(**args) else: try: reply=i18n[user.lang][reply] except KeyError: try: reply=i18n['en'][reply] except KeyError: pass if reply: conn.send(xmpp.Message(mess.getFrom(),reply))for i in globals().keys(): if i[-7:]=='Handler' and i[:-7].lower()==i[:-7]: commands[i[:-7]]=globals()[i]############################# bot logic stop #####################################def StepOn(conn): try: conn.Process(1) except KeyboardInterrupt: return 0 return 1def GoOn(conn): while StepOn(conn): passif len(sys.argv)<3: print "Usage: bot.py username@server.net password"else: jid=xmpp.JID(sys.argv[1]) user,server,password=jid.getNode(),jid.getDomain(),sys.argv[2] conn=xmpp.Client(server)#,debug=[]) conres=conn.connect() if not conres: print "Unable to connect to server %s!"%server sys.exit(1) if conres<>'tls': print "Warning: unable to estabilish secure connection - TLS failed!" authres=conn.auth(user,password) if not authres: print "Unable to authorize on %s - check login/password."%server sys.exit(1) if authres<>'sasl': print "Warning: unable to perform SASL auth os %s. Old authentication method used!"%server conn.RegisterHandler('message',messageCB) conn.sendInitPresence() print "Bot started." GoOn(conn)