forked from community-ssu/openssl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlibssl0.9.8.postinst
169 lines (151 loc) · 4.9 KB
/
libssl0.9.8.postinst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#!/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 0.9.8g-9 && dpkg --compare-versions "$2" gt 0.9.8c-4etch3; then
db_version 2.0
echo -n "Checking for services that may need to be restarted..."
check="sendmail openssh-server"
check="$check apache2-common ssh-nonfree exim4"
check="$check apache-ssl libapache-mod-ssl openvpn spamassassin"
check="$check courier-imap-ssl courier-mta-ssl courier-pop-ssl"
check="$check postfix cyrus21-imapd cyrus21-pop3d"
check="$check postgresql-7.4 postgresql-8.0 postgresql-8.1"
check="$check postgresql-8.2"
check="$check racoon dovecot-common bind9"
check="$check ntp openntpd clamcour nagios-nrpe-server"
check="$check clamav-freshclam clamav-daemon"
check="$check fetchmail ftpd-ssl slapd"
check="$check proftpd proftpd-ldap proftpd-mysql proftpd-pgsql"
check="$check partimage-server conserver-server tor"
check="$check stunnel4"
# 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 }}')
# apache2 ships its init script in apache2-common, but the
# script is apache2
check=$(echo $check | sed 's/apache2-common/apache2/g')
# For mod-ssl apache has to be restarted
check=$(echo $check | sed 's/libapache-mod-ssl/apache/g')
# The name of proftpd-{ldap,mysql,pgsql} init script is
# same as "proftpd".
check=$(echo $check | sed 's/proftpd-.*/proftpd/g')
# dovecot-common ships its init script, but the
# script name is dovecot for dovecot-{imapd,pop3d}.
check=$(echo $check | sed 's/dovecot-common/dovecot/g')
# openssh-server's init script it called ssh
check=$(echo $check | sed 's/openssh-server/ssh/g')
echo "done."
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_reset libssl0.9.8/restart-services
db_set libssl0.9.8/restart-services "$services"
db_input critical libssl0.9.8/restart-services || true
db_go || true
db_get libssl0.9.8/restart-services
if [ "x$RET" != "x" ]
then
services=$RET
answer=yes
else
answer=no
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 libssl0.9.8/restart-failed services "$failed"
db_input critical libssl0.9.8/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#