install_quota_clone.sh: remove hardcoded PostfixAdmin path and add interactive symlink detection

This commit is contained in:
2026-06-29 16:24:55 +02:00
parent 625184ab6e
commit 4c9a34d234
+34 -11
View File
@@ -24,7 +24,6 @@ set -uo pipefail
# ── paths ─────────────────────────────────────────────────────────────────────
DOVECOT_LINK="/usr/local/dovecot"
PFA_LINK="/var/www/adm.oopen.de/postfixadmin"
BACKUP_BASE="/root/backup"
# ── colour helpers ────────────────────────────────────────────────────────────
@@ -41,20 +40,44 @@ die() { echo -e "\n${_red}FATAL: ${*}${_nc}" >&2; exit 1; }
# ── root check ────────────────────────────────────────────────────────────────
[[ $EUID -eq 0 ]] || die "This script must be run as root."
# ── resolve symlinks ──────────────────────────────────────────────────────────
[[ -L "$DOVECOT_LINK" ]] || die "$DOVECOT_LINK is not a symlink."
[[ -L "$PFA_LINK" ]] || die "$PFA_LINK is not a symlink."
DOVECOT_REAL=$(realpath "$DOVECOT_LINK")
PFA_REAL=$(realpath "$PFA_LINK")
DOVECOT_CONF_D="${DOVECOT_REAL}/etc/dovecot/conf.d"
SQL_CONNECT="${DOVECOT_REAL}/etc/dovecot/sql-connect.conf.ext"
PFA_CONFIG="${PFA_REAL}/config.local.php"
echo
echo -e "${_bold}Dovecot quota_clone + PostfixAdmin quota display${_nc}"
echo
# ── Dovecot path ──────────────────────────────────────────────────────────────
[[ -L "$DOVECOT_LINK" ]] || die "$DOVECOT_LINK is not a symlink."
DOVECOT_REAL=$(realpath "$DOVECOT_LINK")
DOVECOT_CONF_D="${DOVECOT_REAL}/etc/dovecot/conf.d"
SQL_CONNECT="${DOVECOT_REAL}/etc/dovecot/sql-connect.conf.ext"
info "Dovecot : $DOVECOT_REAL"
# ── PostfixAdmin path (interactive) ──────────────────────────────────────────
# Auto-detect: look for a 'postfixadmin' symlink under /var/www/*/htdocs/
_pfa_default=""
mapfile -t _pfa_candidates < <(find /var/www -maxdepth 3 -name "postfixadmin" -type l 2>/dev/null | sort)
if [[ ${#_pfa_candidates[@]} -eq 1 ]]; then
_pfa_default="${_pfa_candidates[0]}"
fi
while true; do
if [[ -n "$_pfa_default" ]]; then
read -rp " PostfixAdmin symlink [${_pfa_default}]: " PFA_LINK
PFA_LINK="${PFA_LINK:-$_pfa_default}"
else
read -rp " PostfixAdmin symlink (e.g. /var/www/hostname/htdocs/postfixadmin): " PFA_LINK
fi
if [[ -L "$PFA_LINK" ]]; then
break
elif [[ -d "$PFA_LINK" ]]; then
echo -e " ${_yellow}Warning: $PFA_LINK is a directory, not a symlink — continuing anyway.${_nc}"
break
else
echo -e " ${_red}Not found or not a symlink: $PFA_LINK — please try again.${_nc}"
fi
done
PFA_REAL=$(realpath "$PFA_LINK")
PFA_CONFIG="${PFA_REAL}/config.local.php"
info "PFA : $PFA_REAL"
# ── read DB credentials from Dovecot's sql-connect.conf.ext ──────────────────