File: libssl0.9.7.postinst

package info (click to toggle)
openssl097 0.9.7k-3.1etch5
  • links: PTS
  • area: main
  • in suites: etch
  • size: 18,568 kB
  • ctags: 24,036
  • sloc: ansic: 178,345; asm: 19,384; perl: 17,912; makefile: 13,645; cpp: 4,379; sh: 2,687; lisp: 23
file content (139 lines) | stat: -rw-r--r-- 3,763 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
#!/bin/sh -e

. /usr/share/debconf/confmodule

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.7d-1; then
	    echo -n "Checking for services that may need to be restarted..."

	    check="sendmail ssh"
	    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-tls cyrus21-imapd cyrus21-pop3d"
	    check="$check postgresql racoon"
	    # Only get the ones that are installed, and configured
	    check=$(dpkg -s $check 2> /dev/null | sed '/^$/{N;/^\n$/D;}' | awk 'BEGIN{RS="\n\n";FS="\n"}{if ( $2 ~ /Status: .* installed$/ ) { print $1 } }' | cut -f 2 -d ' ')
	    # 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')
	    rl=$(runlevel | awk '{print $2}')
	    for service in $check; do
		if [ -f /usr/share/file-rc/rc -o -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
	    done
	    echo "done."
	    if [ -n "$services" ]; then
		db_version 2.0

		db_reset libssl0.9.7/restart-services
		db_set libssl0.9.7/restart-services "$services"
		db_input critical libssl0.9.7/restart-services || true
		db_go || true
		db_get libssl0.9.7/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=""
		    for service in $services; do
			idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -n 1)
			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
	    fi
	fi # end upgrading and $2 lt 0.9.7c-1
    fi # Upgrading
fi

#DEBHELPER#