#!/bin/bash set -e DEFAULT_DIR="/usr/share/pve-mod" CONF_DIR="/etc/pve-mod" # Config file pairs to compare on upgrade: "|" CONF_PAIRS=" ${DEFAULT_DIR}/pve-mod.conf.default|${CONF_DIR}/pve-mod.conf ${DEFAULT_DIR}/conf.d/node_info.conf.default|${CONF_DIR}/conf.d/node_info.conf ${DEFAULT_DIR}/conf.d/nag_screen.conf.default|${CONF_DIR}/conf.d/nag_screen.conf " # Extracts "section.key" pairs from an INI file, one per line. _extract_conf_keys() { local file="$1" section="" line key while IFS= read -r line; do case "$line" in '#'*|'') continue ;; '['*']') section="${line#[}"; section="${section%]}"; continue ;; *'='*) key="${line%%=*}"; echo "${section}.${key}" ;; esac done < "$file" } # Warns about keys present in a default config but missing from the user's copy. _check_one_pair() { local default_conf="$1" user_conf="$2" [ -f "$default_conf" ] || return 0 [ -f "$user_conf" ] || return 0 local new_keys="" section="" key line while IFS= read -r line; do case "$line" in '#'*|'') continue ;; '['*']') section="${line#[}"; section="${section%]}"; continue ;; *'='*) key="${line%%=*}" if ! _extract_conf_keys "$user_conf" | grep -qF "${section}.${key}"; then new_keys="${new_keys} [${section}] ${line} (${user_conf})\n" fi ;; esac done < "$default_conf" if [ -n "$new_keys" ]; then printf "%b" "$new_keys" fi } # Warns about any new config keys across the main config and all per-mod configs. _check_new_config_keys() { local all_new="" pair default_conf user_conf while IFS= read -r pair; do [ -n "$pair" ] || continue default_conf="${pair%%|*}" user_conf="${pair#*|}" all_new="${all_new}$(_check_one_pair "$default_conf" "$user_conf")" done <&2 fi if [ -z "$2" ]; then echo "" echo "pve-mod installed successfully." echo "Run 'pve-mod-configure' to enable and configure modules." echo "" else # Upgrading from a previous version — warn about any new config keys. _check_new_config_keys fi ;; triggered) # Fired by dpkg when pve-manager is upgraded. Only re-apply patches # if the user has opted in via 'pve-mod-configure'. TRIGGER_ENABLED=$(awk -F= '/^\[pve_trigger\]/{s=1} s && /^enabled=/{print $2; exit}' \ /etc/pve-mod/pve-mod.conf 2>/dev/null || echo 0) if [ "${TRIGGER_ENABLED}" = "1" ]; then echo "pve-mod: pve-manager upgrade detected — re-applying patches." if ! /usr/lib/pve-mod/apply-patches.sh; then echo "pve-mod: WARNING: Failed to re-apply patches. Run 'pve-mod-configure' to fix." >&2 fi else echo "pve-mod: WARNING: pve-manager was upgraded but auto re-patching is disabled." >&2 echo "pve-mod: The Proxmox UI modifications may no longer be active." >&2 echo "pve-mod: Run 'pve-mod-configure' to re-apply patches." >&2 fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; esac #DEBHELPER# exit 0