paul@6 | 1 | #!/usr/bin/env python |
paul@6 | 2 | |
paul@6 | 3 | from MoinMessage import * |
paul@6 | 4 | from email.mime.text import MIMEText |
paul@6 | 5 | import sys |
paul@6 | 6 | |
paul@6 | 7 | if __name__ == "__main__": |
paul@16 | 8 | try: |
paul@16 | 9 | signer = sys.argv[1] |
paul@16 | 10 | recipient = sys.argv[2] |
paul@45 | 11 | if sys.argv[3] == "--forward": |
paul@45 | 12 | forwarder = sys.argv[4] |
paul@45 | 13 | i = 5 |
paul@45 | 14 | else: |
paul@45 | 15 | forwarder = None |
paul@45 | 16 | i = 3 |
paul@45 | 17 | url = sys.argv[i] + "?action=PostMessage" |
paul@45 | 18 | type = sys.argv[i+1] |
paul@45 | 19 | action = sys.argv[i+2] |
paul@45 | 20 | args = sys.argv[i+3:] |
paul@16 | 21 | except IndexError: |
paul@16 | 22 | args = None |
paul@11 | 23 | |
paul@11 | 24 | if not args: |
paul@16 | 25 | print >>sys.stderr, "Need a signer, recipient, URL, update type, action and some updates as arguments to this program." |
paul@45 | 26 | print >>sys.stderr, "Syntax:" |
paul@45 | 27 | print >>sys.stderr, sys.argv[0], "<signing keyid> <recipient keyid> " \ |
paul@45 | 28 | "[ --forward <signing keyid> ] <URL> " \ |
paul@45 | 29 | "<update type> <action> <update>..." |
paul@11 | 30 | sys.exit(1) |
paul@6 | 31 | |
paul@6 | 32 | message = Message() |
paul@16 | 33 | parts = [] |
paul@11 | 34 | |
paul@11 | 35 | for arg in args: |
paul@16 | 36 | part = MIMEText(arg, "moin", sys.stdin.encoding) |
paul@16 | 37 | if type == "collection": |
paul@16 | 38 | part["Update-Action"] = action |
paul@16 | 39 | message.add_update(part) |
paul@16 | 40 | else: |
paul@16 | 41 | parts.append(part) |
paul@16 | 42 | |
paul@16 | 43 | if type != "collection": |
paul@16 | 44 | multipart = message.get_update(parts) |
paul@16 | 45 | multipart["Update-Action"] = action |
paul@16 | 46 | message.add_update(multipart) |
paul@11 | 47 | |
paul@6 | 48 | email_message = message.get_payload() |
paul@8 | 49 | gpg = GPG() |
paul@6 | 50 | |
paul@6 | 51 | try: |
paul@8 | 52 | signed_message = gpg.signMessage(email_message, signer) |
paul@45 | 53 | message_to_send = gpg.encryptMessage(signed_message, recipient) |
paul@45 | 54 | |
paul@45 | 55 | # Forwarded messages should be timestamped and must be directed to a |
paul@45 | 56 | # message store. |
paul@45 | 57 | |
paul@45 | 58 | if forwarder: |
paul@45 | 59 | timestamp(message_to_send) |
paul@45 | 60 | message_to_send["Update-Action"] = "store" |
paul@45 | 61 | message_to_send = gpg.signMessage(message_to_send, forwarder) |
paul@45 | 62 | |
paul@45 | 63 | print sendMessage(message_to_send, url) |
paul@45 | 64 | |
paul@6 | 65 | except MoinMessageError, exc: |
paul@6 | 66 | print exc |
paul@6 | 67 | |
paul@6 | 68 | # vim: tabstop=4 expandtab shiftwidth=4 |