def start_verify_server(): count = input("Enter number of verifiers to run " \ "(press enter for all configured in ini file): ") try: count = int(count) if count == 0: print( 'Verifier Server quitting, since number of verifiers is zero..!!' ) sys.exit(0) except ValueError: count = None try: conf_reader = ConfigReader() iNode = conf_reader.get_iota_node_config() device = conf_reader.get_device_config() verifier = conf_reader.get_verifier_server_config() except ConfigurationMissing as e: print("%s \n\n ... Exiting " % (str(e), )) sys.exit(0) iota_node_address = iNode.addr iota_port = iNode.port recv_addr = device.recv_addr verifier_server = verifier.serv_addr verifier_server_port = verifier.serv_port iota_host = 'http://{0}:{1}'.format(iota_node_address, iota_port) verifier_names = [ item for item in conf_reader.sections() if item.startswith('V_') ] if count == None: count = len(verifier_names) verifier_iota = {} for i in range(count): _ver = verifier_names[i] try: verifier = conf_reader.get_verifiers_config(_ver) except ConfigurationMissing as e: print(str(e)) continue verifier_id = verifier.id if verifier.id else 'Verifier-{id}'.format( id=i) class_name = verifier.class_name _seed = verifier.seed push_back = verifier.push_back verify_server = eval( 'verifiers.{cls_name}'.format(cls_name=class_name)) # TBD _obj = verify_server(verifier_id, iota_host, _seed, push_back) verifier_iota[verifier_id] = _obj # Start our server for listening to verifier calls sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((verifier_server, verifier_server_port)) sock.listen() try: while True: print("Waiting for new connections ..") connection, client_address = sock.accept() print("\n .. Received New Connection from : %s" % (str(client_address), )) while True: _b_msg = connection.recv(14) curr_msg = _b_msg.decode('utf-8') print("\n .. Received from the IOTA subscriber : %s \n" % (curr_msg, )) if curr_msg: all_msgs = curr_msg.split('/') for one_msg in all_msgs: if not one_msg: continue message_id = one_msg for (i, o) in verifier_iota.items(): print(".. Called verifier %s on the data .." % (i, )) o.run(msg_id=message_id) else: break except KeyboardInterrupt: sock.close() print('\n\n... Verifier server not running anymore')