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 # Encrypt, sign and send the message. 52 53 gpg = GPG() 54 encrypted_message = gpg.encryptMessage(email_message, recipient) 55 56 timestamp(encrypted_message) 57 encrypted_message["Update-Action"] = "store" 58 message_to_send = gpg.signMessage(encrypted_message, signer) 59 60 resp = sendMessage(message_to_send, url) 61 62 print resp 63 64 # vim: tabstop=4 expandtab shiftwidth=4