openssl1.0/debian/libssl1.0.2.postinst
2019-08-09 10:01:10 +02:00

208 lines
6.9 KiB
Bash

#!/bin/sh
. /usr/share/debconf/confmodule
set -e
package_name()
{
echo $(basename $0 .postinst)
}
# element() is a helper function for file-rc:
element() {
local element list IFS
element="$1"
[ "$2" = "in" ] && shift
list="$2"
[ "$list" = "-" ] && return 1
[ "$list" = "*" ] && return 0
IFS=","
set -- $list
case $element in
"$1"|"$2"|"$3"|"$4"|"$5"|"$6"|"$7"|"$8"|"$9")
return 0
esac
return 1
}
# filerc (runlevel, service) returns /etc/init.d/service, if service is
# running in $runlevel:
filerc() {
local runlevel basename
runlevel=$1
basename=$2
while read LINE
do
case $LINE in
\#*|"") continue
esac
set -- $LINE
SORT_NO="$1"; STOP="$2"; START="$3"; CMD="$4"
[ "$CMD" = "/etc/init.d/$basename" ] || continue
if element "$runlevel" in "$START" || element "S" in "$START"
then
echo "/etc/init.d/$basename"
return 0
fi
done < /etc/runlevel.conf
echo ""
}
if [ "$1" = "configure" ]
then
if [ ! -z "$2" ]; then
if dpkg --compare-versions "$2" lt 1.0.1g-2; then
echo -n "Checking for services that may need to be restarted..."
check="amanda-server anon-proxy apache2 apache-ssl"
check="$check apf-firewall asterisk bacula-director-common"
check="$check bacula-fd bacula-sd bind9 bip boinc-client"
check="$check boxbackup-client boxbackup-server bozo cfengine2"
check="$check cfengine3 citadel-server clamav-daemon clamav-freshclam"
check="$check clamcour collectd-core conserver-server courier-imap-ssl"
check="$check courier-mta-ssl courier-pop-ssl cyrus21-imapd"
check="$check cyrus21-pop3d cyrus-common cyrus-imspd dovecot-core"
check="$check ejabberd exim4 fetchmail freeradius ftpd-ssl gatling"
check="$check globus-gatekeeper inn inn2 libapache-mod-ssl lighttpd lldpd"
check="$check lwresd monit myproxy-server nagios-nrpe-server nginx-common"
check="$check ntp openntpd openssh-server openvpn partimage-server"
check="$check postfix postgresql-7.4 postgresql-8.0 postgresql-8.1"
check="$check postgresql-8.2 postgresql-9.1 postgresql-9.2 postgresql-9.3"
check="$check proftpd proftpd-ldap proftpd-basic"
check="$check proftpd-mysql proftpd-pgsql racoon sendmail slapd"
check="$check spamassassin ssh-nonfree stunnel4 syslog-ng tor unbound"
check="$check vsftpd"
# Only get the ones that are installed, and configured
check=$(dpkg -s $check 2> /dev/null | egrep '^Package:|^Status:' | awk '{if ($1 ~ /^Package:/) { package=$2 } else if ($0 ~ /^Status: .* installed$/) { print package }}')
# init script rewrites
check=$(echo $check | sed "
# The name of proftpd-{ldap,mysql,pgsql,basic} init script is
# same as "proftpd".
s/proftpd-.*/proftpd/g;
# dovecot-core ships its init script, but the
# script name is dovecot for dovecot-{imapd,pop3d}.
s/dovecot-core/dovecot/g;
# openssh-server's init script it called ssh
s/openssh-server/ssh/g;
# bacula-director-common's init is bacula-director
s/bacula-director-common/bacula-director/g;
# citadel server
s/citadel-server/citadel/g;
# collectd
s/collectd-core/collectd/g;
# cyrus
s/cyrus-common/cyrus-imapd/g;
# nginx
s/nginx-common/nginx/g;
")
echo "done."
fi
if dpkg --compare-versions "$2" lt 1.0.1g-3; then
echo -n "Checking for services that may need to be restarted..."
check2="chef chef-expander chef-server-api"
check2="$check2 chef-solr pound postgresql-common"
check2="$check2 prosody puppet puppetmaster snmpd"
# Only get the ones that are installed, and configured
check2=$(dpkg -s $check2 2> /dev/null | egrep '^Package:|^Status:' | awk '{if ($1 ~ /^Package:/) { package=$2 } else if ($0 ~ /^Status: .* installed$/) { print package }}')
# init script rewrites
check2=$(echo $check2 | sed -r "
s/chef\s/chef-client/g;
s/chef-server-api/chef-server/g;
s/postgresql-common/postgresql/g;
")
echo "done."
if [ -n "$check2" ]; then
check="$check $check2"
fi
fi
if [ -n "$check" ]; then
db_version 2.0
echo "Checking init scripts..."
for service in $check; do
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
idl=$(ls /etc/init.d/${service} 2> /dev/null | head -n 1)
if [ -n "$idl" ] && [ -x $idl ]; then
services="$service $services"
else
echo "WARNING: init script for $service not found."
fi
else
if [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then
idl=$(filerc $rl $service)
else
idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -n 1)
fi
if [ -n "$idl" ] && [ -x $idl ]; then
services="$service $services"
fi
fi
done
if [ -n "$services" ]; then
db_input critical libraries/restart-without-asking || true
db_go || true
db_get libraries/restart-without-asking
if [ "x$RET" != xtrue ]; then
db_reset libssl1.0.2/restart-services
db_set libssl1.0.2/restart-services "$services"
db_input critical libssl1.0.2/restart-services || true
db_go || true
db_get libssl1.0.2/restart-services
if [ "x$RET" != "x" ]
then
services=$RET
answer=yes
else
answer=no
fi
else
answer=yes
fi
echo
if [ "$answer" = yes ] && [ "$services" != "" ]; then
echo "Restarting services possibly affected by the upgrade:"
failed=""
rl=$(runlevel | sed 's/.*\ //')
for service in $services; do
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
idl="invoke-rc.d ${service}"
elif [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then
idl=$(filerc $rl $service)
else
idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -n 1)
fi
if ! $idl restart; then
failed="$service $failed"
fi
done
echo
if [ -n "$failed" ]; then
db_subst libssl1.0.2/restart-failed services "$failed"
db_input critical libssl1.0.2/restart-failed || true
db_go || true
else
echo "Services restarted successfully."
fi
echo
fi
else
echo "Nothing to restart."
fi
# Shut down the frontend, to make sure none of the
# restarted services keep a connection open to it
db_stop
fi # end upgrading and $2 lt 0.9.8c-2
fi # Upgrading
fi
#DEBHELPER#