是的,为这些 API 前端正确配置权限并获得正确传递给它们的身份验证详细信息可能会很棘手。
使用这样的配置:
listen:
...
-
port: 4560
module: ejabberd_xmlrpc
acl:
admin:
user:
- user1@localhost
api_permissions:
"register command":
from: ejabberd_xmlrpc
who:
access:
allow:
acl: admin
what: register
并使用那个 Python 客户端:
import xmlrpclib
server_url = 'http://127.0.0.1:4560'
server = xmlrpclib.ServerProxy(server_url)
EJABBERD_XMLRPC_LOGIN = {'user':'user1', 'server':'localhost', 'password':'mypass11', 'admin':True}
def ejabberdctl(command, data):
fn = getattr(server, command)
return fn(EJABBERD_XMLRPC_LOGIN, data)
print ""
print "Calling with auth details..."
result = ejabberdctl('register', {'user':'User5', 'host':'localhost', 'password':'newpass'})
print "Results: "
print result
记得使用该密码注册 user1,或根据您的管理员帐户修改该脚本。
然后执行它,应该可以正常工作了:
$ python test.py
Calling with auth details...
Results:
{'res': 0, 'text': 'User User5@localhost successfully registered'}