221 lines
9.0 KiB
Bash
221 lines
9.0 KiB
Bash
#!/usr/bin/env nix-shell
|
||
#!nix-shell -i bash -p gum fastfetch xkcdpass sops ssh-to-age age sshpass envsubst pciutils usbutils mosquitto
|
||
|
||
networking() {
|
||
SELECTED_SUBACTION=$(gum choose --header "Choose a setting to change:" "${NETWORKING_SETTINGS_LIST[@]}")
|
||
|
||
if [[ "$SELECTED_SUBACTION" = " 🏠 Change the home router subnet" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 🌐 Change the home router IP address" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 🖥️ Change the server's IP address" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 🌍 Change the domain name" ]]; then
|
||
echo "Some future logic here"
|
||
else
|
||
echo -e "\n\n ❌ Unexpected bug. Please contact the developer. Aborting."
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
backup() {
|
||
SELECTED_SUBACTION=$(gum choose --header "Choose a setting to change:" "${BACKUP_SETTINGS_LIST[@]}")
|
||
|
||
if [[ "$SELECTED_SUBACTION" = " 🕣 Change the backup time" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 💾 Backup all data to a ssh remote" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 💿 Backup all data to a local folder" ]]; then
|
||
echo "Some future logic here"
|
||
else
|
||
echo -e "\n\n ❌ Unexpected bug. Please contact the developer. Aborting."
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
services() {
|
||
echo "Some future logic here"
|
||
}
|
||
|
||
devices() {
|
||
echo "Some future logic here"
|
||
}
|
||
|
||
|
||
disks() {
|
||
SELECTED_SUBACTION=$(gum choose --header "Choose a setting to change:" "${DISKS_SETTINGS_LIST[@]}")
|
||
|
||
if [[ "$SELECTED_SUBACTION" = " ➕ Add or remove a boot disk" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " ➕ Add or remove data disk(s)" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 🔄 Replace a boot disk" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 🔄 Replace a data disk" ]]; then
|
||
echo "Some future logic here"
|
||
else
|
||
echo -e "\n\n ❌ Unexpected bug. Please contact the developer. Aborting."
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
health() {
|
||
SELECTED_SUBACTION=$(gum choose --header "Choose a setting to change:" "${SERVER_HEALTH_SETTINGS_LIST[@]}")
|
||
|
||
if [[ "$SELECTED_SUBACTION" = " 🩺 Check disk(s) health" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " ⛑️ Check service(s) health" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 🌐 Check connectivity" ]]; then
|
||
echo "Some future logic here"
|
||
else
|
||
echo -e "\n\n ❌ Unexpected bug. Please contact the developer. Aborting."
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
email() {
|
||
SELECTED_SUBACTION=$(gum choose --header "Choose a setting to change:" "${EMAIL_SETTINGS_LIST[@]}")
|
||
|
||
if [[ "$SELECTED_SUBACTION" = " ⚙️ Change the server's email SMTP settings" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 📧 Change your personal email" ]]; then
|
||
echo "Some future logic here"
|
||
else
|
||
echo -e "\n\n ❌ Unexpected bug. Please contact the developer. Aborting."
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
passwords() {
|
||
SELECTED_SUBACTION=$(gum choose --header "Choose a setting to change:" "${PASSWORD_SETTINGS_LIST[@]}")
|
||
|
||
if [[ "$SELECTED_SUBACTION" = " 👁️ Display the server's configuration credentials" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 🔧 Change the numbus-admin's password" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " 🔑 Add or remove SSH keys" ]]; then
|
||
echo "Some future logic here"
|
||
elif [[ "$SELECTED_SUBACTION" = " ⚙️ Change Cloudflare API token" ]]; then
|
||
echo "Some future logic here"
|
||
else
|
||
echo -e "\n\n ❌ Unexpected bug. Please contact the developer. Aborting."
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
configuration_export() {
|
||
echo "Some future logic here"
|
||
}
|
||
|
||
### --> Main logic
|
||
set -euo pipefail
|
||
|
||
fastfetch --logo nixos --structure ''
|
||
|
||
cat <<EOF
|
||
|
||
██████ █████ █████
|
||
▒▒██████ ▒▒███ ▒▒███
|
||
▒███▒███ ▒███ █████ ████ █████████████ ▒███████ █████ ████ █████
|
||
▒███▒▒███▒███ ▒▒███ ▒███ ▒▒███▒▒███▒▒███ ▒███▒▒███▒▒███ ▒███ ███▒▒
|
||
▒███ ▒▒██████ ▒███ ▒███ ▒███ ▒███ ▒███ ▒███ ▒███ ▒███ ▒███ ▒▒█████
|
||
▒███ ▒▒█████ ▒███ ▒███ ▒███ ▒███ ▒███ ▒███ ▒███ ▒███ ▒███ ▒▒▒▒███
|
||
█████ ▒▒█████ ▒▒████████ █████▒███ █████ ████████ ▒▒████████ ██████
|
||
▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒
|
||
|
||
█████████
|
||
███▒▒▒▒▒███
|
||
▒███ ▒▒▒ ██████ ████████ █████ █████ ██████ ████████
|
||
▒▒█████████ ███▒▒███▒▒███▒▒███▒▒███ ▒▒███ ███▒▒███▒▒███▒▒███
|
||
▒▒▒▒▒▒▒▒███▒███████ ▒███ ▒▒▒ ▒███ ▒███ ▒███████ ▒███ ▒▒▒
|
||
███ ▒███▒███▒▒▒ ▒███ ▒▒███ ███ ▒███▒▒▒ ▒███
|
||
▒▒█████████ ▒▒██████ █████ ▒▒█████ ▒▒██████ █████
|
||
▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒
|
||
|
||
EOF
|
||
|
||
sleep 1
|
||
|
||
source /etc/numbus-server/numbus-server.conf
|
||
|
||
gum confirm "\n\n 🚀 Welcome to the Numbus-Server administration interface. Here,
|
||
you can tweak the settings of your homelab. Do you want to continue?" \
|
||
|| { echo " ❌ Aborting as requested."; exit 1; }
|
||
|
||
ACTIONS_LIST=(
|
||
" 🛜 Update networking settings" \
|
||
" 💾 Update backup settings" \
|
||
" 📱 Add or remove services" \ # No further options
|
||
" 🧩 Add or remove devices" \ # No further options
|
||
" 💿 Change disks configuration" \
|
||
" ⛑️ Check server health" \
|
||
" 📧 Change email settings" \
|
||
" 🔐 Passwords and keys management" \
|
||
" ↥ Export current configuration to a git server" \ # No further options
|
||
)
|
||
|
||
NETWORKING_SETTINGS_LIST=(
|
||
" 🏠 Change the home router subnet" \
|
||
" 🌐 Change the home router IP address" \
|
||
" 🖥️ Change the server's IP address" \
|
||
" 🌍 Change the domain name" \
|
||
)
|
||
|
||
BACKUP_SETTINGS_LIST=(
|
||
" 🕣 Change the backup time" \
|
||
" 💾 Backup all data to a ssh remote" \
|
||
" 💿 Backup all data to a local folder" \
|
||
)
|
||
|
||
DISKS_SETTINGS_LIST=(
|
||
" ➕ Add or remove a boot disk" \
|
||
" ➕ Add or remove data disk(s)" \
|
||
" 🔄 Replace a boot disk" \
|
||
" 🔄 Replace a data disk" \
|
||
)
|
||
|
||
SERVER_HEALTH_SETTINGS_LIST=(
|
||
" 🩺 Check disk(s) health"
|
||
" ⛑️ Check service(s) health"
|
||
" 🌐 Check connectivity"
|
||
)
|
||
|
||
EMAIL_SETTINGS_LIST=(
|
||
" ⚙️ Change the server's email SMTP settings"
|
||
" 📧 Change your personal email"
|
||
)
|
||
|
||
PASSWORD_SETTINGS_LIST=(
|
||
" 👁️ Display the server's configuration credentials"
|
||
" 🔧 Change the numbus-admin's password"
|
||
" 🔑 Add or remove SSH keys"
|
||
" ⚙️ Change Cloudflare API token"
|
||
)
|
||
|
||
SELECTED_ACTION=$(gum choose --header "Choose a setting to change:" "${ACTIONS_LIST[@]}")
|
||
|
||
if [[ "$SELECTED_ACTION" = " 🛜 Update networking settings" ]]; then
|
||
networking
|
||
elif [[ "$SELECTED_ACTION" = " 💾 Update backup settings" ]]; then
|
||
backup
|
||
elif [[ "$SELECTED_ACTION" = " 📱 Add or remove services" ]]; then
|
||
services
|
||
elif [[ "$SELECTED_ACTION" = " 🧩 Add or remove devices" ]]; then
|
||
devices
|
||
elif [[ "$SELECTED_ACTION" = " 💿 Change disks configuration" ]]; then
|
||
disks
|
||
elif [[ "$SELECTED_ACTION" = " ⛑️ Check server health" ]]; then
|
||
health
|
||
elif [[ "$SELECTED_ACTION" = " 📧 Change email settings" ]]; then
|
||
email
|
||
elif [[ "$SELECTED_ACTION" = " 🔐 Passwords and keys management" ]]; then
|
||
passwords
|
||
elif [[ "$SELECTED_ACTION" = " ↥ Export current configuration to a git server" ]]; then
|
||
configuration_export
|
||
else
|
||
echo -e "\n\n ❌ Unexpected bug. Please contact the developer. Aborting."
|
||
exit 1
|
||
fi
|
||
### Main logic <--
|