הגדרות פרוקסי XMPP ב-Smack 4.4 עם ProxyInfo
צרפו את ProxyInfo לבנאי חיבור ה-XMPP, עם הגדרות נפרדות לפרוקסי, לתחום השירות ולמארח השרת.
הגדירו את החיבור שמוביל בפועל את זרם ה-XMPP. הגדרת פרוקסי על URLConnection לא קשור אינה מפנה את חיבור ה-TCP של Smack לשירות ההודעות.
Smack 4.4 מספק מפעלים ProxyInfo עבור HTTP, SOCKS4 ו-SOCKS5. צרפו את האובייקט המתקבל לבנאי חיבור ה-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 קיימת. היישום העוטף מטפל בחריגות הנבדקות של הבנאי ומספק את אישורי הפרוקסי. המארח והפורט המפורשים מייצגים את נקודת הקצה האמיתית של TCP של שירות ה-XMPP.
ישנם שלושה שמות עם תפקידים שונים:
proxy.example.netהוא המתווך שמקבל את החיבור הראשוני.xmpp-node.example.netהוא נקודת הקצה של השרת שאליה הפרוקסי מתבקש להגיע.chat.example.netהוא תחום השירות של XMPP, כגון התחום שאחרי@ב-JID של חשבון.
שירות יכול להשתמש באותו שם לשניים האחרונים, אך שם מארח של פרוקסי אינו מחליף אף אחד מהם. שמרו על זהות שירות ה-XMPP המיועדת בחיבור ובאימות ה-TLS שלו.
עבור פרוקסי HTTP השתמשו ב-ProxyInfo.forHttpProxy עם פורט הפרוקסי ואישורי הפרוקסי המתאימים. מסלול זה דורש פרוקסי שמסוגל לתעל את חיבור ה-XMPP ולהתיר את פורט היעד שלו. פרוקסי שמטפל בגלישה באתרי HTTPS אינו מתיר אוטומטית חיבורי TCP לשירות XMPP בפורט 5222.
מצב האבטחה הנדרש בקטע הופך את TLS לתנאי של חיבור ה-XMPP. הוא אינו מבצע אימות פרוקסי, ואישורי הפרוקסי אינם מתחברים לחשבון XMPP. הגדירו את חשבון ה-XMPP דרך זרימת האימות הרגילה של Smack לאחר הקמת המסלול והחיבור המאובטח.
השאירו דוגמאות בתוך דור ה-API שלהן. דוגמאות ConnectionConfiguration הישנות המבוססות על בנאי מבטאות את אותו רעיון ניתוב, אך הבנאי של Smack 4.4 הוא הממשק המשמש כאן. אין צורך לשחזר שמות מארח של ספק הודעות מיושן כדי ליישם את הרעיון הזה על שירות XMPP נוכחי.