#!/usr/bin/env python import hashlib,argparse,json,sys,os from datetime import datetime from shutil import copyfile parser = argparse.ArgumentParser(description='Flees share template generator') parser.add_argument('-n','--name', action="store", dest="name", required = True) parser.add_argument('-p','--path', action="store", dest="path", required = True,help= "path relative to data folder") parser.add_argument('-P','--public', action="store_true", dest="public", default = False) parser.add_argument('-u','--upload', action="store_true", dest="upload", default = False) parser.add_argument('-o','--overwrite', action="store_false", dest="overwrite", default = True, help = "Allow file overwrites") parser.add_argument('-d','--direct', action="store_true", dest="direct", default = False, help = "Allow direct file sharing (password hash included in URL)") parser.add_argument('--pass-plain', action="store", dest="plain", default = False) parser.add_argument('--pass-hashed', action="store", dest="hashed", default = False) parser.add_argument('-e','--expire', action="store", dest="expire", default = False, help = "expire date in format 2018-12-24 21:00") parser.add_argument('-s','--shares', action="store", dest="shares", default = False, help = "Your current shares.json file") parser.add_argument('-i','--insert', action="store_true", dest="insert", default = False, help = "If 'shares' defined, insert new share directly in the shares.json file") opts = parser.parse_args() share = { 'name': opts.name, 'path': opts.path, 'public': opts.public, 'upload': opts.upload, 'overwrite': opts.overwrite, 'direct_links': opts.direct, } if opts.plain: share.update({ 'pass_plain': opts.plain }) if opts.hashed: share.update({ 'pass_hash': hashlib.sha1(opts.hashed).hexdigest() }) if opts.expire: try: date_object = datetime.strptime(opts.expire,"%Y-%m-%d %H:%M") except ValueError as e: print(e) sys.exit(1) share.update({ 'expire': opts.expire }) if opts.shares: if os.path.exists(opts.shares): shares = json.load(open(opts.shares,'rt')) else: shares = [] shares.append(share) if opts.insert: print("creating backup %s"%(opts.shares+".bkp",)) copyfile(opts.shares,opts.shares+".bkp") with open(opts.shares,'wt') as fp: json.dump(shares, fp, indent = 2, sort_keys = True) print("Wrote file %s"%(opts.shares,)) else: print(json.dumps(shares, indent = 2, sort_keys = True)) else: print(json.dumps(share, indent = 2, sort_keys = True))