fix: Handle --http-addr with bind address in sensor-proxy installer

When using --http-addr 0.0.0.0:8443 (to bind to IPv4 only), the URL
construction was broken, producing URLs like https://192.168.31.110.0.0.0:8443

Now correctly extracts the port number from both ":8443" and "0.0.0.0:8443"
formats using ${HTTP_ADDR##*:} instead of ${HTTP_ADDR#:}

Related to #805
This commit is contained in:
rcourtman 2025-12-03 20:16:30 +00:00
parent 86d303b94a
commit 7535f1f56d

View file

@ -1927,7 +1927,8 @@ if [[ "$HTTP_MODE" == true ]]; then
print_success "Pulse server is reachable" print_success "Pulse server is reachable"
# Check if port is already in use # Check if port is already in use
PORT_NUMBER="${HTTP_ADDR#:}" # Extract port from HTTP_ADDR which can be ":8443" or "0.0.0.0:8443"
PORT_NUMBER="${HTTP_ADDR##*:}"
if ss -ltn | grep -q ":${PORT_NUMBER} "; then if ss -ltn | grep -q ":${PORT_NUMBER} "; then
# Port is in use - check if it's our own service (refresh scenario) # Port is in use - check if it's our own service (refresh scenario)
if systemctl is-active --quiet pulse-sensor-proxy 2>/dev/null; then if systemctl is-active --quiet pulse-sensor-proxy 2>/dev/null; then
@ -1978,7 +1979,7 @@ if [[ "$HTTP_MODE" == true ]]; then
PRIMARY_IP=$(hostname -I 2>/dev/null | tr ' ' '\n' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -1) PRIMARY_IP=$(hostname -I 2>/dev/null | tr ' ' '\n' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
if [[ -z "$PRIMARY_IP" ]]; then if [[ -z "$PRIMARY_IP" ]]; then
print_error "No IPv4 address found" print_error "No IPv4 address found"
print_error "Use --proxy-url https://YOUR_IP${HTTP_ADDR} to specify manually" print_error "Use --proxy-url https://YOUR_IP:${PORT_NUMBER} to specify manually"
exit 1 exit 1
fi fi
print_info "Using IPv4 address: $PRIMARY_IP" print_info "Using IPv4 address: $PRIMARY_IP"
@ -1988,11 +1989,11 @@ if [[ "$HTTP_MODE" == true ]]; then
if [[ "$PRIMARY_IP" == "127.0.0.1" ]]; then if [[ "$PRIMARY_IP" == "127.0.0.1" ]]; then
print_warn "Primary IP is loopback (127.0.0.1)" print_warn "Primary IP is loopback (127.0.0.1)"
print_warn "Pulse will not be able to reach this proxy!" print_warn "Pulse will not be able to reach this proxy!"
print_error "Use --proxy-url https://YOUR_REAL_IP${HTTP_ADDR} to specify a reachable address" print_error "Use --proxy-url https://YOUR_REAL_IP:${PORT_NUMBER} to specify a reachable address"
exit 1 exit 1
fi fi
PROXY_URL="https://${PRIMARY_IP}${HTTP_ADDR}" PROXY_URL="https://${PRIMARY_IP}:${PORT_NUMBER}"
print_info "Proxy will be accessible at: $PROXY_URL" print_info "Proxy will be accessible at: $PROXY_URL"
# Register with Pulse and get auth/control tokens # Register with Pulse and get auth/control tokens
@ -2151,9 +2152,11 @@ EOF
print_success "HTTP mode configured successfully" print_success "HTTP mode configured successfully"
echo "" echo ""
# Extract port number correctly from HTTP_ADDR (handles both ":8443" and "0.0.0.0:8443")
HTTP_PORT="${HTTP_ADDR##*:}"
print_info "Firewall configuration required:" print_info "Firewall configuration required:"
print_info " Allow inbound TCP connections on port ${HTTP_ADDR#:} from Pulse server" print_info " Allow inbound TCP connections on port ${HTTP_PORT} from Pulse server"
print_info " Command: ufw allow from <pulse-server-ip> to any port ${HTTP_ADDR#:}" print_info " Command: ufw allow from <pulse-server-ip> to any port ${HTTP_PORT}"
echo "" echo ""
fi fi
@ -2371,7 +2374,7 @@ if ! systemctl start pulse-sensor-proxy.service; then
print_error "2. Permission errors: Check ownership of /var/lib/pulse-sensor-proxy" print_error "2. Permission errors: Check ownership of /var/lib/pulse-sensor-proxy"
print_error "3. lm-sensors not installed: Run 'apt-get install lm-sensors && sensors-detect --auto'" print_error "3. lm-sensors not installed: Run 'apt-get install lm-sensors && sensors-detect --auto'"
print_error "4. Standalone node detection: If you see 'pvecm' errors, this is expected for non-clustered hosts" print_error "4. Standalone node detection: If you see 'pvecm' errors, this is expected for non-clustered hosts"
print_error "5. Port already in use: Check 'ss -tlnp | grep ${HTTP_ADDR#:}'" print_error "5. Port already in use: Check 'ss -tlnp | grep ${HTTP_ADDR##*:}'"
print_error "" print_error ""
print_error "For more help: https://github.com/rcourtman/Pulse/blob/main/docs/TROUBLESHOOTING.md" print_error "For more help: https://github.com/rcourtman/Pulse/blob/main/docs/TROUBLESHOOTING.md"
exit 1 exit 1
@ -2453,7 +2456,7 @@ if [[ "$HTTP_MODE" == true ]]; then
print_error "URL: $HTTP_CHECK_URL" print_error "URL: $HTTP_CHECK_URL"
print_error "" print_error ""
print_error "Troubleshooting:" print_error "Troubleshooting:"
print_error " 1. Check if port ${HTTP_ADDR#:} is listening: ss -tlnp | grep ${HTTP_ADDR#:}" print_error " 1. Check if port ${HTTP_ADDR##*:} is listening: ss -tlnp | grep ${HTTP_ADDR##*:}"
print_error " 2. Check sensor-proxy logs: journalctl -u pulse-sensor-proxy -n 50" print_error " 2. Check sensor-proxy logs: journalctl -u pulse-sensor-proxy -n 50"
print_error " 3. Test manually: curl -k -H 'Authorization: Bearer \$TOKEN' $HTTP_CHECK_URL" print_error " 3. Test manually: curl -k -H 'Authorization: Bearer \$TOKEN' $HTTP_CHECK_URL"
print_error "" print_error ""