113 lines
2.5 KiB
Bash
113 lines
2.5 KiB
Bash
#!/bin/bash
|
||
set -euo pipefail
|
||
|
||
NOTIF_CFG="/etc/pve/notifications.cfg"
|
||
PRIV_NOTIF_CFG="/etc/pve/priv/notifications.cfg"
|
||
|
||
# -----------------------------
|
||
# Backup-Funktion
|
||
# -----------------------------
|
||
backup_file() {
|
||
local file=$1
|
||
if [ -f "$file" ]; then
|
||
local bak="${file}.bak.$(date +%Y%m%d%H%M%S)"
|
||
cp "$file" "$bak"
|
||
echo "Backup erstellt: $bak"
|
||
fi
|
||
}
|
||
|
||
# -----------------------------
|
||
# Pflichtfeld-Reader
|
||
# $1 = Prompt
|
||
# $2 = Variablenname
|
||
# $3 = Optionaler Default
|
||
# -----------------------------
|
||
read_required() {
|
||
local prompt="$1"
|
||
local varname="$2"
|
||
local default="${3:-}"
|
||
local input
|
||
|
||
while true; do
|
||
if [[ -n "$default" ]]; then
|
||
read -rp "$prompt [$default]: " input
|
||
input=${input:-$default}
|
||
else
|
||
read -rp "$prompt: " input
|
||
fi
|
||
|
||
if [[ -n "$input" ]]; then
|
||
printf -v "$varname" '%s' "$input"
|
||
break
|
||
fi
|
||
|
||
echo "❌ Eingabe darf nicht leer sein!"
|
||
done
|
||
}
|
||
|
||
# -----------------------------
|
||
# Backups
|
||
# -----------------------------
|
||
backup_file "$NOTIF_CFG"
|
||
backup_file "$PRIV_NOTIF_CFG"
|
||
|
||
echo
|
||
echo "Bitte die SMTP Notification Konfiguration eingeben:"
|
||
echo "(Alle Felder sind Pflicht – Enter übernimmt ggf. den Default)"
|
||
echo
|
||
|
||
# -----------------------------
|
||
# Eingaben
|
||
# -----------------------------
|
||
read_required "Author" AUTHOR
|
||
read_required "From-Address" FROMADDR
|
||
|
||
read_required "Empfänger-Mailadresse (mailto)" MAILTO "admin@vmd55888.de"
|
||
read_required "SMTP Server" SERVER "mail.vmd55888.de"
|
||
read_required "SMTP Port" PORT "587"
|
||
read_required "Modus (starttls/ssl/none)" MODE "starttls"
|
||
read_required "SMTP Benutzername" USERNAME "MH-PVE02@vmd55888.de"
|
||
|
||
# Passwort (Pflichtfeld, versteckt)
|
||
while true; do
|
||
read -rsp "SMTP Passwort: " SMTP_PASS
|
||
echo
|
||
[[ -n "$SMTP_PASS" ]] && break
|
||
echo "❌ Passwort darf nicht leer sein!"
|
||
done
|
||
|
||
# -----------------------------
|
||
# notifications.cfg schreiben
|
||
# -----------------------------
|
||
cat > "$NOTIF_CFG" << EOF
|
||
sendmail: mail-to-root
|
||
comment Send mails to root@pam's email address
|
||
disable true
|
||
mailto-user root@pam
|
||
|
||
matcher: default-matcher
|
||
comment Route all notifications to mail-to-root
|
||
mode all
|
||
target mailout
|
||
|
||
smtp: mailout
|
||
author $AUTHOR
|
||
from-address $FROMADDR
|
||
mailto $MAILTO
|
||
mailto-user root@pam
|
||
mode $MODE
|
||
port $PORT
|
||
server $SERVER
|
||
username $USERNAME
|
||
EOF
|
||
|
||
# -----------------------------
|
||
# priv/notifications.cfg schreiben
|
||
# -----------------------------
|
||
cat > "$PRIV_NOTIF_CFG" << EOF
|
||
smtp: mailout
|
||
password $SMTP_PASS
|
||
EOF
|
||
|
||
echo
|
||
echo "✅ Konfiguration neu geschrieben. Bitte WebUI prüfen." |