Right now I have a python class that creates user/deletes users by executing "ejabberdctl register/unregister" commands. Is there a python xmpp library that supports adding/removing users?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You need to have an implementation of XEP-0077: In-Band Registration. xmpppy does appear to support this:
import sys
import os
import xmpp
if len(sys.argv) < 3:
print "Syntax: register.py [JID] [Password]"
sys.exita(64)
jid=xmpp.protocol.JID(sys.argv[1])
cli=xmpp.Client(jid.getDomain(), debug=[])
cli.connect()
# getRegInfo has a bug that puts the username as a direct child of the
# IQ, instead of inside the query element. The below will work, but
# won't return an error when the user is known, however the register
# call will return the error.
xmpp.features.getRegInfo(cli,
jid.getDomain(),
#{'username':jid.getNode()},
sync=True)
if xmpp.features.register(cli,
jid.getDomain(),
{'username':jid.getNode(),
'password':sys.argv[2]}):
sys.stderr.write("Success!\n")
sys.exit(0)
else:
sys.stderr.write("Error!\n")
sys.exit(1)
回答2:
xmpppy looks to have all the various methods for manipulating a client's roster.
Never used this myself, but the API documentation for the Roster class lists: delItem(self, jid) and setItem(self, jid) that remove and add the specified jid to the roster.
http://xmpppy.sourceforge.net/
http://xmpppy.sourceforge.net/apidocs/