Frage

Ich bin auf der Suche nach einem Weg, um zu überprüfen, ob ein Server Unterstützung XMPP-Protokoll ist, das heißt xmpp-Server auf dieser Domäne ausgeführt wird.

Vielleicht spezielle DNS-Überprüfung oder so etwas?

War es hilfreich?

Lösung

Die meisten XMPP-Server sollten mindestens einen dieser DNS-SRV-Einträge unterstützen:

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

Einige Server möglicherweise nicht über diese Aufzeichnungen veröffentlicht, aber die meisten von denen wollen nicht an die Außenwelt sprechen. Als Beispiel können Sie „graben“ in der Befehlszeile verwenden, um eine Domain zu überprüfen, wie folgt aus:

% 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.

„+ short“ wird von vielen DNS Details befreien „-t SRV“, sagt wollen wir SRV-Einträge, und der Punkt am Ende sagt Ihren lokalen Domain-Namen-Einstellungen zu ignorieren.

(Hinzufügen in Reaktion auf @ user188719) Wenn Sie nicht über einen SRV-Eintrag finden, können Sie den ursprünglichen Domain-Namen versuchen, mit und unter der Annahme Port 5222 für Client-Verbindungen oder 5269 für Server-Verbindungen.

Wenn Sie den Hostnamen und die Portnummer muss eine Verbindung herstellen, können Sie telnet hostname port verwenden, um zu sehen, ob es einen Prozess gibt hören ist. Um jedoch wirklich zu erkennen, ob es sich um eine XMPP-Server auf diesem Host / Port ist, in dem Start eines XMPP-Stream zu senden. nc oder netcat bietet einen bequemen Mechanismus dafür. Beispiel für einen Server-zu-Server-Check:

% 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">

Andere Tipps

Nach Joes Erklärung, ich persönlich würde SRV-Datensätze überprüfen und fallen zurück auf eine schnelle (kurze Timeout) verbinden Prüfung auf Port 5269. Dann das Ergebnis zwischenspeichern.

Sie können IMtrends versuchen: http://www.process-one.net/en / imtrends /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top