1 #!/usr/bin/env python 2 3 from MoinMessage import * 4 from email.mime.text import MIMEText 5 from email.parser import Parser 6 import sys 7 8 try: 9 from cStringIO import StringIO 10 except ImportError: 11 from StringIO import StringIO 12 13 if __name__ == "__main__": 14 try: 15 signer = sys.argv[1] 16 recipient = sys.argv[2] 17 url = sys.argv[3] + "?action=FetchMessages" 18 args = sys.argv[4:] 19 except IndexError: 20 args = None 21 22 if not args: 23 print >>sys.stderr, "Need a signer, recipient, URL and some commands as arguments to this program." 24 sys.exit(1) 25 26 message = Message() 27 parts = [] 28 29 part = MIMEText("\n".join(args), "plain", sys.stdin.encoding) 30 message.add_update(part) 31 32 email_message = message.get_payload() 33 gpg = GPG() 34 35 try: 36 signed_message = gpg.signMessage(email_message, signer) 37 encrypted_message = gpg.encryptMessage(signed_message, recipient) 38 text = sendMessage(encrypted_message, url, "PUT") 39 mailbox = Parser().parse(StringIO(text)) 40 41 if is_encrypted(mailbox): 42 text = gpg.decryptMessage(mailbox) 43 mailbox = Parser().parse(StringIO(text)) 44 45 if is_signed(mailbox): 46 fingerprint, identity, content = gpg.verifyMessage(mailbox) 47 print "Messages signed by", fingerprint, identity 48 else: 49 print "Message not signed!" 50 51 print 52 print content 53 54 except MoinMessageError, exc: 55 print exc 56 57 # vim: tabstop=4 expandtab shiftwidth=4