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