6

嗨,我正在研究 ejabberd,我对这项技术很陌生。

我正在尝试使用以下代码在我的 ejabberd 服务器上添加一个用户:

  try {         
         conf.setSASLAuthenticationEnabled(true);               
         connection.connect();  
         Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual);
         Log.i("XMPPClient", "Connected to "
                                +connection.getHost());              
         createUser("tester","testerpass");   
    }   
    } catch (XMPPException e1) {
        Log.e("XMPPClient", e1.toString());
        xmppClient.setConnection(null);
    }

    public void createUser(String user, String pass) {      
            try {
                //Admin login
                connection.login(user, pass);
            } catch (XMPPException e) {
              e.printStackTrace();
            }    
Log.i("connection.isAuthenticated() : ",""+connection.isAuthenticated() );   
             if (connection.isAuthenticated()) {
              AccountManager manager = connection.getAccountManager();        
              try {  
                manager.createAccount(user, pass);
              } catch (XMPPException e) {
                Log.w("[create_user] Cannot create new user: XMPP Exception.", "0");
                e.printStackTrace();
              } catch (IllegalStateException e) {
                Log.w("[create_user] Cannot create new user: not logged in.", "0");
                e.printStackTrace();
              }
            }
          }

它连接到服务器和管理员登录是完美的但是在创建新帐户期间它给出了禁止的 403 错误,即:

06-15 20:01:40.092: I/XMPPClient(1300):Connected to 68.178.255.136
06-15 20:01:41.952: I/connection.isAuthenticated() :(1300): true
06-15 20:01:42.562: W/[create_user] Cannot create new user: XMPP Exception.(1300): 0
06-15 20:01:42.562: W/System.err(1300): forbidden(403)
06-15 20:01:42.562: W/System.err(1300):     at org.jivesoftware.smack.AccountManager.createAccount(AccountManager.java:246)

如果有人可以为此建议一个解决方法,我将非常感激。

4

4 回答 4

5

转到 C:\Program Files (x86)\ejabberd-2.1.8\conf (在我的情况下)文件夹并使用 Notepad++ 打开 ejabberd.cfg 文件(使用它很容易编辑)。

在文件中进行以下更改:

%% Put this in the section ACCESS RULES
{access, register_from, [{allow, admin}]}.

%% Change mod_register so it contains the new access rule:

{mod_register, [
          {access_from, register_from},
           ...
                    ] ...
于 2013-06-15T16:28:16.557 回答
3

我想更新答案以反映 Asmack 库 4.0 版以后的变化。Connection.getAccountManager() 现在是 AccountManager.getInstance(XMPPConnection)

AccountManager accountManager=AccountManager.getInstance(connection);
try {
    accountManager.createAccount("username", "password");
} catch (XMPPException e1) {
    Log.d(e1.getMessage(), e1);
}
于 2014-09-17T13:03:43.157 回答
1

就我而言,我需要编辑文件 EJABERD_HOME/conf/ejabberd.yml,在 mod_register 上将参数更改为:

ip_access : all

access_from : all

access: register

允许用户从其他主机注册

于 2016-01-13T11:52:44.230 回答
0

对于yaml配置如下。

access_rules:
  local:
    allow: all
  configure:
    allow: all
  trusted_network:
    allow: all
  register:
    allow: all
  .......

modules:
  mod_register:
    ip_access: trusted_network
    access: register
    access_from: all

注意:这是允许所有配置。根据需要进行严格的配置。

于 2020-02-04T04:06:55.570 回答