Files
infrastructure/clusters/cl01tl/manifests/qbittorrent/ConfigMap-glutun-update-script.yaml

125 lines
3.8 KiB
YAML

apiVersion: v1
kind: ConfigMap
metadata:
name: glutun-update-script
namespace: qbittorrent
labels:
app.kubernetes.io/name: glutun-update-script
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
data:
update.sh: |
API_ENDPOINT="http://localhost:8080/api/v2";
MAX_RETRIES=5
SUCCESS=false
for i in $(seq 1 "$MAX_RETRIES"); do
if apk update --short > /dev/null 2>&1; then
echo ">> Attempt $i: Repositories are reachable"
SUCCESS=true
break
else
echo ">> Attempt $i: Connection failed, retrying in 5 seconds ..."
sleep 5
fi
done
if [ "$SUCCESS" = false ]; then
echo ">> ERROR: Could not connect to apk repositories after $MAX_RETRIES attempts, exiting ..."
exit 1
fi
if ! command -v curl 2>&1 >/dev/null
then
echo "curl could not be found, installing";
apk add --no-cache curl;
if [ $? -eq 0 ]; then
echo ">> Installation successful"
else
echo ">> Installation failed with exit code $?"
exit 1
fi
fi;
if ! command -v jq 2>&1 >/dev/null
then
echo "jq could not be found, installing";
apk add --no-cache jq;
if [ $? -eq 0 ]; then
echo ">> Installation successful"
else
echo ">> Installation failed with exit code $?"
exit 1
fi
fi;
# echo " ";
# echo ">> Authentication ...";
# curl -i --silent --header 'Referer: http://localhost:8080' --output response_body_auth.json --data 'username=admin&password=adminadmin' "${API_ENDPOINT}/auth/login" -c cookie;
echo " ";
echo ">> Test access ...";
HTTP_STATUS=$(curl -i -X GET --silent --write-out '%{http_code}' --output response_body_test.json -b cookie -c cookie "${API_ENDPOINT}/app/version");
echo ">> HTTP Status Code: $HTTP_STATUS"
VERSION=$(tail -n 1 response_body_test.json)
if [ "$HTTP_STATUS" == "200" ]; then
echo ">> Access confirmed, qBittorrent version: ${VERSION}"
HTTP_STATUS=""
else
echo ">> ERROR: HTTP status code: $HTTP_STATUS"
exit 1
fi
PAYLOAD=$( jq -n \
'{random_port: true}' );
echo " ";
echo ">> Setting port to random ...";
HTTP_STATUS=$(curl -i -X POST --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_random.json --data "json=$PAYLOAD" "${API_ENDPOINT}/app/setPreferences");
if [ "$HTTP_STATUS" == "200" ]; then
echo ">> Random port set"
HTTP_STATUS=""
else
echo ">> ERROR: HTTP status code: $HTTP_STATUS"
exit 1
fi
echo " ";
echo ">> Sleeping for changes to take effect";
sleep 5;
PAYLOAD=$( jq -n \
"{listen_port: ${1}}" );
echo " ";
echo ">> Updating port with ${1} ...";
HTTP_STATUS=$(curl -i -X POST --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_update.json --data "json=$PAYLOAD" "${API_ENDPOINT}/app/setPreferences");
if [ "$HTTP_STATUS" == "200" ]; then
echo ">> Port set"
HTTP_STATUS=""
else
echo ">> ERROR: HTTP status code: $HTTP_STATUS"
exit 1
fi
echo " ";
echo ">> Sleeping for changes to take effect";
sleep 5;
HTTP_STATUS=$(curl -i -X GET --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_check.json "${API_ENDPOINT}/app/preferences");
LISTEN_PORT=$(tail -n 1 response_body_check.json | jq -r .listen_port)
echo " ";
echo ">> qBittorrent's post is now: $LISTEN_PORT";
if [[ "$HTTP_STATUS" == "200" && "$LISTEN_PORT" == "${1}" ]]; then
echo ">> Port updated successfully!"
else
echo ">> ERROR: HTTP status code: $HTTP_STATUS"
exit 1
fi