nginx-bash/html/azure.sh
KLxHunter 70eaa5205a init
2024-08-07 16:53:39 +07:00

146 lines
5.1 KiB
Bash
Executable File

#!/bin/bash
echo 'Content-Type: text/plain'
echo ''
# echo "PROJECT: $PROJECT"
object () {
# e.g account
kind=$1
# e.g leandroAccount
self=$2
shift
shift
# iterates over the remaining args
for arg in "$@"; do
# e.g name=Leandro becomes ARG_KEY=name ARG_VALUE=Leandro
read ARG_KEY ARG_VALUE <<< $(echo "$arg" | sed -E "s/(\w+)=(.*?)/\1 \2/")
if [[ ! -z "$ARG_KEY" ]] && [[ ! -z "$ARG_VALUE" ]]; then
# declare the object's state!!!!
# e.g export leandroAccount_balance=100
export ${self}_$ARG_KEY="$ARG_VALUE"
fi
done
}
notify () {
for i in `seq 1 30`;
do
local RESPONSE_HTTP_CODE=$(curl --max-time 5 -s -o /dev/null -i -w "%{http_code}" -X POST -H "Authorization: Bearer ${1}" -d "message=${3}" "https://notify-api.line.me/api/notify")
[[ "${RESPONSE_HTTP_CODE}" == "200" ]] && break
sleep 2
done
curl -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "{\"content\": \"$(echo ${3}| sed 's/%0A/\\n/g')\"}" https://discord.com/api/webhooks/${2}
}
cicd () {
local LINE_TOKEN=$1
local DISCORD_TOKEN=$2
local repoNameOrigin=$4
local branchName=$5
local BUILD_NUMBER=$6
local buildVersion=$7
local GIT_COMMIT=$8
local JOB_URL=$9
local BUILD_URL=${10}
case "$3" in
"success")
local MESSAGE_OPTION="✅✅✅✅✅%0A*CI DONE*"
;;
"unstable")
local MESSAGE_OPTION="💥💥💥💥💥💥%0A*CI Unstable*"
;;
"failure")
local MESSAGE_OPTION="🔥🔥🔥🔥🔥🔥%0A*CI Fail*"
;;
esac
notify ${LINE_TOKEN} ${DISCORD_TOKEN} "${MESSAGE_OPTION}%0ARepositories: ${repoNameOrigin}%0ABranch: ${branchName}%0ABuild Number: ${BUILD_NUMBER}%0AImage Tag: ${buildVersion}%0ACommit ID: ${GIT_COMMIT}%0AJob URL: ${JOB_URL}%0ABuild Log: ${BUILD_URL}console"
}
pod () {
local LINE_TOKEN=$1
local DISCORD_TOKEN=$2
local POD_NAME=$4
local POD_IP=$5
local IMAGE_TAG=$6
local NODE=$7
case "$3" in
"start")
local MESSAGE_OPTION="🔆🟢🔆🟢🔆🟢🔆 Service UP"
;;
"stop")
local MESSAGE_OPTION="☠️🔴☠️🔴☠️🔴☠️ Service DOWN"
;;
esac
notify ${LINE_TOKEN} ${DISCORD_TOKEN} "${MESSAGE_OPTION}%0APod NAME: ${POD_NAME}%0APod IP: ${POD_IP}%0AImage Tag: ${IMAGE_TAG}%0ANode: ${NODE}"
}
networkOutbound () {
local LINE_TOKEN=$1
local DISCORD_TOKEN=$2
local DURATION_MIN=$3
local DURATION_SEC=$4
local NOTIFY_RESPONSE=$(echo $5 | sed 's/-ONLINE/ ✅✅✅✅✅✅/g;s/-OFFLINE/ 🔥🔥🔥🔥🔥🔥/g;s/-:-/ : /g;s/-/ /g;')
notify ${LINE_TOKEN} ${DISCORD_TOKEN} "${DURATION_MIN} min ${DURATION_SEC} sec${NOTIFY_RESPONSE}"
}
action () {
local LINE_TOKEN=$(eval echo \${${PROJECT}_line_${HTTP_ACTION}})
local DISCORD_TOKEN=$(eval echo \${${PROJECT}_discord_${HTTP_ACTION}})
case "${HTTP_ACTION}" in
"cicd")
cicd ${LINE_TOKEN} ${DISCORD_TOKEN} ${HTTP_ACTIONVAL} ${HTTP_REPO} ${HTTP_BRANCH} ${HTTP_BUILDNUM} ${HTTP_BUILDVER} ${HTTP_COMMIT} ${HTTP_JOBURL} ${HTTP_BUILDURL}
;;
"pod")
pod ${LINE_TOKEN} ${DISCORD_TOKEN} ${HTTP_ACTIONVAL} ${HTTP_PODNAME} ${HTTP_PODIP} ${HTTP_IMAGETAG} ${HTTP_NODE}
;;
"networkOutbound")
networkOutbound ${LINE_TOKEN} ${DISCORD_TOKEN} ${HTTP_DURATIONMIN} ${HTTP_DURATIONSEC} ${HTTP_NOTIFYRESPONSE}
;;
*)
echo '{"status":404,"message":"action type not found"}'
exit 0
;;
esac
}
case "${PROJECT}" in
"clm")
object lineToken \
${PROJECT}_line \
cicd=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da \
pod=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da \
networkOutbound=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da
object discordToken \
${PROJECT}_discord \
cicd=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta \
pod=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta \
networkOutbound=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta
action
;;
"ncs")
object lineToken \
${PROJECT}_line \
cicd=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da \
pod=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da \
networkOutbound=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da
object discordToken \
${PROJECT}_discord \
cicd=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta \
pod=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta \
networkOutbound=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta
action
;;
*)
echo '{"status":404,"message":"project not found"}'
exit 0
;;
esac
echo '{"status":200,"message":"ok"}'