# check for open port s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) if s.connect_ex((host, port)) != 0: raise Exception('No wallet or daemon RPC on port ' + str(port)) s.close() # both wallet and daemon have a get_version JSON RPC rpc = framework.rpc.JSONRPC('{protocol}://{host}:{port}'.format(protocol=scheme, host=host, port=port)) get_version = { 'method': 'get_version', 'jsonrpc': '2.0', 'id': '0' } try: res = rpc.send_json_rpc_request(get_version) except Exception, e: raise Exception('Failed to call version RPC: ' + str(e)) if 'version' not in res: raise Exception('Server is not a Monero process') if 'status' in res: daemons.append(framework.daemon.Daemon(port=port)) rpcs.append(daemons[-1]) else: wallets.append(framework.wallet.Wallet(port=port)) rpcs.append(wallets[-1]) # add tab completion if we can: https://stackoverflow.com/questions/246725 try: