簡體   English   中英

在不公開服務名和主機名的情況下使用 Android XMPP Smack

[英]Use Android XMPP Smack without making public the Service Name and the Host name

正如您在下面的示例代碼中看到的,Smack 要求我提供服務名稱和主機。 我將 Ejabberd 與 Linux 和 EC2 實例一起使用。

在檢查 XMPP 客戶端應用程序時,我看到了使用其他 XMPP 提供商創建帳戶的選項。 我擔心當我向公眾發布我的應用程序時,我的 EC2 實例的 DNS 會讓人們有能力創建大量帳戶,而不是直接從我的應用程序而是從任何地方創建。

我應該使用 Firebase 函數之類的東西嗎? 或者類似的東西? 解決這個問題的最佳方法是什么? 我只是不希望主機名是公開的。

XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration
            .builder();
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
    config.setServiceName(serverAddress);
    config.setHost(serverAddress);
    config.setPort(5222);
    config.setResource(context.getResources().getString(R.string.resource_name));
    config.setDebuggerEnabled(true);
    config.setSendPresence(true);
    XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
    XMPPTCPConnection.setUseStreamManagementDefault(true);
    mConnection = new XMPPTCPConnection(config.build());
    XMPPConnectionListener connectionListener = new XMPPConnectionListener(type);
    mConnection.addConnectionListener(connectionListener);

僅當您在 ejabberd 配置中啟用該選項時,此帳戶創建才有效。 如果您使用 ProcessOne 和大多數 Linux 發行版提供的標准配置,則應禁用它。 它應該是這樣的:

modules:
  # other modules stuff

  mod_register:
    ip_access: trusted_network

您的 acl 應與此類似的位置:

acl:
  # other irrelevant acls

  loopback:
    ip:
      - "127.0.0.0/8"
      - "::1/128"

所需的訪問規則應如下所示:

access_rules:
  trusted_network:
    - allow: loopback

這都是根據配置的文檔,可以在這里找到: https : //docs.ejabberd.im/admin/configuration/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM