from requests import get as r_get from xmrnodes import config def make_request(url: str, path="/get_info", data=None): if is_onion(url): proxies = {"http": f"socks5h://{config.TOR_HOST}:{config.TOR_PORT}"} timeout = 18 else: proxies = None timeout = 6 r = r_get(url + path, timeout=timeout, proxies=proxies, json=data) r.raise_for_status() return r def determine_crypto(url): data = {"method": "get_block_header_by_height", "params": {"height": 0}} hashes = { "monero": [ "418015bb9ae982a1975da7d79277c2705727a56894ba0fb246adaabb1f4632e3", #mainnet "48ca7cd3c8de5b6a4d53d2861fbdaedca141553559f9be9520068053cda8430b", #testnet "76ee3cc98646292206cd3e86f74d88b4dcc1d937088645e9b0cbca84b7ce74eb" #stagenet ], "wownero": [ "a3fd635dd5cb55700317783469ba749b5259f0eeac2420ab2c27eb3ff5ffdc5c", #mainnet "d81a24c7aad4628e5c9129f8f2ec85888885b28cf468597a9762c3945e9f29aa", #testnet ] } try: r = make_request(url, "/json_rpc", data) assert "result" in r.json() hash = r.json()["result"]["block_header"]["hash"] crypto = "unknown" for c, h in hashes.items(): if hash in h: crypto = c break return crypto except: return "unknown" def is_onion(url: str): _split = url.split(":") if len(_split) < 2: return False if _split[1].endswith(".onion"): return True else: return False