mirror of
https://github.com/pablorevilla-meshtastic/meshview.git
synced 2026-08-05 16:33:30 +02:00
Fixed bug on edges API
This commit is contained in:
+24
-16
@@ -1632,33 +1632,41 @@ async def api_edges(request):
|
||||
|
||||
edges = {}
|
||||
|
||||
# Traceroutes
|
||||
async for tr in store.get_traceroutes(since):
|
||||
route = decode_payload.decode_payload(PortNum.TRACEROUTE_APP, tr.route)
|
||||
path = [tr.packet.from_node_id] + list(route.route)
|
||||
path.append(tr.packet.to_node_id if tr.done else tr.gateway_node_id)
|
||||
# Only build traceroute edges if requested
|
||||
if filter_type in (None, "traceroute"):
|
||||
async for tr in store.get_traceroutes(since):
|
||||
try:
|
||||
route = decode_payload.decode_payload(PortNum.TRACEROUTE_APP, tr.route)
|
||||
except Exception as e:
|
||||
print(f"Error decoding Traceroute {tr.id}: {e}")
|
||||
continue
|
||||
|
||||
for a, b in zip(path, path[1:]):
|
||||
edges[(a, b)] = "traceroute"
|
||||
path = [tr.packet.from_node_id] + list(route.route)
|
||||
path.append(tr.packet.to_node_id if tr.done else tr.gateway_node_id)
|
||||
|
||||
# NeighborInfo
|
||||
for packet in await store.get_packets(portnum=PortNum.NEIGHBORINFO_APP, after=since):
|
||||
try:
|
||||
_, neighbor_info = decode_payload.decode(packet)
|
||||
for node in neighbor_info.neighbors:
|
||||
edges.setdefault((node.node_id, packet.from_node_id), "neighbor")
|
||||
except Exception as e:
|
||||
print(f"Error decoding NeighborInfo packet: {e}")
|
||||
for a, b in zip(path, path[1:]):
|
||||
edges[(a, b)] = "traceroute"
|
||||
|
||||
# Only build neighbor edges if requested
|
||||
if filter_type in (None, "neighbor"):
|
||||
packets = await store.get_packets(portnum=PortNum.NEIGHBORINFO_APP, after=since)
|
||||
for packet in packets:
|
||||
try:
|
||||
_, neighbor_info = decode_payload.decode(packet)
|
||||
for node in neighbor_info.neighbors:
|
||||
edges.setdefault((node.node_id, packet.from_node_id), "neighbor")
|
||||
except Exception as e:
|
||||
print(f"Error decoding NeighborInfo packet {getattr(packet, 'id', '?')}: {e}")
|
||||
|
||||
return web.json_response({
|
||||
"edges": [
|
||||
{"from": a, "to": b, "type": typ}
|
||||
for (a, b), typ in edges.items()
|
||||
if filter_type is None or typ == filter_type
|
||||
]
|
||||
})
|
||||
|
||||
|
||||
|
||||
# Generic static HTML route
|
||||
@routes.get("/{page}")
|
||||
async def serve_page(request):
|
||||
|
||||
Reference in New Issue
Block a user