Files
server/var/lib/dpkg/info/sw-cp-server.postinst
2026-01-07 20:52:11 +01:00

89 lines
2.0 KiB
Bash
Executable File

### Copyright 1999-2025. WebPros International GmbH. All rights reserved.
[ -z "$PLESK_INSTALLER_DEBUG" ] || set -x
[ -z "$PLESK_INSTALLER_STRICT_MODE" ] || set -e
detect_and_setup_ipv6_support()
{
# setup ipv6 if it's available
[ -f /proc/net/if_inet6 ] && grep -Eq "\w" /proc/net/if_inet6 || return 0
cat > "/etc/sw-cp-server/conf.d/ipv6_ports.inc" << EOF
listen [::]:8443 ipv6only=on ssl;
listen [::]:8880 ipv6only=on;
EOF
}
sw_cp_server_graceful_upgrade()
{
local pidfile="/var/run/sw-cp-server.pid"
local pidfile_old="/var/run/sw-cp-server.pid.oldbin"
local pid
# make sw-cp-server to spawn new master process
pid=$(grep -E -xm1 '[0-9]+' "$pidfile" 2>/dev/null) || return 1
kill -s USR2 "$pid"
local i=0
# Wait for both old and new master to write their pid file
while ! [ -s "$pidfile" -a -s "$pidfile_old" ]; do
i=$((i+1))
! [ $i -ge 10 ] || return 1
sleep 1
done
# stop old master process
pid=$(grep -E -xm1 '[0-9]+' "$pidfile_old" 2>/dev/null) || return 1
kill -s QUIT "$pid"
i=0
while [ -s "$pidfile_old" ]; do
i=$((i+1))
! [ $i -ge 10 ] || return 1
sleep 1
done
return 0
}
sw_cp_server_upgrade()
{
# upgrade isn't required if sw-cp-server isn't active
/bin/systemctl is-active sw-cp-server.service -q || return 0
# do not restart sw-cp-server if config check is failed
local msg rc=0
msg=$(/usr/sbin/sw-cp-serverd -t) || rc=$?
if [ $rc -ne 0 ]; then
echo "$msg" >&2
echo "sw-cp-server has not restarted during upgrade due to failure of configuration test" >&2
return $rc
fi
if ! sw_cp_server_graceful_upgrade; then
echo "Unable to restart sw-cp-server gracefully, performing full restart" >&2
/bin/systemctl restart sw-cp-server.service || return $?
fi
return 0
}
case "$1" in
configure)
detect_and_setup_ipv6_support
if [ -n "$2" ]; then
sw_cp_server_upgrade || :
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0
# vim:ft=sh: