GitHub Action
commited on
Commit
·
5de0c3e
1
Parent(s):
1c4d3c0
Sync from GitHub with Git LFS
Browse files- agents/peer_sync.py +1 -32
- agents/tools/storage.py +29 -0
agents/peer_sync.py
CHANGED
|
@@ -23,38 +23,7 @@ local_addresses = storage.get_config_value("local_addresses", [])
|
|
| 23 |
global_addresses = storage.get_config_value("global_addresses", [])
|
| 24 |
all_addresses = local_addresses + global_addresses # один раз
|
| 25 |
|
| 26 |
-
|
| 27 |
-
def get_local_ports(storage):
|
| 28 |
-
"""
|
| 29 |
-
Возвращает список портов для всех локальных адресов.
|
| 30 |
-
Формат конфигурации: список dict {"addr": str, "nonce": int, "pow_hash": str, "expires": ...}
|
| 31 |
-
"""
|
| 32 |
-
local_addrs_json = storage.get_config("local_addresses")
|
| 33 |
-
if not local_addrs_json:
|
| 34 |
-
return []
|
| 35 |
-
|
| 36 |
-
try:
|
| 37 |
-
local_addrs = json.loads(local_addrs_json)
|
| 38 |
-
except:
|
| 39 |
-
print("[WARN] Не удалось разобрать local_addresses из БД")
|
| 40 |
-
return []
|
| 41 |
-
|
| 42 |
-
ports = []
|
| 43 |
-
for entry in local_addrs:
|
| 44 |
-
# Если entry — словарь, берём поле addr, иначе предполагаем строку
|
| 45 |
-
addr_str = entry["addr"] if isinstance(entry, dict) else entry
|
| 46 |
-
|
| 47 |
-
# Разбираем протокол и host:port
|
| 48 |
-
try:
|
| 49 |
-
proto, hostport = addr_str.split("://", 1)
|
| 50 |
-
_, port = storage.parse_hostport(hostport)
|
| 51 |
-
ports.append(port)
|
| 52 |
-
except Exception as e:
|
| 53 |
-
print(f"[WARN] Не удалось разобрать адрес {addr_str}: {e}")
|
| 54 |
-
|
| 55 |
-
return ports
|
| 56 |
-
|
| 57 |
-
local_ports = get_local_ports()
|
| 58 |
print(f"[PeerSync] Local ports: {local_ports}")
|
| 59 |
|
| 60 |
# ---------------------------
|
|
|
|
| 23 |
global_addresses = storage.get_config_value("global_addresses", [])
|
| 24 |
all_addresses = local_addresses + global_addresses # один раз
|
| 25 |
|
| 26 |
+
local_ports = storage.get_local_ports()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
print(f"[PeerSync] Local ports: {local_ports}")
|
| 28 |
|
| 29 |
# ---------------------------
|
agents/tools/storage.py
CHANGED
|
@@ -967,6 +967,35 @@ class Storage:
|
|
| 967 |
|
| 968 |
return f"{proto}://{host}:{port}" if port else f"{proto}://{host}"
|
| 969 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 970 |
# Нормализация DID
|
| 971 |
@staticmethod
|
| 972 |
def normalize_did(did: str) -> str:
|
|
|
|
| 967 |
|
| 968 |
return f"{proto}://{host}:{port}" if port else f"{proto}://{host}"
|
| 969 |
|
| 970 |
+
# Получаем уникальные локальные порты
|
| 971 |
+
def get_local_ports(self):
|
| 972 |
+
"""
|
| 973 |
+
Возвращает список портов для всех локальных адресов.
|
| 974 |
+
Формат конфигурации: список dict {"address": str, "pow": {...}, "expires": str, "difficulty": int}
|
| 975 |
+
"""
|
| 976 |
+
local_addrs_json = self.get_config_value("local_addresses")
|
| 977 |
+
if not local_addrs_json:
|
| 978 |
+
return []
|
| 979 |
+
|
| 980 |
+
try:
|
| 981 |
+
local_addrs = json.loads(local_addrs_json)
|
| 982 |
+
except Exception:
|
| 983 |
+
print("[WARN] Не удалось разобрать local_addresses из БД")
|
| 984 |
+
return []
|
| 985 |
+
|
| 986 |
+
ports = []
|
| 987 |
+
for entry in local_addrs:
|
| 988 |
+
addr_str = entry["address"] if isinstance(entry, dict) else entry
|
| 989 |
+
|
| 990 |
+
try:
|
| 991 |
+
proto, hostport = addr_str.split("://", 1)
|
| 992 |
+
_, port = self.parse_hostport(hostport)
|
| 993 |
+
ports.append(port)
|
| 994 |
+
except Exception as e:
|
| 995 |
+
print(f"[WARN] Не удалось разобрать адрес {addr_str}: {e}")
|
| 996 |
+
|
| 997 |
+
return ports
|
| 998 |
+
|
| 999 |
# Нормализация DID
|
| 1000 |
@staticmethod
|
| 1001 |
def normalize_did(did: str) -> str:
|