Fix API logic in api.sh (#6193)
This commit is contained in:
+25
-24
@@ -20,7 +20,7 @@
|
|||||||
TestAPIAvailability() {
|
TestAPIAvailability() {
|
||||||
|
|
||||||
# as we are running locally, we can get the port value from FTL directly
|
# as we are running locally, we can get the port value from FTL directly
|
||||||
local chaos_api_list authResponse authStatus authData
|
local chaos_api_list authResponse authStatus authData apiAvailable
|
||||||
|
|
||||||
# Query the API URLs from FTL using CHAOS TXT local.api.ftl
|
# Query the API URLs from FTL using CHAOS TXT local.api.ftl
|
||||||
# The result is a space-separated enumeration of full URLs
|
# The result is a space-separated enumeration of full URLs
|
||||||
@@ -57,38 +57,39 @@ TestAPIAvailability() {
|
|||||||
authData=$(printf %s "${authResponse%???}")
|
authData=$(printf %s "${authResponse%???}")
|
||||||
|
|
||||||
# Test if http status code was 200 (OK) or 401 (authentication required)
|
# Test if http status code was 200 (OK) or 401 (authentication required)
|
||||||
if [ ! "${authStatus}" = 200 ] && [ ! "${authStatus}" = 401 ]; then
|
if [ "${authStatus}" = 200 ]; then
|
||||||
# API is not available at this port/protocol combination
|
# API is available without authentication
|
||||||
API_PORT=""
|
apiAvailable=true
|
||||||
else
|
needAuth=false
|
||||||
# API is available at this URL combination
|
break
|
||||||
|
|
||||||
if [ "${authStatus}" = 200 ]; then
|
|
||||||
# API is available without authentication
|
|
||||||
needAuth=false
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
elif [ "${authStatus}" = 401 ]; then
|
||||||
|
# API is available with authentication
|
||||||
|
apiAvailable=true
|
||||||
|
needAuth=true
|
||||||
# Check if 2FA is required
|
# Check if 2FA is required
|
||||||
needTOTP=$(echo "${authData}"| jq --raw-output .session.totp 2>/dev/null)
|
needTOTP=$(echo "${authData}"| jq --raw-output .session.totp 2>/dev/null)
|
||||||
|
|
||||||
break
|
break
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove the first URL from the list
|
else
|
||||||
local last_api_list
|
# API is not available at this port/protocol combination
|
||||||
last_api_list="${chaos_api_list}"
|
apiAvailable=false
|
||||||
chaos_api_list="${chaos_api_list#* }"
|
# Remove the first URL from the list
|
||||||
|
local last_api_list
|
||||||
|
last_api_list="${chaos_api_list}"
|
||||||
|
chaos_api_list="${chaos_api_list#* }"
|
||||||
|
|
||||||
# If the list did not change, we are at the last element
|
# If the list did not change, we are at the last element
|
||||||
if [ "${last_api_list}" = "${chaos_api_list}" ]; then
|
if [ "${last_api_list}" = "${chaos_api_list}" ]; then
|
||||||
# Remove the last element
|
# Remove the last element
|
||||||
chaos_api_list=""
|
chaos_api_list=""
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# if API_PORT is empty, no working API port was found
|
# if apiAvailable is false, no working API was found
|
||||||
if [ -n "${API_PORT}" ]; then
|
if [ "${apiAvailable}" = false ]; then
|
||||||
echo "API not available at: ${API_URL}"
|
echo "API not available. Please check FTL.log"
|
||||||
echo "Exiting."
|
echo "Exiting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user