CLI small refactor

This commit is contained in:
jokob-sk
2024-04-13 09:10:29 +10:00
parent 30c7035f30
commit efeb15de76

View File

@@ -1,7 +1,9 @@
#!/bin/bash #!/bin/bash
SCRIPT=$(readlink -f $0) SCRIPT=$(readlink -f $0)
SCRIPTPATH=`dirname $SCRIPT` SCRIPTPATH=$(dirname $SCRIPT)
CONFFILENAME="app.conf" CONFFILENAME="app.conf"
SETTING_NAME_TOGGLE="PIALERT_WEB_PROTECTION"
SETTING_NAME_PWD="PIALERT_WEB_PASSWORD"
PIA_CONF_FILE=${SCRIPTPATH}'/../config/${CONFFILENAME}' PIA_CONF_FILE=${SCRIPTPATH}'/../config/${CONFFILENAME}'
case $1 in case $1 in
@@ -12,21 +14,21 @@ case $1 in
echo "" echo ""
echo "The is a list of supported commands:" echo "The is a list of supported commands:"
echo "" echo ""
echo " set_login - Sets the parameter PIALERT_WEB_PROTECTION in the config file to TRUE" echo " set_login - Sets the parameter $SETTING_NAME_TOGGLE in the config file to TRUE"
echo " - If the parameter is not present, it will be created. Additionally the" echo " - If the parameter is not present, it will be created. Additionally the"
echo " default password '123456' is set." echo " default password '123456' is set."
echo "" echo ""
echo " unset_login - Sets the parameter PIALERT_WEB_PROTECTION in the config file to FALSE" echo " unset_login - Sets the parameter $SETTING_NAME_TOGGLE in the config file to FALSE"
echo " - If the parameter is not present, it will be created. Additionally the" echo " - If the parameter is not present, it will be created. Additionally the"
echo " default password '123456' is set." echo " default password '123456' is set."
echo "" echo ""
echo " set_password <password> - Sets the new password as a hashed value." echo " set_password <password> - Sets the new password as a hashed value."
echo " - If the PIALERT_WEB_PROTECTION parameter does not exist yet, it will be" echo " - If the $SETTING_NAME_TOGGLE parameter does not exist yet, it will be"
echo " created and set to 'True' (login enabled)" echo " created and set to 'True' (login enabled)"
echo "" echo ""
echo " set_autopassword - Sets a new random password as a hashed value and show it plaintext in" echo " set_autopassword - Sets a new random password as a hashed value and show it plaintext in"
echo " the console." echo " the console."
echo " - If the PIALERT_WEB_PROTECTION parameter does not exist yet, it will be" echo " - If the $SETTING_NAME_TOGGLE parameter does not exist yet, it will be"
echo " created and set to 'True' (login enabled)" echo " created and set to 'True' (login enabled)"
echo "" echo ""
echo "" echo ""
@@ -34,67 +36,67 @@ case $1 in
;; ;;
set_login) set_login)
## Check if PIALERT_WEB_PROTECTION exists ## Check if $SETTING_NAME_TOGGLE exists
CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l) CHECK_PROT=$(grep "$SETTING_NAME_TOGGLE" $PIA_CONF_FILE | wc -l)
if [ $CHECK_PROT -eq 0 ] if [ $CHECK_PROT -eq 0 ]
then then
## Create PIALERT_WEB_PROTECTION and enable it ## Create $SETTING_NAME_TOGGLE and enable it
sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = True" $PIA_CONF_FILE sed -i "/^VENDORS_DB.*/a $SETTING_NAME_TOGGLE = True" $PIA_CONF_FILE
sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'" $PIA_CONF_FILE sed -i "/^$SETTING_NAME_TOGGLE.*/a $SETTING_NAME_PWD = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'" $PIA_CONF_FILE
else else
## Switch PIALERT_WEB_PROTECTION to enable ## Switch $SETTING_NAME_TOGGLE to enable
sed -i "/PIALERT_WEB_PROTECTION/c\PIALERT_WEB_PROTECTION = True" $PIA_CONF_FILE sed -i "/$SETTING_NAME_TOGGLE/c\$SETTING_NAME_TOGGLE = True" $PIA_CONF_FILE
fi fi
echo "Login is now enabled" echo "Login is now enabled"
;; ;;
unset_login) unset_login)
## Check if PIALERT_WEB_PROTECTION exists ## Check if $SETTING_NAME_TOGGLE exists
CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l) CHECK_PROT=$(grep "$SETTING_NAME_TOGGLE" $PIA_CONF_FILE | wc -l)
if [ $CHECK_PROT -eq 0 ] if [ $CHECK_PROT -eq 0 ]
then then
## Create PIALERT_WEB_PROTECTION and disable it ## Create $SETTING_NAME_TOGGLE and disable it
sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = False" $PIA_CONF_FILE sed -i "/^VENDORS_DB.*/a $SETTING_NAME_TOGGLE = False" $PIA_CONF_FILE
sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'" $PIA_CONF_FILE sed -i "/^$SETTING_NAME_TOGGLE.*/a $SETTING_NAME_PWD = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'" $PIA_CONF_FILE
else else
## Switch PIALERT_WEB_PROTECTION to disable ## Switch $SETTING_NAME_TOGGLE to disable
sed -i "/PIALERT_WEB_PROTECTION/c\PIALERT_WEB_PROTECTION = False" $PIA_CONF_FILE sed -i "/$SETTING_NAME_TOGGLE/c\$SETTING_NAME_TOGGLE = False" $PIA_CONF_FILE
fi fi
echo "Login is now disabled" echo "Login is now disabled"
;; ;;
set_password) set_password)
PIA_PASS=$2 PIA_PASS=$2
## Check if PIALERT_WEB_PROTECTION exists ## Check if $SETTING_NAME_TOGGLE exists
CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l) CHECK_PROT=$(grep "$SETTING_NAME_TOGGLE" $PIA_CONF_FILE | wc -l)
if [ $CHECK_PROT -eq 0 ] if [ $CHECK_PROT -eq 0 ]
then then
## Create PIALERT_WEB_PROTECTION and enable it ## Create $SETTING_NAME_TOGGLE and enable it
sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = True" $PIA_CONF_FILE sed -i "/^VENDORS_DB.*/a $SETTING_NAME_TOGGLE = True" $PIA_CONF_FILE
fi fi
## Prepare Hash ## Prepare Hash
PIA_PASS_HASH=$(echo -n $PIA_PASS | sha256sum | awk '{print $1}') PIA_PASS_HASH=$(echo -n $PIA_PASS | sha256sum | awk '{print $1}')
echo " The hashed password is:" echo " The hashed password is:"
echo " $PIA_PASS_HASH" echo " $PIA_PASS_HASH"
## Check if the password parameter is set ## Check if the password parameter is set
CHECK_PWD=$(grep "PIALERT_WEB_PASSWORD" $PIA_CONF_FILE | wc -l) CHECK_PWD=$(grep "$SETTING_NAME_PWD" $PIA_CONF_FILE | wc -l)
if [ $CHECK_PWD -eq 0 ] if [ $CHECK_PWD -eq 0 ]
then then
sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '$PIA_PASS_HASH'" $PIA_CONF_FILE sed -i "/^$SETTING_NAME_TOGGLE.*/a $SETTING_NAME_PWD = '$PIA_PASS_HASH'" $PIA_CONF_FILE
else else
sed -i "/PIALERT_WEB_PASSWORD/c\PIALERT_WEB_PASSWORD = '$PIA_PASS_HASH'" $PIA_CONF_FILE sed -i "/$SETTING_NAME_PWD/c\$SETTING_NAME_PWD = '$PIA_PASS_HASH'" $PIA_CONF_FILE
fi fi
echo "" echo ""
echo "The new password is set" echo "The new password is set"
;; ;;
set_autopassword) set_autopassword)
## Check if PIALERT_WEB_PROTECTION exists ## Check if $SETTING_NAME_TOGGLE exists
CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l) CHECK_PROT=$(grep "$SETTING_NAME_TOGGLE" $PIA_CONF_FILE | wc -l)
if [ $CHECK_PROT -eq 0 ] if [ $CHECK_PROT -eq 0 ]
then then
## Create PIALERT_WEB_PROTECTION and enable it ## Create $SETTING_NAME_TOGGLE and enable it
sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = True" $PIA_CONF_FILE sed -i "/^VENDORS_DB.*/a $SETTING_NAME_TOGGLE = True" $PIA_CONF_FILE
fi fi
## Create autopassword ## Create autopassword
PIA_AUTOPASS=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1) PIA_AUTOPASS=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
@@ -104,14 +106,14 @@ case $1 in
echo " The hashed password is:" echo " The hashed password is:"
echo " $PIA_AUTOPASS_HASH" echo " $PIA_AUTOPASS_HASH"
## Check if the password parameter is set ## Check if the password parameter is set
CHECK_PWD=$(grep "PIALERT_WEB_PASSWORD" $PIA_CONF_FILE | wc -l) CHECK_PWD=$(grep "$SETTING_NAME_PWD" $PIA_CONF_FILE | wc -l)
if [ $CHECK_PWD -eq 0 ] if [ $CHECK_PWD -eq 0 ]
then then
## Create password parameter ## Create password parameter
sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '$PIA_AUTOPASS_HASH'" $PIA_CONF_FILE sed -i "/^$SETTING_NAME_TOGGLE.*/a $SETTING_NAME_PWD = '$PIA_AUTOPASS_HASH'" $PIA_CONF_FILE
else else
## Overwrite password parameter ## Overwrite password parameter
sed -i "/PIALERT_WEB_PASSWORD/c\PIALERT_WEB_PASSWORD = '$PIA_AUTOPASS_HASH'" $PIA_CONF_FILE sed -i "/$SETTING_NAME_PWD/c\$SETTING_NAME_PWD = '$PIA_AUTOPASS_HASH'" $PIA_CONF_FILE
fi fi
echo "" echo ""
echo "The new password is set" echo "The new password is set"
@@ -121,4 +123,3 @@ case $1 in
echo "pialert-cli v0.1 (https://github.com/leiweibau/Pi.Alert)" echo "pialert-cli v0.1 (https://github.com/leiweibau/Pi.Alert)"
echo "Use \"pialert-cli help\" for a list of supported commands." echo "Use \"pialert-cli help\" for a list of supported commands."
esac esac