1 # -*- coding: iso-8859-1 -*- 2 """ 3 sendfiles - Send files using MoinMessage 4 5 @copyright: 2013, 2014 by Paul Boddie <paul@boddie.org.uk> 6 @license: GNU GPL (v2 or later), see COPYING.txt for details. 7 """ 8 9 from MoinMessage import Message, GPG, sendMessage, timestamp 10 from email.mime.application import MIMEApplication 11 from os.path import split 12 import sys 13 14 def readfile(filename): 15 f = open(filename, "rb") 16 try: 17 return MIMEApplication(f.read()) 18 finally: 19 f.close() 20 21 if __name__ == "__main__": 22 try: 23 recipient = sys.argv[1] 24 signer = sys.argv[2] 25 url = sys.argv[3] 26 args = sys.argv[4:] 27 except IndexError: 28 args = None 29 30 if not args: 31 print >>sys.stderr, """\ 32 Need a recipient key identifier, signing key identifier, the destination URL, 33 and some filenames for transfer as arguments to this program. 34 """ 35 sys.exit(1) 36 37 # Bundle files into a message. 38 39 message = Message() 40 41 for arg in args: 42 part = readfile(arg) 43 part["Content-Disposition"] = split(arg)[-1] 44 part["Update-Action"] = "store" 45 message.add_update(part) 46 47 # Get the e-mail message itself. 48 49 email_message = message.get_payload() 50 51 # Sign, encrypt, sign and send the message. 52 53 gpg = GPG() 54 signed_message = gpg.signMessage(email_message, signer) 55 encrypted_message = gpg.encryptMessage(signed_message, recipient) 56 57 timestamp(encrypted_message) 58 encrypted_message["Update-Action"] = "store" 59 message_to_send = gpg.signMessage(encrypted_message, signer) 60 61 resp = sendMessage(message_to_send, url) 62 63 print resp 64 65 # vim: tabstop=4 expandtab shiftwidth=4