XMPP-Proxy-Einstellungen in Smack 4.4 mit ProxyInfo
Hängen Sie ProxyInfo an den XMPP-Verbindungs-Builder an, mit getrennten Einstellungen für Proxy, Dienstdomäne und Serverhost.
Konfigurieren Sie die Verbindung, die tatsächlich den XMPP-Stream trägt. Das Setzen eines Proxys auf einer unabhängigen URLConnection leitet Smacks TCP-Verbindung nicht zum Messaging-Dienst um.
Smack 4.4 bietet ProxyInfo-Fabriken für HTTP, SOCKS4 und SOCKS5. Hängen Sie das resultierende Objekt an den XMPP-Verbindungs-Builder an:
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.proxy.ProxyInfo;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
ProxyInfo proxy = ProxyInfo.forSocks5Proxy(
"proxy.example.net", 1080, proxyUser, proxyPassword
);
XMPPTCPConnectionConfiguration config =
XMPPTCPConnectionConfiguration.builder()
.setXmppDomain("chat.example.net")
.setHost("xmpp-node.example.net")
.setPort(5222)
.setProxyInfo(proxy)
.setSecurityMode(
ConnectionConfiguration.SecurityMode.required
)
.build();Dies ist ein Konfigurationsfragment für ein bestehendes Smack 4.4-Setup. Die umgebende Anwendung behandelt die geprüften Ausnahmen des Builders und liefert die Proxy-Zugangsdaten. Der explizite Host und Port stehen für den tatsächlichen TCP-Endpunkt des XMPP-Dienstes.
Es gibt drei Namen mit unterschiedlichen Rollen:
proxy.example.netist der Vermittler, der die anfängliche Verbindung entgegennimmt.xmpp-node.example.netist der Server-Endpunkt, den der Proxy erreichen soll.chat.example.netist die XMPP-Dienstdomäne, etwa die Domäne nach@in der JID eines Kontos.
Ein Dienst kann für die letzten beiden denselben Namen verwenden, aber ein Proxy-Hostname ersetzt keinen von beiden. Bewahren Sie die beabsichtigte Identität des XMPP-Dienstes in der Verbindung und ihrer TLS-Validierung.
Verwenden Sie für einen HTTP-Proxy ProxyInfo.forHttpProxy mit dem passenden Proxy-Port und den passenden Zugangsdaten. Dieser Weg erfordert einen Proxy, der die XMPP-Verbindung tunneln und ihren Zielport zulassen kann. Ein Proxy, der HTTPS-Webbrowsing verarbeitet, erlaubt nicht automatisch TCP-Verbindungen zu einem XMPP-Dienst auf 5222.
Der erforderliche Sicherheitsmodus im Fragment macht TLS zur Bedingung der XMPP-Verbindung. Er führt keine Proxy-Authentifizierung durch, und die Proxy-Zugangsdaten melden sich nicht an einem XMPP-Konto an. Konfigurieren Sie das XMPP-Konto nach dem Aufbau der Route und der sicheren Sitzung über den normalen Authentifizierungsablauf von Smack.
Halten Sie Beispiele innerhalb ihrer API-Generation. Die älteren konstruktorbasierten ConnectionConfiguration-Beispiele drücken dasselbe Routing-Konzept aus, aber der Builder von Smack 4.4 ist die hier verwendete Schnittstelle. Es ist nicht nötig, die Hostnamen eines veralteten Messaging-Anbieters nachzubilden, um dieses Konzept auf einen aktuellen XMPP-Dienst anzuwenden.