def generate_poa(self, swarm_id, perm_id): """ Generate a POA if the swarm-id private key is available """ status = Status.get_status_holder("LivingLab") # Randomly allow 80% to be authorized... if random.randint(0, 100) > 80: status.create_and_add_event("denied", [swarm_id, perm_id]) status.get_status_element("poas_failed").inc() raise Exception("Randomly denied...") key_file = os.path.join(KEY_PATH, swarm_id + ".tkey") if not os.path.exists(key_file): raise Exception("Missing key file") # Load keys try: torrent_keypair = ClosedSwarm.read_cs_keypair(key_file) except Exception as e: raise Exception("Bad torrent key file") # TODO? Sanity - check that this key matches the torrent poa = ClosedSwarm.create_poa(swarm_id, torrent_keypair, perm_id) status.create_and_add_event("allowed", [swarm_id, perm_id]) status.get_status_element("poas_generated").inc() return poa.serialize()
config['key_file'] = torrent + ".tkey" if not os.path.exists(config['key_file']): print "Error: Could not find key file '%s'"%config['key_file'] raise SystemExit(1) # Load the torrent file try: t = TorrentDef.load(torrent) except Exception,e: print "Bad torrent file:",e raise SystemExit(1) if not t.get_cs_keys(): print "Not a closed swarm torrent" raise SystemExit(1) try: torrent_keypair = ClosedSwarm.read_cs_keypair(config['key_file']) except Exception,e: print "Bad torrent key file",e raise SystemExit(1) # Need permid of the receiving node if not config['node_id']: print "Missing nodeid" raise SystemExit(1) create_poa(t, torrent_keypair, config['node_id'], config['output_file'])
if not config['key_file']: config['key_file'] = torrent + ".tkey" if not os.path.exists(config['key_file']): print "Error: Could not find key file '%s'"%config['key_file'] raise SystemExit(1) # Load the torrent file try: t = TorrentDef.load(torrent) except Exception,e: print "Bad torrent file:",e raise SystemExit(1) if not t.get_cs_keys(): print "Not a closed swarm torrent" raise SystemExit(1) try: torrent_keypair = ClosedSwarm.read_cs_keypair(config['key_file']) except Exception,e: print "Bad torrent key file",e raise SystemExit(1) # Need permid of the receiving node if not config['node_id']: print "Missing nodeid" raise SystemExit(1) create_poa(t, torrent_keypair, config['node_id'], config['output_file'])