Да, может оказаться сложным правильно настроить разрешения для этих интерфейсов 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'}