1 #!/usr/bin/env python 2 3 import libxml2dom.xmpp 4 import sys 5 6 sender = "sender" in sys.argv 7 receiver = "receiver" in sys.argv 8 if not (sender or receiver): 9 print "Please specify sender or receiver." 10 sys.exit(1) 11 12 if len(sys.argv) > 2: 13 peer = sys.argv[2] 14 elif sender: 15 peer = "paulb@localhost/receiver" 16 17 s = libxml2dom.xmpp.Session(("localhost", 5222)) 18 d = s.connect("localhost") 19 print "---- 1 ----" 20 print d.toString() 21 22 auth = s.createAuth() 23 auth.mechanism = "PLAIN" 24 auth.setCredentials("paulb@localhost", "paulb", "jabber") 25 s.send(auth) 26 print "---- 2 ----" 27 d = s.receive() 28 print "---- 3 ----" 29 print d.toString() 30 31 if d.localName == "failure": 32 if d.reason == "not-authorized": 33 print "Not authorized: must register first!" 34 s.disconnect() 35 sys.exit(1) 36 37 d = s.connect("localhost") 38 print "---- 4 ----" 39 print d.toString() 40 41 iq = s.createIq() 42 iq.makeBind() 43 if sender: 44 iq.bind.resource = "sender" 45 else: 46 iq.bind.resource = "receiver" 47 s.send(iq) 48 print "---- 5 ----" 49 d = s.receive() 50 print "---- 6 ----" 51 print d.toString() 52 53 iq = s.createIq() 54 iq.makeSession("localhost") 55 s.send(iq) 56 print "---- 7 ----" 57 d = s.receive() 58 print "---- 8 ----" 59 print d.toString() 60 61 if sender: 62 message = s.createMessage() 63 message.from_ = "paulb@localhost/sender" 64 message.to = peer 65 message.type = "chat" 66 message.body = message.createBody() 67 text = message.ownerDocument.createTextNode("Hello!") 68 message.body.appendChild(text) 69 print "Sending..." 70 print message.toString() 71 s.send(message) 72 d = s.receive() 73 74 if receiver: 75 while 1: 76 print "Listening..." 77 doc = s.receive() 78 print doc.toString() 79 print 80 print "From:", doc.from_ 81 print "To:", doc.to 82 print "Type:", doc.type 83 print 84 if doc.localName == "message": 85 print "Message..." 86 if doc.type == "chat" and doc.body: 87 print doc.body.textContent 88 elif doc.event: 89 print "Composing?", doc.event.composing 90 print "Delivered?", doc.event.delivered 91 print "Displayed?", doc.event.displayed 92 print "Offline?", doc.event.offline 93 print "Id:", doc.event.id 94 elif doc.localName == "presence": 95 print "Presence..." 96 if doc.type == "subscribe": 97 presence = s.createPresence() 98 presence.type = "subscribed" 99 presence.from_ = doc.to 100 presence.to = doc.from_ 101 print "Sending..." 102 print presence.toString() 103 s.send(presence) 104 d = s.receive() 105 print 106 107 # vim: tabstop=4 expandtab shiftwidth=4