diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-02-11 23:32:23 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-02-11 23:32:23 +0300 |
| commit | f4057989f520daaef30b9d1cc0b0b0f12dbd7edc (patch) | |
| tree | d722a403b238004a2ad1211548408942add7c662 /update.sh | |
| parent | 84013b0b3f4b4da47e776cbbb44af849c33e664f (diff) | |
Require HTTP 200 from curl before using IP
Replace simple curl+trim checks with a response+http_code parse to ensure the remote URL returns HTTP 200 and a non-empty body before assigning server_ip. Changes applied to install.sh, update.sh and x-ui.sh: use curl -w to append the status code, extract http_code and ip_result, and only set server_ip when http_code == 200 and ip_result is non-empty. This makes the IP discovery more robust against error pages or partial responses while keeping the existing timeout behavior.
Diffstat (limited to 'update.sh')
| -rwxr-xr-x | update.sh | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -687,8 +687,11 @@ config_after_update() { ) local server_ip="" for ip_address in "${URL_lists[@]}"; do - server_ip=$(${curl_bin} -s --max-time 3 "${ip_address}" 2>/dev/null | tr -d '[:space:]') - if [[ -n "${server_ip}" ]]; then + local response=$(curl -s -w "\n%{http_code}" --max-time 3 "${ip_address}" 2>/dev/null) + local http_code=$(echo "$response" | tail -n1) + local ip_result=$(echo "$response" | head -n-1 | tr -d '[:space:]') + if [[ "${http_code}" == "200" && -n "${ip_result}" ]]; then + server_ip="${ip_result}" break fi done |
