fix(secubox-p2p): Fix shared services endpoint and add peer attribution

- Change service endpoint from port 8080 to /cgi-bin/p2p-services
- Exclude local node from shared services query
- Extract .services array from response JSON
- Add peer address to each shared service for attribution
- Handle empty/null responses gracefully

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-02-13 11:03:36 +01:00
parent e1a8413fa7
commit 2248785ff6

View File

@ -357,11 +357,18 @@ get_services() {
# Get shared services (from peers)
get_shared_services() {
local all_services="[]"
local peers=$(get_peers | jq -r '.peers[] | select(.status=="online") | .address')
local peers=$(get_peers | jq -r '.peers[] | select(.status=="online") | select(.is_local != true) | .address')
for peer_addr in $peers; do
local peer_services=$(curl -s --connect-timeout 2 "http://${peer_addr}:8080/p2p/services" 2>/dev/null || echo "[]")
all_services=$(echo "$all_services" | jq ". += $peer_services")
local response=$(curl -s --connect-timeout 2 "http://${peer_addr}/cgi-bin/p2p-services" 2>/dev/null)
if [ -n "$response" ]; then
local peer_services=$(echo "$response" | jq -c '.services // []' 2>/dev/null)
if [ -n "$peer_services" ] && [ "$peer_services" != "null" ] && [ "$peer_services" != "[]" ]; then
# Add peer info to each service
peer_services=$(echo "$peer_services" | jq --arg addr "$peer_addr" '[.[] | . + {peer: $addr}]')
all_services=$(echo "$all_services" "$peer_services" | jq -s '.[0] + .[1]' 2>/dev/null)
fi
fi
done
echo "{\"shared_services\":$all_services}"