Авторизация пользователя не прошла xmpp в ejabberd - PullRequest
0 голосов
/ 10 марта 2020

Я зарегистрировал своего администратора в ejabberd. Когда я пытаюсь зарегистрировать нового пользователя в ejabberd с кодом xmpp php, я получаю сообщение об ошибке xmlrpc: Error -118 A problem '{error,access_rules_unauthorized}' occurred executing the command register with arguments. Я пробовал много вещей, но не мог найти какое-либо решение и снова и снова получал ту же ошибку.

1 Ответ

0 голосов
/ 10 марта 2020

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