From 4e191da1a00e48b6f1eee168a31b1ea3225d6a71 Mon Sep 17 00:00:00 2001 From: RD WebDesign Date: Fri, 17 Oct 2025 22:20:20 -0300 Subject: [PATCH] Improve curl error message including exit code and error message This commit replaces the 3 digits http_code returned by curl with the json output. This output contains all returned values, including http_code, exitcode and errormsg. Using json format, the old http_error "000" string is formated as a number "0". Signed-off-by: RD WebDesign --- gravity.sh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gravity.sh b/gravity.sh index f84d05f9..0c27cb05 100755 --- a/gravity.sh +++ b/gravity.sh @@ -611,7 +611,7 @@ compareLists() { # Download specified URL and perform checks on HTTP status and file content gravity_DownloadBlocklistFromUrl() { local url="${1}" adlistID="${2}" saveLocation="${3}" compression="${4}" gravity_type="${5}" domain="${6}" - local listCurlBuffer str httpCode success="" ip customUpstreamResolver="" + local listCurlBuffer str curlJson httpCode curlErrorMsg="" curlExitCode="" success="" ip customUpstreamResolver="" local file_path permissions ip_addr port blocked=false download=true # modifiedOptions is an array to store all the options used to check if the adlist has been changed upstream local modifiedOptions=() @@ -755,9 +755,14 @@ gravity_DownloadBlocklistFromUrl() { fi if [[ "${download}" == true ]]; then - httpCode=$(curl --connect-timeout ${curl_connect_timeout} -s -L ${compression:+${compression}} ${customUpstreamResolver:+${customUpstreamResolver}} "${modifiedOptions[@]}" -w "%{http_code}" "${url}" -o "${listCurlBuffer}" 2>/dev/null) + curlJson=$(curl --connect-timeout ${curl_connect_timeout} -s -L ${compression:+${compression}} ${customUpstreamResolver:+${customUpstreamResolver}} "${modifiedOptions[@]}" -w "%{json}" "${url}" -o "${listCurlBuffer}" 2>/dev/null) fi + # Retrieve the HTTP code, exit code and error message returned by curl command + httpCode=$(echo "${curlJson}" | jq '.http_code') + curlErrorMsg=$(echo "${curlJson}" | jq '.errormsg') + curlExitCode=$(echo "${curlJson}" | jq '.exitcode') + case $url in # Did we "download" a local file? "file"*) @@ -780,7 +785,7 @@ gravity_DownloadBlocklistFromUrl() { echo -e "${OVER} ${TICK} ${str} No changes detected" success=true ;; - "000") echo -e "${OVER} ${CROSS} ${str} Connection Refused" ;; + "0") echo -e "${OVER} ${CROSS} ${str} Failure (exit_code=${COL_RED}${curlExitCode}${COL_NC} Msg: ${COL_CYAN}${curlErrorMsg}${COL_NC})" ;; "403") echo -e "${OVER} ${CROSS} ${str} Forbidden" ;; "404") echo -e "${OVER} ${CROSS} ${str} Not found" ;; "408") echo -e "${OVER} ${CROSS} ${str} Time-out" ;;