Subversion Repositories

?revision_form?Rev ?revision_input??revision_submit??revision_endform?

Rev 40 | Rev 62 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 magnus 1
#!/bin/sh
2
# postinst script for lsh-server
3
#
4
# see: dh_installdeb(1)
5
 
6
set -e
7
 
8
# summary of how this script can be called:
9
#        * <postinst> `configure' <most-recently-configured-version>
10
#        * <old-postinst> `abort-upgrade' <new version>
11
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
12
#          <new-version>
13
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
14
#          <failed-install-package> <version> `removing'
15
#          <conflicting-package> <version>
16
# for details, see http://www.debian.org/doc/debian-policy/ or
17
# the debian-policy package
18
#
19
# quoting from the policy:
20
#     Any necessary prompting should almost always be confined to the
21
#     post-installation script, and should be protected with a conditional
22
#     so that unnecessary prompting doesn't happen if a package's
23
#     installation fails and the `postinst' is called with `abort-upgrade',
24
#     `abort-remove' or `abort-deconfigure'.
25
 
61 magnus 26
create_seed_and_key() {
27
    RANDOM_SEED="/var/spool/lsh/yarrow-seed-file"
28
    HOST_KEY="/etc/lsh_host_key"
29
    OPENSSH_HOST_KEY="/etc/ssh/ssh_host_rsa_key"
2 magnus 30
 
61 magnus 31
    if [ ! -f "$RANDOM_SEED" ]; then
32
	echo -n "Creating lsh random seed file (this may take a while) ..."
33
	DIR=$(dirname "$RANDOM_SEED")
34
	if install -d -m 700 "$DIR" &&
35
	    dd if=/dev/random "of=$RANDOM_SEED" bs=1 count=32 2>/dev/null &&
36
	    chmod 600 "$RANDOM_SEED"; then
37
	    echo " done."
38
	else
39
	    echo " failed!"
40
	    return 1
41
	fi
42
    fi
43
 
44
    if [ ! -f "$HOST_KEY" ]; then
45
	if [ -r "$OPENSSH_HOST_KEY" ]; then
46
	    echo -n "Converting existing OpenSSH RSA host key ... "
47
	    if pkcs1-conv < "$OPENSSH_HOST_KEY" | lsh-writekey --server &&
48
		[ -f "$HOST_KEY" ]; then
49
		echo -n "done."
50
		return 0
51
	    fi
52
	    echo "failed. Will generate a new key instead."
53
	fi
54
	echo -n "Creating lsh host key ... "
55
	if lsh-keygen --server | lsh-writekey --server &&
56
	    [ -f "$HOST_KEY" ]; then
57
	    echo " done."
58
	else
59
	    echo " failed!"
60
	    return 1
61
	fi
62
    fi
63
    return 0
64
}
65
 
2 magnus 66
LSHD_DEFAULTS=/etc/default/lsh-server
67
 
68
case "$1" in
69
    configure)
70
 
71
	# This needs to be fixed. If we do stuff this way, strange things will
72
	# happen ... the user can specify stuff to debconf and old options can
73
	# still be written to the config file :-(
74
	# First, get default options
75
	#[ -e "$LSHD_DEFAULTS" ] && . "$LSHD_DEFAULTS"
76
 
77
	# Fall back to default options if necessary
78
	LSHD_PORT=${LSHD_PORT:-2222}
79
	ENABLE_SFTP=${ENABLE_SFTP:-false}
80
 
81
	# Make sure ENABLE_SFTP is either "true" or "false", set up option
82
	case "$ENABLE_SFTP" in
83
	    true|TRUE|y*|Y*)
84
		ENABLE_SFTP=true
85
		;;
86
	    *)
87
		ENABLE_SFTP=false
88
		;;
89
	esac
90
 
91
	. /usr/share/debconf/confmodule
92
 
93
	db_get "lsh-server/lshd_port"; LSHD_PORT="$RET"
94
	db_get "lsh-server/sftp"; ENABLE_SFTP="$RET"
95
 
96
	# OK, now make the config file
97
 
98
	cat <<"EOF" >"$LSHD_DEFAULTS"
40 magnus 99
# Configuration file generated by lsh-server.postinst.
2 magnus 100
# You can change the lsh-server configuration either by editing
40 magnus 101
# this file, or by running dpkg-reconfigure lsh-server.
2 magnus 102
#
103
EOF
104
 
105
	echo "LSHD_PORT=\"$LSHD_PORT\"" >>"$LSHD_DEFAULTS"
106
	echo "ENABLE_SFTP=\"$ENABLE_SFTP\"" >> "$LSHD_DEFAULTS"
107
 
108
	# Versions before 2.0.1cdbs-4 have a security issue, therefore
109
	# have the random seed regenerated.
110
	if [ "$2" ] && [ -e "/var/spool/lsh/yarrow-seed-file" ] \
111
		&& dpkg --compare-versions "$2" lt "2.0.1cdbs-4"; then
112
		echo " Removing /var/spool/lsh/yarrow-seed-file, because of you are upgrading from a"
113
		echo " version with a known security bug, so we can't trust the seed any more."
114
		echo " It will be automatically regenerated from /dev/random."
115
		rm /var/spool/lsh/yarrow-seed-file
116
	fi
117
 
118
	# Disable ssh if needed
119
	if [ "$LSHD_PORT" -eq 22 ] ; then
120
	    if [ ! -d /etc/ssh ] ; then
121
		mkdir -p /etc/ssh
122
	    fi
123
 
124
	    file=/etc/ssh/sshd_not_to_be_run
125
	    if [ ! -f "$file" ] ; then
126
# stop ssh from starting at bootup
127
		cat  <<"EOF" >"$file"
128
LSH_SERVER_CONFIG_GENERATED
40 magnus 129
# Generated by lsh-server.postinst
2 magnus 130
# Please don't remove this file unless you have first disabled lsh, and don't
131
# change the first line ... otherwise lsh-server won't recognise it!!!
132
EOF
133
	    fi
134
	fi
61 magnus 135
 
136
	create_seed_and_key
2 magnus 137
    ;;
138
 
139
    abort-upgrade|abort-remove|abort-deconfigure)
140
 
141
    ;;
142
 
143
    *)
144
        echo "postinst called with unknown argument \`$1'" >&2
145
        exit 1
146
    ;;
147
esac
148
 
149
# dh_installdeb will replace this with shell code automatically
150
# generated by other debhelper scripts
151
 
152
#DEBHELPER#
153
 
154
exit 0