mirror of
https://github.com/guezoloic/serverconfig.git
synced 2026-01-25 01:34:22 +00:00
105 lines
2.5 KiB
Bash
105 lines
2.5 KiB
Bash
#!/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"
|
|
|
|
INFO_FLAG=1
|
|
WARN_FLAG=2
|
|
ERROR_FLAG=3
|
|
DEBUG_FLAG=4
|
|
ACTION_FLAG=5
|
|
SUCCESS_FLAG=6
|
|
|
|
|
|
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}"
|
|
local isUpdated="${4:-true}"
|
|
|
|
if [[ "$file" == '--' ]]; then
|
|
file=$ENV_FILE
|
|
fi
|
|
|
|
if [[ -z "$value" && "$isUpdated" == true ]]; then
|
|
if grep -q "^$key=*" "$file" 2>/dev/null; then
|
|
info_print "$key not updated." $WARN_FLAG
|
|
return
|
|
else
|
|
info_print "$key not set (empty input)." $WARN_FLAG
|
|
return
|
|
fi
|
|
fi
|
|
|
|
if [[ "$isUpdated" == true ]]; then
|
|
if grep -Eq "^${key}=" "$file" 2>/dev/null; then
|
|
read -p "$key already set, overwrite? (y/N): " yn
|
|
|
|
case "$yn" in
|
|
[Yy]*)
|
|
sed -i "s/^$key=.*/$key=$value/" "$file"
|
|
info_print "$key updated." $SUCCESS_FLAG
|
|
;;
|
|
*)
|
|
info_print "$key not changed." $WARN_FLAG
|
|
;;
|
|
esac
|
|
else
|
|
echo "$key=$value" >> "$file"
|
|
info_print "$key set." $SUCCESS_FLAG
|
|
fi
|
|
else
|
|
if grep -Eq "^${key}=" "$file" 2>/dev/null; then
|
|
sed -i "s/^$key=.*/$key=$value/" "$file"
|
|
else
|
|
echo "$key=$value" >> "$file"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
create_raw_line_variable() {
|
|
local line="$1"
|
|
local file="$2"
|
|
|
|
if grep -Fxq "$line" "$file" 2>/dev/null; then
|
|
info_print "'$line' already defined as raw line." $WARN_FLAG
|
|
else
|
|
echo "$line" >> "$file"
|
|
info_print "'$line' added as raw line." $SUCCESS_FLAG
|
|
fi
|
|
} |