Python を使用して XMPP サーバーに接続しようとしています。接続する XML がありますが、接続の TLS 部分を行う方法がわかりません。HTTPS TLS の例と XMPP の例がたくさんありますが、両方を組み合わせる方法はわかりません。
TLSを使用してpythonでXMPP接続の例を持っている人はいますか? 問題が解決する場合は、talk.google.com に接続しようとしています。
まず、自分で作成するのではなく、他の人の既存の 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'>""")
等。