2012-06-07 6 views
1

파이썬을 사용하여 XMPP 서버에 연결하려고합니다. 연결할 XML이 있는데 연결의 TLS 부분을 수행하는 방법을 모르겠습니다. HTTPS TLS에 대한 많은 예제와 XMPP에 대한 예제는 둘 다 함께 쓰는 방법이 아닙니다.파이썬 TLS 핸드 셰이크 XMPP

TLS를 사용하여 파이썬에서 XMPP 연결의 예가 있습니까? 도움이된다면 talk.google.com에 연결하려고합니다.

답변

4

먼저 다른 사람의 기존 XMPP library을 사용하여 직접 작성하십시오. 벌써 많이있다. 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'>""") 

: 예를 들어,