From 9387e150628784b9c01b0a6643eeb7f898fe08d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christer=20War=C3=A9n?= Date: Sat, 1 Jun 2024 14:47:24 +0300 Subject: [PATCH] Code Update --- build.sh | 7 +- init.sh | 248 +++++++++++++++++++++------------ src/base.sh | 2 +- src/functions/compatibility.sh | 15 ++ src/functions/delete.sh | 6 + src/functions/header.sh | 24 ++++ src/functions/init.sh | 4 +- src/functions/login.sh | 166 +++++++++++----------- src/functions/repeat.sh | 5 + src/functions/restricted.sh | 7 + src/functions/start.sh | 10 +- src/functions/stop.sh | 4 +- 12 files changed, 311 insertions(+), 187 deletions(-) mode change 100644 => 100755 build.sh create mode 100644 src/functions/compatibility.sh create mode 100644 src/functions/delete.sh create mode 100644 src/functions/header.sh create mode 100644 src/functions/repeat.sh create mode 100644 src/functions/restricted.sh diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 index 257329f..69a7280 --- a/build.sh +++ b/build.sh @@ -5,20 +5,21 @@ if [ ! "$BASH_VERSION" ] ; then exit 1 fi +wiBold=$(tput bold) +wiNormal=$(tput sgr0) + echo "" echo "" echo "" echo "==============================" echo -n "$wiBold" echo " Warén Group " -echo " Init.sh " echo -n "$wiNormal" echo "==============================" -echo " >> Build << " +echo " >> Init << " echo "------------------------------" podman run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp docker.io/library/php:8-cli php generator.php &> /dev/null chmod +x init.sh &> /dev/null -echo "==============================" echo " " echo " " echo " " diff --git a/init.sh b/init.sh index b98f70f..b9b3fbd 100755 --- a/init.sh +++ b/init.sh @@ -13,15 +13,60 @@ wiPurple=$(tput setaf 165) wiTurquoise=$(tput setaf 14) wiPink=$(tput setaf 198) wiOrange=$(tput setaf 202) -wiUnderline=$(tput smul) wiBold=$(tput bold) wiNormal=$(tput sgr0) +wi-header(){ + wx-header $1 $2 +} + +wi-repeat(){ + wx-repeat $1 $2 +} + +wi-login(){ + wx-login $1 $2 +} + +wx-stop(){ + wi-stop +} + +wi-delete(){ + if [[ -f "init.sh" ]] + then + rm init.sh + fi +} + +wx-header(){ + if [[ $2 == "h1" ]] + then + echo "" + echo "" + echo "" + echo "==============================" + wx-repeat " " $((30/2-${#1}/2)) + echo -n "$wxBold" + echo -n "$1" + echo -n "$wxNormal" + echo "" + echo "==============================" + fi + + if [[ $2 == "h2" || -z $2 ]] + then + wx-start + wx-repeat " " $((30/2-6/2-${#1}/2)) + echo -n ">> $1 <<" + echo "" + echo "------------------------------" + fi +} + wi-init(){ wi-login $1 $2 - - echo " >> Init << " - echo "------------------------------" + wi-header "Init" mkdir -p ~/.ssh &> /dev/null @@ -71,16 +116,14 @@ wi-init(){ unset HVT } -wi-login(){ +wx-login(){ ORG=$1 if [[ -z "$HOSTNAME" || ${#HOSTNAME} -lt 5 ]] then - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Hostname Required" - wi-stop + wx-stop fi if [[ ! -z $1 ]] @@ -96,11 +139,9 @@ wi-login(){ then ORG=cwchristerw else - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Organization Required" - wi-stop + wx-stop fi if [[ $ORG == "warengroup" ]] @@ -113,11 +154,9 @@ wi-login(){ then DOMAIN=christerwaren.fi else - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Organization Unsupported" - wi-stop + wx-stop fi FOLDER=$ORG @@ -132,11 +171,9 @@ wi-login(){ then HOSTNAME=$(hostname --fqdn) else - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Hostname Required" - wi-stop + wx-stop fi if [[ -z $USER || $USER == "root" || $USER == "local" ]] @@ -145,117 +182,144 @@ wi-login(){ then if [[ -z LOGNAME ]] then - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Username Required" - wi-stop + wx-stop else - USER=$LOGNAME + USERNAME=$LOGNAME fi else - USER=$SUDO_USER + USERNAME=$SUDO_USER fi + else + USERNAME=$USER fi VAULT_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://$VAULT_DOMAIN/v1/sys/health) if [[ $VAULT_STATUS -eq 200 ]] then - VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/token/renew -X POST --header "X-Vault-Token: $TOKEN" -d '{ "token": "'$TOKEN'" }' -s | jq -r '.auth.client_token') - IDM_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://$IDM_DOMAIN) - if [[ $IDM_STATUS -eq 301 ]] + + if [[ $USER != "root" && $USER != "local" && -f "$HOME/.config/warengroup/config.json" ]] then - echo " >> Login << " - echo "------------------------------" + TOKEN="$(cat $HOME/.config/warengroup/config.json | jq -r .login.$ORG)" + fi - echo $wiBold$ORG$wiNormal - - if [[ -z $USER || $USER == "root" || $USER == "local" ]] + VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/token/renew -X POST --header "X-Vault-Token: $TOKEN" -d '{ "token": "'$TOKEN'" }' -s | jq -r '.auth.client_token') + if [[ ! -z $VAULT_LOGIN && ${#VAULT_LOGIN} == 95 ]] + then + config["login",${ORG}]=$VAULT_LOGIN + if [[ $USER != "root" && $USER != "local" ]] then - echo -n "Username: " - read USERNAME - else - echo "Username: $USER" - USERNAME=$USER + jq '.login.'$ORG' = "'$VAULT_LOGIN'"' $HOME/.config/warengroup/config.json 1> $HOME/.config/warengroup/config.json.tmp + mv $HOME/.config/warengroup/config.json.tmp $HOME/.config/warengroup/config.json &> /dev/null fi - - echo -n "Password: " - read -s PASSWORD - echo "****************" - - if [[ -z $USERNAME || -z $PASSWORD ]] + else + IDM_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://$IDM_DOMAIN) + if [[ $IDM_STATUS -eq 301 ]] then - echo "Status: Username & Password Required" - wi-stop + wx-header "Login" + echo $wxBold$ORG$wxNormal + + if [[ -z $USERNAME || $USERNAME == "root" || $USERNAME == "local" ]] + then + echo -n "Username: " + read USERNAME + else + echo "Username: $USERNAME" + fi + + echo -n "Password: " + read -s PASSWORD + echo "****************" + + if [[ -z $USERNAME || -z $PASSWORD ]] + then + echo "Status: Username & Password Required" + wx-stop + else + VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/ldap/login/$USERNAME -X POST -d '{ "password": "'$PASSWORD'" }' -s | jq -r '.auth.client_token') + if [[ -z $VAULT_LOGIN || ${#VAULT_LOGIN} -lt 95 || ${#VAULT_LOGIN} -gt 95 ]] + then + echo "Status: Login Failed" + wx-stop + fi + + config["login",${ORG}]=$VAULT_LOGIN + + if [[ $USER != "root" && $USER != "local" ]] + then + jq '.login.'$ORG' = "'$VAULT_LOGIN'"' $HOME/.config/warengroup/config.json &> $HOME/.config/warengroup/config.json.tmp + mv $HOME/.config/warengroup/config.json.tmp $HOME/.config/warengroup/config.json &> /dev/null + fi + fi else - VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/ldap/login/$USERNAME -X POST -d '{ "password": "'$PASSWORD'" }' -s | jq -r '.auth.client_token') + wx-header "Login" + echo $wxBold$ORG$wxNormal + + echo -n "Token: " + read -s TOKEN + echo "****************" + + if [[ -z $TOKEN || ${#TOKEN} -lt 95 || ${#TOKEN} -gt 95 ]] + then + echo "Status: Vault Token Required" + wx-stop + fi + + VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/token/renew -X POST --header "X-Vault-Token: $TOKEN" -d '{ "token": "'$TOKEN'" }' -s | jq -r '.auth.client_token') if [[ -z $VAULT_LOGIN || ${#VAULT_LOGIN} -lt 95 || ${#VAULT_LOGIN} -gt 95 ]] then echo "Status: Login Failed" - wi-stop + wx-stop fi config["login",${ORG}]=$VAULT_LOGIN - wi-start + + if [[ $USER != "root" && $USER != "local" ]] + then + jq '.login.'$ORG' = "'$VAULT_LOGIN'"' $HOME/.config/warengroup/config.json &> $HOME/.config/warengroup/config.json.tmp + mv $HOME/.config/warengroup/config.json.tmp $HOME/.config/warengroup/config.json &> /dev/null + fi fi - else - echo " >> Login << " - echo "------------------------------" - - echo $wiBold$ORG$wiNormal - - echo -n "Token: " - read -s TOKEN - echo "****************" - - if [[ -z $TOKEN || ${#TOKEN} -lt 95 || ${#TOKEN} -gt 95 ]] - then - echo "Status: Vault Token Required" - wi-stop - fi - - VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/token/renew -X POST --header "X-Vault-Token: $TOKEN" -d '{ "token": "'$TOKEN'" }' -s | jq -r '.auth.client_token') - if [[ -z $VAULT_LOGIN || ${#VAULT_LOGIN} -lt 95 || ${#VAULT_LOGIN} -gt 95 ]] - then - echo "Status: Login Failed" - wi-stop - fi - - config["login",${ORG}]=$VAULT_LOGIN - wi-start fi else - echo " >> Login << " - echo "------------------------------" - - echo $wiBold$ORG$wiNormal - + wx-header "Login" + echo $wxBold$ORG$wxNormal echo "Status: Vault Offline" - wi-stop + wx-stop + fi +} + +wx-repeat() { + local str=$1 n=$2 spaces + printf -v spaces "%*s" $n " " + printf "%s" "${spaces// /$str}" +} + +wi-restricted(){ + if [[ $USER != "root" && $USER != "local" ]] + then + sudo $0 $1 $2 + exit 1 fi } wi-start(){ - echo "" - echo "" - echo "" - echo "==============================" - echo -n "$wiBold" - echo " Warén Group " - echo " Init.sh " - echo -n "$wiNormal" - echo "==============================" + wi-header "Warén Group" h1 } wi-stop (){ - echo "==============================" echo " " echo " " echo " " + + wi-delete + exit 1 } wi-start +wi-restricted $0 $1 $2 wi-init $1 $2 wi-stop diff --git a/src/base.sh b/src/base.sh index 1ced8cd..a225599 100644 --- a/src/base.sh +++ b/src/base.sh @@ -13,12 +13,12 @@ wiPurple=$(tput setaf 165) wiTurquoise=$(tput setaf 14) wiPink=$(tput setaf 198) wiOrange=$(tput setaf 202) -wiUnderline=$(tput smul) wiBold=$(tput bold) wiNormal=$(tput sgr0) {{ CODES }} wi-start +wi-restricted $0 $1 $2 wi-init $1 $2 wi-stop diff --git a/src/functions/compatibility.sh b/src/functions/compatibility.sh new file mode 100644 index 0000000..d3001af --- /dev/null +++ b/src/functions/compatibility.sh @@ -0,0 +1,15 @@ +wi-header(){ + wx-header $1 $2 +} + +wi-repeat(){ + wx-repeat $1 $2 +} + +wi-login(){ + wx-login $1 $2 +} + +wx-stop(){ + wi-stop +} diff --git a/src/functions/delete.sh b/src/functions/delete.sh new file mode 100644 index 0000000..d0828d4 --- /dev/null +++ b/src/functions/delete.sh @@ -0,0 +1,6 @@ +wi-delete(){ + if [[ -f "init.sh" ]] + then + rm init.sh + fi +} diff --git a/src/functions/header.sh b/src/functions/header.sh new file mode 100644 index 0000000..8353695 --- /dev/null +++ b/src/functions/header.sh @@ -0,0 +1,24 @@ +wx-header(){ + if [[ $2 == "h1" ]] + then + echo "" + echo "" + echo "" + echo "==============================" + wx-repeat " " $((30/2-${#1}/2)) + echo -n "$wxBold" + echo -n "$1" + echo -n "$wxNormal" + echo "" + echo "==============================" + fi + + if [[ $2 == "h2" || -z $2 ]] + then + wx-start + wx-repeat " " $((30/2-6/2-${#1}/2)) + echo -n ">> $1 <<" + echo "" + echo "------------------------------" + fi +} diff --git a/src/functions/init.sh b/src/functions/init.sh index 68c44f2..a7031dd 100644 --- a/src/functions/init.sh +++ b/src/functions/init.sh @@ -1,8 +1,6 @@ wi-init(){ wi-login $1 $2 - - echo " >> Init << " - echo "------------------------------" + wi-header "Init" mkdir -p ~/.ssh &> /dev/null diff --git a/src/functions/login.sh b/src/functions/login.sh index c228563..a8b3450 100644 --- a/src/functions/login.sh +++ b/src/functions/login.sh @@ -1,13 +1,11 @@ -wi-login(){ +wx-login(){ ORG=$1 if [[ -z "$HOSTNAME" || ${#HOSTNAME} -lt 5 ]] then - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Hostname Required" - wi-stop + wx-stop fi if [[ ! -z $1 ]] @@ -23,11 +21,9 @@ wi-login(){ then ORG=cwchristerw else - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Organization Required" - wi-stop + wx-stop fi if [[ $ORG == "warengroup" ]] @@ -40,11 +36,9 @@ wi-login(){ then DOMAIN=christerwaren.fi else - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Organization Unsupported" - wi-stop + wx-stop fi FOLDER=$ORG @@ -59,11 +53,9 @@ wi-login(){ then HOSTNAME=$(hostname --fqdn) else - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Hostname Required" - wi-stop + wx-stop fi if [[ -z $USER || $USER == "root" || $USER == "local" ]] @@ -72,92 +64,110 @@ wi-login(){ then if [[ -z LOGNAME ]] then - echo " >> Login << " - echo "------------------------------" - + wx-header "Login" echo "Status: Username Required" - wi-stop + wx-stop else - USER=$LOGNAME + USERNAME=$LOGNAME fi else - USER=$SUDO_USER + USERNAME=$SUDO_USER fi + else + USERNAME=$USER fi VAULT_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://$VAULT_DOMAIN/v1/sys/health) if [[ $VAULT_STATUS -eq 200 ]] then - VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/token/renew -X POST --header "X-Vault-Token: $TOKEN" -d '{ "token": "'$TOKEN'" }' -s | jq -r '.auth.client_token') - IDM_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://$IDM_DOMAIN) - if [[ $IDM_STATUS -eq 301 ]] + + if [[ $USER != "root" && $USER != "local" && -f "$HOME/.config/warengroup/config.json" ]] then - echo " >> Login << " - echo "------------------------------" + TOKEN="$(cat $HOME/.config/warengroup/config.json | jq -r .login.$ORG)" + fi - echo $wiBold$ORG$wiNormal - - if [[ -z $USER || $USER == "root" || $USER == "local" ]] + VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/token/renew -X POST --header "X-Vault-Token: $TOKEN" -d '{ "token": "'$TOKEN'" }' -s | jq -r '.auth.client_token') + if [[ ! -z $VAULT_LOGIN && ${#VAULT_LOGIN} == 95 ]] + then + config["login",${ORG}]=$VAULT_LOGIN + if [[ $USER != "root" && $USER != "local" ]] then - echo -n "Username: " - read USERNAME - else - echo "Username: $USER" - USERNAME=$USER + jq '.login.'$ORG' = "'$VAULT_LOGIN'"' $HOME/.config/warengroup/config.json 1> $HOME/.config/warengroup/config.json.tmp + mv $HOME/.config/warengroup/config.json.tmp $HOME/.config/warengroup/config.json &> /dev/null fi - - echo -n "Password: " - read -s PASSWORD - echo "****************" - - if [[ -z $USERNAME || -z $PASSWORD ]] + else + IDM_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://$IDM_DOMAIN) + if [[ $IDM_STATUS -eq 301 ]] then - echo "Status: Username & Password Required" - wi-stop + wx-header "Login" + echo $wxBold$ORG$wxNormal + + if [[ -z $USERNAME || $USERNAME == "root" || $USERNAME == "local" ]] + then + echo -n "Username: " + read USERNAME + else + echo "Username: $USERNAME" + fi + + echo -n "Password: " + read -s PASSWORD + echo "****************" + + if [[ -z $USERNAME || -z $PASSWORD ]] + then + echo "Status: Username & Password Required" + wx-stop + else + VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/ldap/login/$USERNAME -X POST -d '{ "password": "'$PASSWORD'" }' -s | jq -r '.auth.client_token') + if [[ -z $VAULT_LOGIN || ${#VAULT_LOGIN} -lt 95 || ${#VAULT_LOGIN} -gt 95 ]] + then + echo "Status: Login Failed" + wx-stop + fi + + config["login",${ORG}]=$VAULT_LOGIN + + if [[ $USER != "root" && $USER != "local" ]] + then + jq '.login.'$ORG' = "'$VAULT_LOGIN'"' $HOME/.config/warengroup/config.json &> $HOME/.config/warengroup/config.json.tmp + mv $HOME/.config/warengroup/config.json.tmp $HOME/.config/warengroup/config.json &> /dev/null + fi + fi else - VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/ldap/login/$USERNAME -X POST -d '{ "password": "'$PASSWORD'" }' -s | jq -r '.auth.client_token') + wx-header "Login" + echo $wxBold$ORG$wxNormal + + echo -n "Token: " + read -s TOKEN + echo "****************" + + if [[ -z $TOKEN || ${#TOKEN} -lt 95 || ${#TOKEN} -gt 95 ]] + then + echo "Status: Vault Token Required" + wx-stop + fi + + VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/token/renew -X POST --header "X-Vault-Token: $TOKEN" -d '{ "token": "'$TOKEN'" }' -s | jq -r '.auth.client_token') if [[ -z $VAULT_LOGIN || ${#VAULT_LOGIN} -lt 95 || ${#VAULT_LOGIN} -gt 95 ]] then echo "Status: Login Failed" - wi-stop + wx-stop fi config["login",${ORG}]=$VAULT_LOGIN - wi-start + + if [[ $USER != "root" && $USER != "local" ]] + then + jq '.login.'$ORG' = "'$VAULT_LOGIN'"' $HOME/.config/warengroup/config.json &> $HOME/.config/warengroup/config.json.tmp + mv $HOME/.config/warengroup/config.json.tmp $HOME/.config/warengroup/config.json &> /dev/null + fi fi - else - echo " >> Login << " - echo "------------------------------" - - echo $wiBold$ORG$wiNormal - - echo -n "Token: " - read -s TOKEN - echo "****************" - - if [[ -z $TOKEN || ${#TOKEN} -lt 95 || ${#TOKEN} -gt 95 ]] - then - echo "Status: Vault Token Required" - wi-stop - fi - - VAULT_LOGIN=$(curl https://$VAULT_DOMAIN/v1/auth/token/renew -X POST --header "X-Vault-Token: $TOKEN" -d '{ "token": "'$TOKEN'" }' -s | jq -r '.auth.client_token') - if [[ -z $VAULT_LOGIN || ${#VAULT_LOGIN} -lt 95 || ${#VAULT_LOGIN} -gt 95 ]] - then - echo "Status: Login Failed" - wi-stop - fi - - config["login",${ORG}]=$VAULT_LOGIN - wi-start fi else - echo " >> Login << " - echo "------------------------------" - - echo $wiBold$ORG$wiNormal - + wx-header "Login" + echo $wxBold$ORG$wxNormal echo "Status: Vault Offline" - wi-stop + wx-stop fi } diff --git a/src/functions/repeat.sh b/src/functions/repeat.sh new file mode 100644 index 0000000..45a6b85 --- /dev/null +++ b/src/functions/repeat.sh @@ -0,0 +1,5 @@ +wx-repeat() { + local str=$1 n=$2 spaces + printf -v spaces "%*s" $n " " + printf "%s" "${spaces// /$str}" +} diff --git a/src/functions/restricted.sh b/src/functions/restricted.sh new file mode 100644 index 0000000..d068f18 --- /dev/null +++ b/src/functions/restricted.sh @@ -0,0 +1,7 @@ +wi-restricted(){ + if [[ $USER != "root" && $USER != "local" ]] + then + sudo $0 $1 $2 + exit 1 + fi +} diff --git a/src/functions/start.sh b/src/functions/start.sh index fbef645..e22975d 100644 --- a/src/functions/start.sh +++ b/src/functions/start.sh @@ -1,11 +1,3 @@ wi-start(){ - echo "" - echo "" - echo "" - echo "==============================" - echo -n "$wiBold" - echo " Warén Group " - echo " Init.sh " - echo -n "$wiNormal" - echo "==============================" + wi-header "Warén Group" h1 } diff --git a/src/functions/stop.sh b/src/functions/stop.sh index 9ead241..9035e1b 100644 --- a/src/functions/stop.sh +++ b/src/functions/stop.sh @@ -1,7 +1,9 @@ wi-stop (){ - echo "==============================" echo " " echo " " echo " " + + wi-delete + exit 1 }