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