def get_task(id): try: pkh_str = request.headers.get('X-Bitcoin-PKH') sig_str = request.headers.get('X-Bitcoin-Sig') tstamp = int(request.headers.get('X-Timestamp')) if not check_timestamp(tstamp): return ("Clock drift", 403, {'Content-Type': 'text/plain'}) msg = util.hash_task_phdr(id, pkh_str, tstamp) if not wallet.verify_bitcoin_message(msg, sig_str, pkh_str): return ("Permission denied", 403, {'Content-Type': 'text/plain'}) except: return ("Permission denied", 403, {'Content-Type': 'text/plain'}) try: worker = db.worker_get(pkh_str) if worker is None: return ("Permission denied", 403, {'Content-Type': 'text/plain'}) task = db.task_get(id) if task is None: abort(404) db.worker_inc_req(pkh_str) except: abort(500) body = json.dumps(task, indent=2) return (body, 200, { 'Content-length': len(body), 'Content-type': 'application/json', })
def get_task(id): try: pkh_str = request.headers.get('X-Bitcoin-PKH') sig_str = request.headers.get('X-Bitcoin-Sig') tstamp = int(request.headers.get('X-Timestamp')) if not check_timestamp(tstamp): return ("Clock drift", 403, {'Content-Type':'text/plain'}) msg = util.hash_task_phdr(id, pkh_str, tstamp) if not wallet.verify_bitcoin_message(msg, sig_str, pkh_str): return ("Permission denied", 403, {'Content-Type':'text/plain'}) except: return ("Permission denied", 403, {'Content-Type':'text/plain'}) try: worker = db.worker_get(pkh_str) if worker is None: return ("Permission denied", 403, {'Content-Type':'text/plain'}) task = db.task_get(id) if task is None: abort(404) db.worker_inc_req(pkh_str) except: abort(500) body = json.dumps(task, indent=2) return (body, 200, { 'Content-length': len(body), 'Content-type': 'application/json', })
def cmd_task_get(ctx, id, pkh): # Build, hash and sign pseudo-header tstamp = int(time.time()) msg = util.hash_task_phdr(id, pkh, tstamp) sig_str = wallet.sign_bitcoin_message(msg, pkh) if not wallet.verify_bitcoin_message(msg, sig_str, pkh): print("Error: cannot self-verify signed message") sys.exit(1) # Send request to endpoint sel_url = ctx.obj["endpoint"] + "task/" + id headers = {"X-Bitcoin-PKH": pkh, "X-Bitcoin-Sig": sig_str, "X-Timestamp": str(tstamp)} answer = requests.get(url=sel_url.format(), headers=headers) print(answer.text)
def cmd_task_get(ctx, id, pkh): # Build, hash and sign pseudo-header tstamp = int(time.time()) msg = util.hash_task_phdr(id, pkh, tstamp) sig_str = wallet.sign_bitcoin_message(msg, pkh) if not wallet.verify_bitcoin_message(msg, sig_str, pkh): print("Error: cannot self-verify signed message") sys.exit(1) # Send request to endpoint sel_url = ctx.obj['endpoint'] + 'task/' + id headers = { 'X-Bitcoin-PKH': pkh, 'X-Bitcoin-Sig': sig_str, 'X-Timestamp': str(tstamp), } answer = requests.get(url=sel_url.format(), headers=headers) print(answer.text)