From ae749f4a90e98b2d4f3d8109b1a1d4dd324ea70d Mon Sep 17 00:00:00 2001 From: UpstreamData <75442874+UpstreamData@users.noreply.github.com> Date: Mon, 18 Jul 2022 10:03:39 -0600 Subject: [PATCH] add additional scan ports as backups in case 4028 doesn't respond --- pyasic/network/__init__.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/pyasic/network/__init__.py b/pyasic/network/__init__.py index a0a6a4d3..0f2abb74 100644 --- a/pyasic/network/__init__.py +++ b/pyasic/network/__init__.py @@ -4,7 +4,7 @@ import logging from typing import Union from pyasic.network.net_range import MinerNetworkRange -from pyasic.miners.miner_factory import MinerFactory +from pyasic.miners.miner_factory import MinerFactory, AnyMiner from pyasic.settings import ( NETWORK_PING_RETRIES as PING_RETRIES, NETWORK_PING_TIMEOUT as PING_TIMEOUT, @@ -150,13 +150,31 @@ class MinerNetwork: @staticmethod async def ping_miner(ip: ipaddress.ip_address) -> None or ipaddress.ip_address: - return await ping_miner(ip) + miner = await ping_miner(ip) + if miner: + return miner + miner = await ping_miner(ip, port=4029) + if miner: + return miner + miner = await ping_miner(ip, port=8889) + if miner: + return miner + return None @staticmethod async def ping_and_get_miner( ip: ipaddress.ip_address, - ) -> None or ipaddress.ip_address: - return await ping_and_get_miner(ip) + ) -> None or AnyMiner: + miner = await ping_and_get_miner(ip) + if miner: + return miner + miner = await ping_and_get_miner(ip, port=4029) + if miner: + return miner + miner = await ping_and_get_miner(ip, port=8889) + if miner: + return miner + return None async def ping_miner( @@ -188,9 +206,7 @@ async def ping_miner( return -async def ping_and_get_miner( - ip: ipaddress.ip_address, port=4028 -) -> None or ipaddress.ip_address: +async def ping_and_get_miner(ip: ipaddress.ip_address, port=4028) -> None or AnyMiner: for i in range(PING_RETRIES): connection_fut = asyncio.open_connection(str(ip), port) try: