#!/bin/sh

set -e

#DEBHELPER#

update_sync_job() {
    job="$1"

    echo "Updating sync job '$job' to make old 'remove-vanished' default explicit.."
    proxmox-backup-manager sync-job update "$job" --remove-vanished true \
      || echo "Failed, please check sync.cfg manually!"
}

case "$1" in
    configure)
	# need to have user backup in the tape group
	usermod -a -G tape backup

	# modeled after dh_systemd_start output
	systemctl --system daemon-reload >/dev/null || true
	if [ -n "$2" ]; then
		if dpkg --compare-versions "$2" 'lt' '1.0.7-1'; then
			# there was an issue with reloading and systemd being confused in older daemon versions
			# so restart instead of reload if upgrading from there, see commit 0ec79339f7aebf9
			# FIXME: remove with PBS 2.1
			echo "Upgrading from older proxmox-backup-server: restart (not reload) daemons"
			_dh_action=try-restart
		else
			_dh_action=try-reload-or-restart
		fi
	else
		_dh_action=start
	fi
	deb-systemd-invoke $_dh_action proxmox-backup.service proxmox-backup-proxy.service >/dev/null || true

	if test -n "$2"; then
		# FIXME: Remove in future version once we're sure no broken entries remain in anyone's files
		if grep -q -e ':termproxy::[^@]\+: ' /var/log/proxmox-backup/tasks/active; then
			echo "Fixing up termproxy user id in task log..."
			flock -w 30 /var/log/proxmox-backup/tasks/active.lock sed -i 's/:termproxy::\([^@]\+\): /:termproxy::\1@pam: /' /var/log/proxmox-backup/tasks/active || true
		fi

		if dpkg --compare-versions "$2" 'lt' '7.1-1' && test -e /etc/proxmox-backup/sync.cfg; then
			prev_job=""

			# read from HERE doc because POSIX sh limitations
			while read -r key value; do
				if test "$key" = "sync:"; then
					if test -n "$prev_job"; then
						# previous job doesn't have an explicit value
						update_sync_job "$prev_job"
					fi
					prev_job=$value
				else
					prev_job=""
				fi
			done <<EOF
$(grep -e '^sync:' -e 'remove-vanished' /etc/proxmox-backup/sync.cfg)
EOF
			if test -n "$prev_job"; then
				# last job doesn't have an explicit value
				update_sync_job "$prev_job"
			fi
		fi
	fi
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

exit 0
