Smack 4.4 ਵਿੱਚ ProxyInfo ਨਾਲ XMPP ਪ੍ਰੌਕਸੀ ਸੈਟਿੰਗਾਂ
ProxyInfo ਨੂੰ XMPP ਕਨੈਕਸ਼ਨ ਬਿਲਡਰ ਨਾਲ ਜੋੜੋ, ਪ੍ਰੌਕਸੀ, ਸੇਵਾ-ਡੋਮੇਨ ਅਤੇ ਸਰਵਰ-ਹੋਸਟ ਲਈ ਵੱਖਰੀਆਂ ਸੈਟਿੰਗਾਂ ਨਾਲ।
ਉਸ ਕਨੈਕਸ਼ਨ ਨੂੰ ਕਨਫਿਗਰ ਕਰੋ ਜੋ ਅਸਲ ਵਿੱਚ XMPP ਸਟ੍ਰੀਮ ਲੈ ਕੇ ਜਾਂਦਾ ਹੈ। ਕਿਸੇ ਅਸੰਬੰਧਿਤ URLConnection ਉੱਤੇ ਪ੍ਰੌਕਸੀ ਸੈਟ ਕਰਨਾ Smack ਦੇ TCP ਕਨੈਕਸ਼ਨ ਨੂੰ ਮੈਸੇਜਿੰਗ ਸੇਵਾ ਵੱਲ ਰੀਡਾਇਰੈਕਟ ਨਹੀਂ ਕਰਦਾ।
Smack 4.4 HTTP, SOCKS4 ਅਤੇ SOCKS5 ਲਈ ProxyInfo ਫੈਕਟਰੀਆਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਨਤੀਜੇ ਵਜੋਂ ਮਿਲੀ ਆਬਜੈਕਟ ਨੂੰ XMPP ਕਨੈਕਸ਼ਨ ਬਿਲਡਰ ਨਾਲ ਜੋੜੋ:
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();ਇਹ ਮੌਜੂਦਾ Smack 4.4 ਸੈਟਅਪ ਲਈ ਕਨਫਿਗਰੇਸ਼ਨ ਟੁਕੜਾ ਹੈ। ਆਲੇ-ਦੁਆਲੇ ਦੀ ਐਪਲੀਕੇਸ਼ਨ ਬਿਲਡਰ ਦੇ ਚੈਕਡ ਐਕਸੈਪਸ਼ਨ ਸੰਭਾਲਦੀ ਹੈ ਅਤੇ ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣ ਪੱਤਰ ਦਿੰਦੀ ਹੈ। ਸਪੱਸ਼ਟ ਹੋਸਟ ਅਤੇ ਪੋਰਟ XMPP ਸੇਵਾ ਦੇ ਅਸਲ TCP ਅੰਤ ਬਿੰਦੂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ।
ਵੱਖਰੀਆਂ ਭੂਮਿਕਾਵਾਂ ਵਾਲੇ ਤਿੰਨ ਨਾਮ ਹਨ:
proxy.example.netਉਹ ਵਿਚੋਲਾ ਹੈ ਜੋ ਸ਼ੁਰੂਆਤੀ ਕਨੈਕਸ਼ਨ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ।xmpp-node.example.netਉਹ ਸਰਵਰ ਅੰਤ ਬਿੰਦੂ ਹੈ ਜਿੱਥੇ ਪ੍ਰੌਕਸੀ ਨੂੰ ਪਹੁੰਚਣ ਲਈ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।chat.example.netXMPP ਸੇਵਾ ਡੋਮੇਨ ਹੈ, ਜਿਵੇਂ ਖਾਤੇ ਦੀ JID ਵਿੱਚ@ਤੋਂ ਬਾਅਦ ਦਾ ਡੋਮੇਨ।
ਇੱਕ ਸੇਵਾ ਆਖਰੀ ਦੋ ਲਈ ਇੱਕੋ ਨਾਮ ਵਰਤ ਸਕਦੀ ਹੈ, ਪਰ ਪ੍ਰੌਕਸੀ ਹੋਸਟਨਾਮ ਉਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਦੀ ਥਾਂ ਨਹੀਂ ਲੈਂਦਾ। ਕਨੈਕਸ਼ਨ ਵਿੱਚ ਅਤੇ ਇਸਦੀ TLS ਪੁਸ਼ਟੀ ਵਿੱਚ ਲੋੜੀਂਦੀ XMPP ਸੇਵਾ ਪਛਾਣ ਬਣਾਈ ਰੱਖੋ।
HTTP ਪ੍ਰੌਕਸੀ ਲਈ ਢੁਕਵੇਂ ਪ੍ਰੌਕਸੀ ਪੋਰਟ ਅਤੇ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਨਾਲ ProxyInfo.forHttpProxy ਵਰਤੋ। ਉਸ ਮਾਰਗ ਲਈ ਇੱਕ ਪ੍ਰੌਕਸੀ ਚਾਹੀਦੀ ਹੈ ਜੋ XMPP ਕਨੈਕਸ਼ਨ ਨੂੰ ਟਨਲ ਕਰ ਸਕੇ ਅਤੇ ਇਸਦੇ ਮੰਜ਼ਿਲ ਪੋਰਟ ਦੀ ਆਗਿਆ ਦੇਵੇ। HTTPS ਵੈੱਬ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸੰਭਾਲਣ ਵਾਲੀ ਪ੍ਰੌਕਸੀ 5222 ਉੱਤੇ XMPP ਸੇਵਾ ਲਈ TCP ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਮਨਜ਼ੂਰ ਨਹੀਂ ਕਰਦੀ।
ਟੁਕੜੇ ਵਿੱਚ ਲੋੜੀਂਦਾ ਸੁਰੱਖਿਆ ਮੋਡ TLS ਨੂੰ XMPP ਕਨੈਕਸ਼ਨ ਦੀ ਸ਼ਰਤ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣਿਕਤਾ ਨਹੀਂ ਕਰਦਾ, ਅਤੇ ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣ ਪੱਤਰ XMPP ਖਾਤੇ ਵਿੱਚ ਲੌਗਇਨ ਨਹੀਂ ਕਰਦੇ। ਮਾਰਗ ਅਤੇ ਸੁਰੱਖਿਅਤ ਸੈਸ਼ਨ ਸਥਾਪਿਤ ਕਰਨ ਤੋਂ ਬਾਅਦ Smack ਦੇ ਆਮ ਪ੍ਰਮਾਣਿਕਤਾ ਪ੍ਰਵਾਹ ਰਾਹੀਂ XMPP ਖਾਤਾ ਕਨਫਿਗਰ ਕਰੋ।
ਉਦਾਹਰਣਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੀ API ਪੀੜ੍ਹੀ ਦੇ ਅੰਦਰ ਰੱਖੋ। ਪੁਰਾਣੀਆਂ ਕੰਸਟ੍ਰਕਟਰ-ਅਧਾਰਿਤ ConnectionConfiguration ਉਦਾਹਰਣਾਂ ਉਹੀ ਰਾਊਟਿੰਗ ਧਾਰਨਾ ਪ੍ਰਗਟ ਕਰਦੀਆਂ ਹਨ, ਪਰ ਇੱਥੇ ਵਰਤਿਆ ਇੰਟਰਫੇਸ Smack 4.4 ਦਾ ਬਿਲਡਰ ਹੈ। ਉਸ ਧਾਰਨਾ ਨੂੰ ਮੌਜੂਦਾ XMPP ਸੇਵਾ ਉੱਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਪੁਰਾਣੇ ਮੈਸੇਜਿੰਗ ਪ੍ਰਦਾਤਾ ਦੇ ਹੋਸਟਨਾਮ ਦੁਬਾਰਾ ਬਣਾਉਣ ਦੀ ਲੋੜ ਨਹੀਂ।