evobackup/lib/bkctld-upgrade-config

69 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
#
# Description: Upgrade configuration to new convention
# Usage: upgrade-config [<jailname>|all]
#
# shellcheck source=./includes
LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes"
jail_name="${1:?}"
if [ ! -n "${jail_name}" ]; then
show_help && exit 1
fi
jail_path=$(jail_path "${jail_name}")
test -d "${jail_path}" || error "${jail_name}: jail not found" 2
legacy_incs_policy_file="${CONFDIR}/${jail_name}"
incs_policy_file=$(jail_incs_policy_file "${jail_name}")
if [ -h "${legacy_incs_policy_file}" ]; then
if [ -f "${incs_policy_file}" ]; then
info "${jail_name}: config is already upgraded"
else
warning "${jail_name}: symlink present but inc policy file \`${incs_policy_file}' not found"
fi
elif [ ! -e "${legacy_incs_policy_file}" ] ; then
if [ -f "${incs_policy_file}" ]; then
# create a symlink for backward compatibility
ln -s "${incs_policy_file}" "${legacy_incs_policy_file}"
info "${jail_name}: config has been symlinked"
else
warning "${jail_name}: inc policy file \`${incs_policy_file}' not found"
fi
elif [ -f "${legacy_incs_policy_file}" ]; then
# Create directory if missing
mkdir -p "$(jail_config_dir "${jail_name}")"
# move the main config file
mv "${legacy_incs_policy_file}" "${incs_policy_file}"
# create a symlink for backward compatibility
ln -s "${incs_policy_file}" "${legacy_incs_policy_file}"
# create a check_policy file if missing
touch "$(jail_check_policy_file "${jail_name}")"
info "${jail_name}: config has been upgraded"
fi
check_policy_file=$(jail_check_policy_file "${jail_name}")
if [ ! -f "${check_policy_file}" ]; then
check_policy_tpl="${TPLDIR}/check_policy.tpl"
test -f "${LOCALTPLDIR}/check_policy.tpl" && check_policy_tpl="${LOCALTPLDIR}/check_policy.tpl"
mkdir --parents "$(dirname "${check_policy_file}")"
install -m 0640 "${check_policy_tpl}" "${check_policy_file}"
info "${jail_name}: check_policy template ha been installed"
fi
legacy_incs_policy_tpl="${LOCALTPLDIR}/inc.tpl"
incs_policy_tpl="${LOCALTPLDIR}/incs_policy.tpl"
if [ -f "${legacy_incs_policy_tpl}" ]; then
# Create directory if missing
mkdir -p "$(jail_config_dir "${jail_name}")"
# move the main config file
mv -f "${legacy_incs_policy_tpl}" "${incs_policy_tpl}"
info "${jail_name}: incs_policy local template has been renamed"
fi