1

Python を使用して XMPP サーバーに接続しようとしています。接続する XML がありますが、接続の TLS 部分を行う方法がわかりません。HTTPS TLS の例と XMPP の例がたくさんありますが、両方を組み合わせる方法はわかりません。

TLSを使用してpythonでXMPP接続の例を持っている人はいますか? 問題が解決する場合は、talk.google.com に接続しようとしています。

4

1 に答える 1

4

まず、自分で作成するのではなく、他の人の既存の XMPPライブラリを使用してください。もうたくさんあります。SleekXMPPから始めます。

質問に答えるには、 Start-TLS を実行するときにssl.wrap_socketを呼び出します。例えば:

import socket
import ssl

sock = socket.create_connection(("example.com", 5222))
sock.write("""<stream:stream
                 to='example.com'
                 version='1.0'
                 xml:lang='en'
                 xmlns='jabber:client'
                 xmlns:stream='http://etherx.jabber.org/streams'>""")
sock.recv(1000) # reads the stream:stream and stream:features.  Obviously bad code, to get the point accross
sock.write("<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>")
sock.recv(1000) # read the proceed
ssl_sock = ssl.wrap_socket(sock)
ssl_sock.write("""<stream:stream
                 to='example.com'
                 version='1.0'
                 xml:lang='en'
                 xmlns='jabber:client'
                 xmlns:stream='http://etherx.jabber.org/streams'>""")

等。

于 2012-06-07T07:45:16.077 に答える