[英]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.