GitHub Action
commited on
Commit
·
90eafcb
1
Parent(s):
920d275
Sync from GitHub with Git LFS
Browse files- agents/peer_sync.py +0 -88
agents/peer_sync.py
CHANGED
|
@@ -113,94 +113,6 @@ def load_bootstrap_peers(filename="bootstrap.txt"):
|
|
| 113 |
source="bootstrap", status="offline")
|
| 114 |
print(f"[Bootstrap] Loaded peer {did} -> {expanded_addresses}")
|
| 115 |
|
| 116 |
-
# ---------------------------
|
| 117 |
-
# TCP Listener (обработка входящих PEER_EXCHANGE_REQUEST)
|
| 118 |
-
# ---------------------------
|
| 119 |
-
def tcp_listener():
|
| 120 |
-
listen_sockets = []
|
| 121 |
-
|
| 122 |
-
# Создаём TCP сокеты на всех локальных портах
|
| 123 |
-
for port in local_ports:
|
| 124 |
-
try:
|
| 125 |
-
sock4 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
| 126 |
-
sock4.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
| 127 |
-
sock4.bind(("", port))
|
| 128 |
-
sock4.listen(5)
|
| 129 |
-
listen_sockets.append(sock4)
|
| 130 |
-
print(f"[TCP Listener] Listening IPv4 on *:{port}")
|
| 131 |
-
except Exception as e:
|
| 132 |
-
print(f"[TCP Listener] IPv4 bind failed on port {port}: {e}")
|
| 133 |
-
|
| 134 |
-
try:
|
| 135 |
-
sock6 = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
|
| 136 |
-
sock6.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
| 137 |
-
sock6.bind(("::", port))
|
| 138 |
-
sock6.listen(5)
|
| 139 |
-
listen_sockets.append(sock6)
|
| 140 |
-
print(f"[TCP Listener] Listening IPv6 on [::]:{port}")
|
| 141 |
-
except Exception as e:
|
| 142 |
-
print(f"[TCP Listener] IPv6 bind failed on port {port}: {e}")
|
| 143 |
-
|
| 144 |
-
while True:
|
| 145 |
-
if not listen_sockets:
|
| 146 |
-
time.sleep(1)
|
| 147 |
-
continue
|
| 148 |
-
rlist, _, _ = select.select(listen_sockets, [], [], 1)
|
| 149 |
-
for s in rlist:
|
| 150 |
-
try:
|
| 151 |
-
conn, addr = s.accept()
|
| 152 |
-
data = conn.recv(1024)
|
| 153 |
-
|
| 154 |
-
if data == b"PEER_EXCHANGE_REQUEST":
|
| 155 |
-
print(f"[TCP Listener] PEER_EXCHANGE_REQUEST from {addr}")
|
| 156 |
-
|
| 157 |
-
# --- (1) Сохраняем нового пира ---
|
| 158 |
-
peer_host, peer_port = addr[0], addr[1]
|
| 159 |
-
peer_id = f"did:hmp:{peer_host}:{peer_port}" # временный ID, пока пир не представился
|
| 160 |
-
storage.add_or_update_peer(
|
| 161 |
-
peer_id,
|
| 162 |
-
name="incoming",
|
| 163 |
-
addresses=[f"tcp4://{peer_host}:{peer_port}"],
|
| 164 |
-
source="incoming",
|
| 165 |
-
status="online"
|
| 166 |
-
)
|
| 167 |
-
|
| 168 |
-
# --- (2) Отправляем список известных ---
|
| 169 |
-
peers_list = []
|
| 170 |
-
for peer in storage.get_known_peers(my_id, limit=50):
|
| 171 |
-
peer_id = peer["id"]
|
| 172 |
-
addresses_json = peer["addresses"]
|
| 173 |
-
try:
|
| 174 |
-
addresses = json.loads(addresses_json)
|
| 175 |
-
except:
|
| 176 |
-
addresses = []
|
| 177 |
-
peers_list.append({"id": peer_id, "addresses": addresses})
|
| 178 |
-
payload = json.dumps(peers_list).encode("utf-8")
|
| 179 |
-
conn.sendall(payload)
|
| 180 |
-
|
| 181 |
-
# --- (3) Делаем встречный запрос ---
|
| 182 |
-
try:
|
| 183 |
-
with socket.create_connection((peer_host, peer_port), timeout=3) as s2:
|
| 184 |
-
s2.sendall(b"PEER_EXCHANGE_REQUEST")
|
| 185 |
-
resp = s2.recv(65536)
|
| 186 |
-
if resp:
|
| 187 |
-
new_peers = json.loads(resp.decode("utf-8"))
|
| 188 |
-
for p in new_peers:
|
| 189 |
-
storage.add_or_update_peer(
|
| 190 |
-
p["id"],
|
| 191 |
-
name="from_incoming",
|
| 192 |
-
addresses=p.get("addresses", []),
|
| 193 |
-
source="reverse-sync",
|
| 194 |
-
status="online"
|
| 195 |
-
)
|
| 196 |
-
print(f"[TCP Listener] Reverse sync: got {len(new_peers)} peers from {peer_host}:{peer_port}")
|
| 197 |
-
except Exception as e:
|
| 198 |
-
print(f"[TCP Listener] Reverse sync failed with {peer_host}:{peer_port}: {e}")
|
| 199 |
-
|
| 200 |
-
conn.close()
|
| 201 |
-
except Exception as e:
|
| 202 |
-
print(f"[TCP Listener] Connection handling error: {e}")
|
| 203 |
-
|
| 204 |
# ---------------------------
|
| 205 |
# UDP Discovery
|
| 206 |
# ---------------------------
|
|
|
|
| 113 |
source="bootstrap", status="offline")
|
| 114 |
print(f"[Bootstrap] Loaded peer {did} -> {expanded_addresses}")
|
| 115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
# ---------------------------
|
| 117 |
# UDP Discovery
|
| 118 |
# ---------------------------
|