def readFile(fn): logging.info("Reading file "+fn) s=open(fn).read() is_json=False try: J=json.loads(s) is_json=True except Exception: logging.info("Not a JSON file. Interpreting as raw (proposal) data.") obj=buv_types.ProposalText(s, fn) if is_json: try: obj=buv_types.constructJSON[J["type"]](s, fn, False) #obj_str=json.dumps(obj.asJSON(), encoding='utf-8', ensure_ascii=True)) except buv_types.InvalidSignatureError: logging.warning("Invalid signature. Ignoring.") return if obj.sha256 in all_data: logging.warning("Object %s with hash %s has already been loaded." % (obj, obj.sha256)) else: incrementalValidateAndAdd(obj)
"proposal_meta" : proposal_meta_hash, "signature" : signature } js=json_pretty(j) sha256=bitcoin.sha256(js) outf="incoming/%s-vote.json" % sha256 with open(outf, "w") as f: f.write(js) try: vote=Vote.fromJSON(js, outf, False) except InvalidSignatureError, e: abort(404, "Vote has invalid signature.") # FIXME: send proper message back to user if not validate.incrementalValidateAndAdd(vote): # FIXME/NOTE: Removing vote file might be wrong here (in case it is valid and already exists) abort(404, "Vote invalid.") return template("submit_success") def registerWebserver(subparsers): parser=subparsers.add_parser("webserver") parser.add_argument("-d", "--debug", action='store_true', help="Bottle debug flag") parser.add_argument("--filelist", metavar="JSON-FILE", required=True) parser.add_argument("--genesis-members", metavar="HASH", required=True) parser.add_argument("--serve-root", metavar="DIRECTORY", required=True) parser.set_defaults(func=serve) def serve(args): global serve_root