Exemplo n.º 1
0
Arquivo: data.py Projeto: awemany/buv
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)
Exemplo n.º 2
0
Arquivo: web.py Projeto: awemany/buv
        "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