fix: handle pipefail exits in detect_defaults, docker ps, and curl|jq pipelines

This commit is contained in:
Claus Lohmar 2026-07-24 09:48:58 +00:00
parent e1260ba5d3
commit c7cd5550bc

12
install.sh Normal file → Executable file
View file

@ -119,16 +119,16 @@ install_deps() {
#============================================================================== #==============================================================================
detect_defaults() { detect_defaults() {
# Auto-detect primary network interface # Auto-detect primary network interface (graceful fallback if ip route fails)
IFACE_DEFAULT=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $5; exit}') IFACE_DEFAULT=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $5; exit}' || true)
[ -z "$IFACE_DEFAULT" ] && IFACE_DEFAULT="eth0" [ -z "$IFACE_DEFAULT" ] && IFACE_DEFAULT="eth0"
# Auto-detect gateway # Auto-detect gateway
GATEWAY_DEFAULT=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $3; exit}') GATEWAY_DEFAULT=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $3; exit}' || true)
[ -z "$GATEWAY_DEFAULT" ] && GATEWAY_DEFAULT="10.2.0.10" [ -z "$GATEWAY_DEFAULT" ] && GATEWAY_DEFAULT="10.2.0.10"
# Auto-detect DNS from resolv.conf # Auto-detect DNS from resolv.conf
DNS_DEFAULT=$(grep '^nameserver' /etc/resolv.conf 2>/dev/null | awk '{print $2}' | tr '\n' ',' | sed 's/,$//') DNS_DEFAULT=$( (grep '^nameserver' /etc/resolv.conf 2>/dev/null || true) | awk '{print $2}' | tr '\n' ',' | sed 's/,$//')
[ -z "$DNS_DEFAULT" ] && DNS_DEFAULT="1.1.1.1,8.8.8.8" [ -z "$DNS_DEFAULT" ] && DNS_DEFAULT="1.1.1.1,8.8.8.8"
} }
@ -314,7 +314,7 @@ detect_zoraxy() {
# --- Check Docker --- # --- Check Docker ---
if command -v docker &>/dev/null && docker info &>/dev/null 2>&1; then if command -v docker &>/dev/null && docker info &>/dev/null 2>&1; then
local zoraxy_container local zoraxy_container
zoraxy_container=$(docker ps --format '{{.Names}} {{.Image}}' 2>/dev/null | grep -i zoraxy | head -1 | awk '{print $1}') zoraxy_container=$(docker ps --format '{{.Names}} {{.Image}}' 2>/dev/null | grep -i zoraxy | head -1 | awk '{print $1}' || true)
if [ -n "$zoraxy_container" ]; then if [ -n "$zoraxy_container" ]; then
ZORAXY_MODE="docker" ZORAXY_MODE="docker"
info "Found Zoraxy in Docker container: ${BOLD}$zoraxy_container${NC}" info "Found Zoraxy in Docker container: ${BOLD}$zoraxy_container${NC}"
@ -421,7 +421,7 @@ install_zoraxy_fresh() {
# Download latest release # Download latest release
local latest_url local latest_url
latest_url=$(curl -s https://api.github.com/repos/tobychui/zoraxy/releases/latest \ latest_url=$(curl -s https://api.github.com/repos/tobychui/zoraxy/releases/latest \
| jq -r ".assets[] | select(.name | contains(\"$binary\")) | .browser_download_url" 2>/dev/null) | jq -r ".assets[] | select(.name | contains(\"$binary\")) | .browser_download_url" 2>/dev/null || true)
if [ -z "$latest_url" ] || [ "$latest_url" = "null" ]; then if [ -z "$latest_url" ] || [ "$latest_url" = "null" ]; then
err "Failed to fetch Zoraxy download URL. Check your internet connection." err "Failed to fetch Zoraxy download URL. Check your internet connection."