feat: move common and notifications to libs folder

This commit is contained in:
2025-07-30 21:11:40 +02:00
parent ad6239741e
commit d8276ba9d6
3 changed files with 112 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
source ./scripts/common.sh source ./libs/common.sh
mkdir -p $ETC_DIR mkdir -p $ETC_DIR
rm -f $LOG rm -f $LOG
@@ -75,16 +75,17 @@ info_print "\n\
Installing scripts to $SCRIPT_FILE \n\ Installing scripts to $SCRIPT_FILE \n\
--------------------------------------------------" -- false --------------------------------------------------" -- false
for scripts in scripts/*.sh; do for scripts in libs/*.sh scripts/*.sh; do
filename=$(basename "$scripts") info_print "Moving $scripts to $SCRIPT_FILE"
info_print "Moving $filename to $SCRIPT_FILE" output="$SCRIPT_FILE/$scripts"
install $argument "$scripts" "$SCRIPT_FILE/$filename" -Dm755 \ install $argument "$scripts" $output -Dm755 \
&& { info_print "$SCRIPT_FILE/$filename installed." 6; } \ && { info_print "$output installed." 6; } \
|| { info_print "$SCRIPT_FILE/$filename failed." 3; ISERROR=true; } || { info_print "$output failed." 3; ISERROR=true; }
done done
for element in $SCRIPT_FILE/*.sh; do touch $ENV_FILE
for element in $SCRIPT_FILE/*/*.sh; do
bash "$element" --install bash "$element" --install
done done

75
libs/common.sh Normal file
View File

@@ -0,0 +1,75 @@
#!/bin/bash
FILENAME="serverconfig"
ETC_DIR="/etc/$FILENAME"
ENV_FILE="$ETC_DIR/.env"
LOG="/var/log/$FILENAME.log"
SCRIPT_FILE="/usr/local/bin"
INFO="\e[34mINFO\e[0m"
SUCCESS="\e[32mSUCCESS\e[0m"
WARN="\e[33mWARN\e[0m"
ERROR="\e[31mERROR\e[0m"
DEBUG="\e[35mDEBUG\e[0m"
ACTION="\e[36mACTION\e[0m"
DATETIME_FORMAT="%d-%m-%Y %H:%M:%S"
info_print() {
local message="$1"
local level="${2:-1}"
local write_log="${3:-true}"
case $level in
1|--) local level=$INFO;;
2) local level=$WARN;;
3) local level=$ERROR;;
4) local level=$DEBUG;;
5) local level=$ACTION;;
6) local level=$SUCCESS;;
*);;
esac
local output="[$(date +"$DATETIME_FORMAT")] - $level: $message"
if [ "$write_log" = true ]; then echo -e "$output" | tee -a "$LOG"
else echo -e "$output"
fi
}
create_env_variable() {
local key="$1"
local value="$2"
local file="${3:-$ENV_FILE}"
if [[ -z "$value" ]]; then
if grep -q "^$key=*" "$file" 2>/dev/null; then
info_print "$key not updated."
return
else
info_print "$key not set (empty input)."
return
fi
fi
if grep -q "^$key=" "$file" 2>/dev/null; then
if $AUTO_CONFIRM; then
yn="y"
else
read -p "$key already set, overwrite? (y/N): " yn
fi
case "$yn" in
[Yy]*)
sed -i "s/^$key=.*/$key=$value/" "$file"
info_print "$key updated."
;;
*)
info_print "$key not changed."
;;
esac
else
echo "$key=$value" >> "$file"
info_print "$key \e[32mset\e[0m."
fi
}

28
libs/notifications.sh Normal file
View File

@@ -0,0 +1,28 @@
source /usr/local/bin/libs/common.sh
source /etc/serverconfig/.env
INSTALLED=$1
if [[ "--install" == $INSTALLED ]]; then
info_print "\n\
==================================================\n\
notifications Installation\n\
--------------------------------------------------"
ENV_LIST=("TELEGRAM_CHAT_ID" "TELEGRAM_TOKEN")
for env in "${ENV_LIST[@]}"; do
read -p "Enter value for $env: " value
create_env_variable "$env" "$value"
done
exit 0
fi
send_notification() {
local message="$1"
curl -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "text=$message" \
-d "parse_mode=HTML"
}