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" ;;