feature: add iceriver type parsing

This commit is contained in:
Upstream Data
2024-10-30 09:12:54 -06:00
parent bfe9cbf7d9
commit 975560f46f

View File

@@ -21,7 +21,6 @@ import ipaddress
import json import json
import re import re
import warnings import warnings
from logging import warning
from typing import Any, AsyncGenerator, Callable from typing import Any, AsyncGenerator, Callable
import anyio import anyio
@@ -1064,6 +1063,39 @@ class MinerFactory:
except (TypeError, LookupError): except (TypeError, LookupError):
pass pass
async def get_miner_model_iceriver(self, ip: str) -> str | None:
async with httpx.AsyncClient(transport=settings.transport()) as client:
try:
# auth
await client.post(
f"http://{ip}/user/loginpost",
params={
"post": "6",
"user": "admin",
"pwd": settings.get(
"default_iceriver_web_password", "12345678"
),
},
)
except httpx.HTTPError:
return None
try:
resp = await client.post(
f"http://{ip}:/user/userpanel", params={"post": "4"}
)
if not resp.status_code == 200:
return
result = resp.json()
software_ver = result["data"]["softver1"]
split_ver = software_ver.split("_")
if split_ver[-1] == "miner":
miner_ver = split_ver[-2]
else:
miner_ver = split_ver[-1].replace("miner", "")
return miner_ver.upper()
except httpx.HTTPError:
pass
miner_factory = MinerFactory() miner_factory = MinerFactory()