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 i = 3 12 if sys.argv[i] == "--to": 13 to = sys.argv[i+1] 14 i += 2 15 else: 16 to = None 17 if sys.argv[i] == "--forward": 18 forwarder = sys.argv[i+1] 19 i += 2 20 else: 21 forwarder = None 22 url = sys.argv[i] + "?action=PostMessage" 23 type = sys.argv[i+1] 24 action = sys.argv[i+2] 25 args = sys.argv[i+3:] 26 except IndexError: 27 args = None 28 29 if not args: 30 print >>sys.stderr, "Need a signer, recipient, URL, update type, action and some updates as arguments to this program." 31 print >>sys.stderr, "Syntax:" 32 print >>sys.stderr, sys.argv[0], "<signing keyid> <recipient keyid> " \ 33 "[ --forward <signing keyid> ] <URL> " \ 34 "<update type> <action> <update>..." 35 sys.exit(1) 36 37 message = Message() 38 parts = [] 39 40 for arg in args: 41 part = MIMEText(arg, "moin", sys.stdin.encoding) 42 if type == "collection": 43 part["Update-Action"] = action 44 message.add_update(part) 45 else: 46 parts.append(part) 47 48 if type != "collection": 49 multipart = message.get_update(parts) 50 multipart["Update-Action"] = action 51 message.add_update(multipart) 52 53 email_message = message.get_payload() 54 gpg = GPG() 55 56 try: 57 signed_message = gpg.signMessage(email_message, signer) 58 message_to_send = gpg.encryptMessage(signed_message, recipient) 59 60 # Forwarded messages should be timestamped and must be directed to a 61 # message store. 62 63 if forwarder: 64 timestamp(message_to_send) 65 message_to_send["Update-Action"] = "store" 66 message_to_send = gpg.signMessage(message_to_send, forwarder) 67 68 # An explicit recipient can also be added. 69 70 if to: 71 message_to_send["To"] = to 72 73 resp = sendMessage(message_to_send, url) 74 print resp 75 76 except MoinMessageError, exc: 77 print >>sys.stderr, exc 78 79 # vim: tabstop=4 expandtab shiftwidth=4