File: //var/packages/DNSServer/scripts/postinst
#!/bin/sh
DSM_VERSION_NUMBER=$SYNOPKG_DSM_VERSION_BUILD
BinDir="/var/packages/DNSServer/target/bin"
PRIVATE_LOCATION="/var/packages/DNSServer/target"
DNS_SCRIPT_LOCATION="/var/packages/DNSServer/scripts"
SZD_DNS_SYNOPKG_CONF="/var/packages/DNSServer/etc/synopkg_conf"
SZD_TMP_LOCATION="${SYNOPKG_TEMP_UPGRADE_FOLDER}/synodns"
SZF_TMP_DNS_LOG="/tmp/dnslog"
SZD_DNS_NAMED="${PRIVATE_LOCATION}/named"
SZD_DNS_CONF="${PRIVATE_LOCATION}/etc"
SZF_DNS_RNDC_KEY="${SZD_DNS_NAMED}/rndc.key"
SZD_DNS_NAMED_BK="${SZD_TMP_LOCATION}/named"
SZD_DNS_CONF_BK="${SZD_TMP_LOCATION}/etc"
SZD_PKG_APP_PATH="${PRIVATE_LOCATION}/app"
# conf to upgrade
# 1.
SZF_DNS_DEFAULT_CONF="${SZD_DNS_NAMED}/etc/conf/named.options.default.conf"
SZF_DNS_DEFAULT_CONF_OLD="${SZD_DNS_NAMED_BK}/etc/conf/named.options.default.conf"
# 2.
SZF_DNS_OPT_CONF="${SZD_DNS_NAMED}/etc/conf/named.options.conf"
SZF_DNS_OPT_CONF_OLD="${SZD_DNS_NAMED_BK}/etc/conf/named.options.conf"
# 3.
SZF_DNS_NAMED_CONF="${SZD_DNS_NAMED}/etc/named.conf"
SZF_DNS_NAMED_CONF_OLD="${SZD_DNS_NAMED_BK}/etc/named.conf"
NET_HOOK_DIR="/usr/local/libexec/net"
is_old_dns_version_lt() {
local -r COMPARE_VERSION="$1"
local -r OLD_INFO_VERSION="${SYNOPKG_OLD_PKGVER}"
if [ -z $OLD_INFO_VERSION ];then
# new install has no $SYNOPKG_OLD_PKGVER
return 1
fi
local -r info_major=$(echo "${OLD_INFO_VERSION}" | cut -d'.' -f1)
local -r info_minor=$(echo "${OLD_INFO_VERSION}" | cut -d'.' -f2)
local -r info_patch=$(echo "${OLD_INFO_VERSION}" | cut -d'.' -f3 | cut -d '-' -f1)
local -r info_number=$(echo "${OLD_INFO_VERSION}" | cut -d'.' -f3 | cut -d '-' -f2)
local -r info_version=(${info_major} ${info_minor} ${info_patch} ${info_number})
local -r target_major=$(echo "${COMPARE_VERSION}" | cut -d'.' -f1)
local -r target_minor=$(echo "${COMPARE_VERSION}" | cut -d'.' -f2)
local -r target_patch=$(echo "${COMPARE_VERSION}" | cut -d'.' -f3 | cut -d '-' -f1)
local -r target_number=$(echo "${COMPARE_VERSION}" | cut -d'.' -f3 | cut -d '-' -f2)
local target_version=(${target_major} ${target_minor} ${target_patch} ${target_number})
local length=${#info_version[@]}
local i;
for ((i=0; i<"${length}"; i++));
do
if [ "${info_version[i]}" -lt "${target_version[i]}" ]; then
# OLD_INFO_VERSION -lt COMPARE_VERSION
return 0
fi
done
# OLD_INFO_VERSION -ge COMPARE_VERSION
return 1
}
setNewConf()
{
# overwrite SZF_DNS_DEFAULT_CONF_OLD
if [ -f $SZF_DNS_SYSTEM_CONF_OLD ]; then
cp -f $SZF_DNS_DEFAULT_CONF $SZF_DNS_DEFAULT_CONF_OLD
fi
# overwrite SZF_DNS_OPT_CONF_OLD
if [ -f $SZF_DNS_OPT_CONF_OLD ]; then
cp -f $SZF_DNS_OPT_CONF $SZF_DNS_OPT_CONF_OLD
fi
# overwrite SZF_DNS_NAMED_CONF
if [ -f $SZF_DNS_NAMED_CONF_OLD ]; then
cp -f $SZF_DNS_NAMED_CONF $SZF_DNS_NAMED_CONF_OLD
fi
}
restoreConf()
{
if [ -d $SZD_DNS_NAMED_BK ]; then
cp -af $SZD_DNS_NAMED_BK/* $SZD_DNS_NAMED
rm -rf $SZD_DNS_NAMED_BK
fi
if [ -d $SZD_DNS_CONF_BK ]; then
cp -af $SZD_DNS_CONF_BK/* $SZD_DNS_CONF
rm -rf $SZD_DNS_CONF_BK
fi
if [ -d $SZD_TMP_LOCATION ]; then
rm -rf $SZD_TMP_LOCATION
fi
}
generateConf()
{
if is_old_dns_version_lt "2.2.1-5002"; then
${SZD_PKG_APP_PATH}/synodnstool --log-conf-regen
fi
}
createKey()
{
if [ ! -f ${SZF_DNS_RNDC_KEY} ]; then
${BinDir}/rndc-confgen -a -b 512 -r /dev/urandom -s 127.0.0.1 -c /var/packages/DNSServer/target/named/rndc.key -u root
fi
chown DNSServer:DNSServer ${SZF_DNS_RNDC_KEY}
chmod 770 ${SZF_DNS_RNDC_KEY}
}
fix_wrong_modify_time_lib()
{
if is_old_dns_version_lt "2.2.1-5008"; then
${SZD_PKG_APP_PATH}/synodnstool --fix-lib-modify-time
fi
}
register_volume()
{
mkdir -p ${SZD_DNS_SYNOPKG_CONF}
echo "[\"${SYNOPKG_PKGDEST_VOL}\"]" > ${SZD_DNS_SYNOPKG_CONF}/reg_volume
}
mark_fix_view_include_partial_dlz () {
if is_old_dns_version_lt "2.2.3-5028"; then
touch "${PRIVATE_LOCATION}/need_fix_view_partial_include_dlz"
fi
}
setNewConf
restoreConf
generateConf
createKey
#DNS#541
fix_wrong_modify_time_lib
register_volume
mark_fix_view_include_partial_dlz
exit 0