xref: /OK3568_Linux_fs/buildroot/package/dropbear/S50dropbear (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# Starts dropbear sshd.
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun# Allow a few customizations from a config file
7*4882a593Smuzhiyuntest -r /etc/default/dropbear && . /etc/default/dropbear
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunstart() {
10*4882a593Smuzhiyun	DROPBEAR_ARGS="$DROPBEAR_ARGS -R"
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun	# If /etc/dropbear is a symlink to /var/run/dropbear, and
13*4882a593Smuzhiyun	#   - the filesystem is RO (i.e. we can not rm the symlink),
14*4882a593Smuzhiyun	#     create the directory pointed to by the symlink.
15*4882a593Smuzhiyun	#   - the filesystem is RW (i.e. we can rm the symlink),
16*4882a593Smuzhiyun	#     replace the symlink with an actual directory
17*4882a593Smuzhiyun	if [ -L /etc/dropbear \
18*4882a593Smuzhiyun	     -a "$(readlink /etc/dropbear)" = "/var/run/dropbear" ]
19*4882a593Smuzhiyun	then
20*4882a593Smuzhiyun		if rm -f /etc/dropbear >/dev/null 2>&1; then
21*4882a593Smuzhiyun			mkdir -p /etc/dropbear
22*4882a593Smuzhiyun		else
23*4882a593Smuzhiyun			echo "No persistent location to store SSH host keys. New keys will be"
24*4882a593Smuzhiyun			echo "generated at each boot. Are you sure this is what you want to do?"
25*4882a593Smuzhiyun			mkdir -p "$(readlink /etc/dropbear)"
26*4882a593Smuzhiyun		fi
27*4882a593Smuzhiyun	fi
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun	printf "Starting dropbear sshd: "
30*4882a593Smuzhiyun	umask 077
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun	start-stop-daemon -S -q -p /var/run/dropbear.pid \
33*4882a593Smuzhiyun		--exec /usr/sbin/dropbear -- $DROPBEAR_ARGS
34*4882a593Smuzhiyun	[ $? = 0 ] && echo "OK" || echo "FAIL"
35*4882a593Smuzhiyun}
36*4882a593Smuzhiyunstop() {
37*4882a593Smuzhiyun	printf "Stopping dropbear sshd: "
38*4882a593Smuzhiyun	start-stop-daemon -K -q -p /var/run/dropbear.pid
39*4882a593Smuzhiyun	[ $? = 0 ] && echo "OK" || echo "FAIL"
40*4882a593Smuzhiyun}
41*4882a593Smuzhiyunrestart() {
42*4882a593Smuzhiyun	stop
43*4882a593Smuzhiyun	start
44*4882a593Smuzhiyun}
45*4882a593Smuzhiyun
46*4882a593Smuzhiyuncase "$1" in
47*4882a593Smuzhiyun  start)
48*4882a593Smuzhiyun  	start
49*4882a593Smuzhiyun	;;
50*4882a593Smuzhiyun  stop)
51*4882a593Smuzhiyun  	stop
52*4882a593Smuzhiyun	;;
53*4882a593Smuzhiyun  restart|reload)
54*4882a593Smuzhiyun  	restart
55*4882a593Smuzhiyun	;;
56*4882a593Smuzhiyun  *)
57*4882a593Smuzhiyun	echo "Usage: $0 {start|stop|restart}"
58*4882a593Smuzhiyun	exit 1
59*4882a593Smuzhiyunesac
60*4882a593Smuzhiyun
61*4882a593Smuzhiyunexit $?
62