File: libssl0.9.8.postinst

package info (click to toggle)
openssl 0.9.8c-4etch9
  • links: PTS
  • area: main
  • in suites: etch
  • size: 19,340 kB
  • ctags: 26,395
  • sloc: ansic: 203,603; perl: 18,445; makefile: 10,732; asm: 10,675; cpp: 4,379; sh: 2,925; lisp: 23
file content (176 lines) | stat: -rw-r--r-- 5,196 bytes parent folder | download | duplicates (2)
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
170
171
172
173
174
175
176
#!/bin/bash

. /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.8c-4etch3; then
	    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 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"
	    # 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_version 2.0

		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
		# Arghhh, close all the stupid debconf pipes
		db_stop
		
		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

			echo -n "  $service: stopping..."
			$idl stop > /dev/null 2>&1 || true
			sleep 1
			echo -n "starting..."
			if $idl start > /dev/null 2>&1; then
			    echo "done."
			else
			    echo "FAILED! ($?)"
			    failed="$service $failed"
			fi
		    done
		    echo
		    if [ -n "$failed" ]; then
			# Ruh roh, George
			echo "The following services failed to start: $failed"
			echo
			echo "You will need to start these manually by running \`/etc/init.d/<service> start'"
			echo "If the service still fails to start, you may need to file a bug on"
			echo "$(package_name) or the service involved."
		    else
			echo "Services restarted successfully."
		    fi
		    echo
		fi
	    else
		echo "Nothing to restart."
	    fi
	fi # end upgrading and $2 lt 0.9.8c-2
    fi # Upgrading
fi

#DEBHELPER#