fix(p2p): Use /api/factory/ path for CGI endpoints

Separate static files from CGI scripts in uhttpd configuration:
- Static files (index.html) served from /www
- CGI scripts executed from /www/api/*
- API base changed from /factory/ to /api/factory/

This fixes HAProxy routing where /factory/ serves the UI and
/api/factory/* routes to the P2P API backend.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-01-31 10:00:59 +01:00
parent eec83efa13
commit 163c74e25f
2 changed files with 13 additions and 11 deletions

View File

@ -1,24 +1,26 @@
#!/bin/sh #!/bin/sh
# Configure uhttpd instance for P2P REST API and Factory UI on port 7331 # Configure uhttpd instance for P2P REST API and Factory UI on port 7331
# - Static files served from /www (includes /factory/index.html)
# - CGI scripts executed from /www/api/* (includes /api/factory/*)
# Check if p2p_api instance already exists # Check if p2p_api instance already exists
if ! uci -q get uhttpd.p2p_api >/dev/null 2>&1; then if ! uci -q get uhttpd.p2p_api >/dev/null 2>&1; then
uci set uhttpd.p2p_api=uhttpd uci set uhttpd.p2p_api=uhttpd
uci set uhttpd.p2p_api.listen_http='0.0.0.0:7331' uci set uhttpd.p2p_api.listen_http='0.0.0.0:7331'
uci set uhttpd.p2p_api.home='/www/api' uci set uhttpd.p2p_api.home='/www'
uci set uhttpd.p2p_api.cgi_prefix='/' uci set uhttpd.p2p_api.cgi_prefix='/api'
uci set uhttpd.p2p_api.index_page='index.html'
uci set uhttpd.p2p_api.no_symlinks='0' uci set uhttpd.p2p_api.no_symlinks='0'
uci set uhttpd.p2p_api.no_dirlists='1' uci set uhttpd.p2p_api.no_dirlists='1'
uci set uhttpd.p2p_api.script_timeout='60' uci set uhttpd.p2p_api.script_timeout='60'
uci set uhttpd.p2p_api.network_timeout='30' uci set uhttpd.p2p_api.network_timeout='30'
uci commit uhttpd uci commit uhttpd
fi else
# Update existing config to fix paths
# Add alias for Factory UI (serves /www/factory at /factory/) uci set uhttpd.p2p_api.home='/www'
# This allows Factory UI to be served alongside the API on port 7331 uci set uhttpd.p2p_api.cgi_prefix='/api'
current_aliases=$(uci -q get uhttpd.p2p_api.alias 2>/dev/null) uci set uhttpd.p2p_api.index_page='index.html'
if ! echo "$current_aliases" | grep -q "/factory/"; then uci delete uhttpd.p2p_api.alias 2>/dev/null || true
uci add_list uhttpd.p2p_api.alias='/factory/=/www/factory'
uci commit uhttpd uci commit uhttpd
fi fi

View File

@ -288,8 +288,8 @@
let catalogFilter = { search: '', type: 'all', status: 'all' }; let catalogFilter = { search: '', type: 'all', status: 'all' };
let expandedServices = new Set(); let expandedServices = new Set();
// API helpers - use same origin (HAProxy routes /factory/* to API) // API helpers - use same origin (HAProxy routes /api/factory/* to P2P API backend)
const apiBase = '/factory/'; const apiBase = '/api/factory/';
const api = { const api = {
get: async (path) => { get: async (path) => {