كيفية التحقق مما إذا كان خادم دعم بروتوكول XMPP؟

StackOverflow https://stackoverflow.com/questions/1093317

  •  11-09-2019
  •  | 
  •  

سؤال

أبحث عن طريقة للتحقق مما إذا كان الخادم يدعم بروتوكول XMPP، أي خادم XMPP يعمل على هذا المجال.

ربما تحقق DNS الخاص أو شيء من هذا القبيل؟

هل كانت مفيدة؟

المحلول

يجب أن تدعم معظم خوادم XMPP واحدة على الأقل من سجلات DNS SRV هذه:

  • _xmpp-server._tcp..example.com
  • _xmpp-client._tcp..example.com

قد لا تحتوي بعض الخوادم على هذه السجلات المنشورة، لكن معظم هؤلاء لن يرغبوا في التحدث إلى العالم الخارجي. كمثال، يمكنك استخدام "Dig" في سطر الأوامر للتحقق من مجال، مثل هذا:

% dig +short -t SRV _xmpp-server._tcp.gmail.com.
20 0 5269 xmpp-server2.l.google.com.
20 0 5269 xmpp-server3.l.google.com.
20 0 5269 xmpp-server4.l.google.com.
5 0 5269 xmpp-server.l.google.com.
20 0 5269 xmpp-server1.l.google.com.

تتخلص "+ قصير" من تفاصيل DNS، "-T SRV" يقول أننا نريد سجلات SRV، وتقول النقطة في النهاية لتجاهل إعدادات اسم المجال المحلي.

(إضافة استجابة لاستجابة @ user188719) إذا لم تجد سجل SRV، فيمكنك تجربة استخدام اسم المجال الأصلي، وتحقيق توصيل منفذ 5222 لاتصالات العميل أو 5269 لاتصالات الخادم.

بمجرد أن يكون لديك اسم المضيف ورقم المنفذ للاتصال به، يمكنك استخدامه telnet hostname port لمعرفة ما إذا كان هناك عملية تستمع هناك. ومع ذلك، للكشف حقا إذا كان خادم XMPP في هذا المضيف / المنفذ، أرسل في بداية دفق XMPP. nc أو netcat تقديم آلية مريحة لهذا. مثال لشيك خادم إلى خادم:

% echo "<stream:stream to='gmail.com' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams' xmlns:db='jabber:server:dialback'>" | nc xmpp-server.l.google.com 5269
<stream:stream id="0A44AFB86521393A" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:server" xmlns:db="jabber:server:dialback">

نصائح أخرى

بعد شرح جو، أنا شخصيا سوف تحقق من سجلات SRV وتراجع إلى اتصال سريع (مهلة قصيرة) عبر المنفذ 5269. ثم ذاكرة التخزين المؤقت النتيجة.

يمكنك تجربة Imtrends: http://www.process-one.net/en/imtrends/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top