summaryrefslogtreecommitdiff
path: root/source/installer/sources/initrd/etc/rc.d/rc.dropbear
diff options
context:
space:
mode:
Diffstat (limited to 'source/installer/sources/initrd/etc/rc.d/rc.dropbear')
-rwxr-xr-xsource/installer/sources/initrd/etc/rc.d/rc.dropbear58
1 files changed, 58 insertions, 0 deletions
diff --git a/source/installer/sources/initrd/etc/rc.d/rc.dropbear b/source/installer/sources/initrd/etc/rc.d/rc.dropbear
new file mode 100755
index 00000000..a9ed47fd
--- /dev/null
+++ b/source/installer/sources/initrd/etc/rc.d/rc.dropbear
@@ -0,0 +1,58 @@
+#!/bin/sh
+# Start/stop/restart the dropbear secure shell server:
+
+# Terminate the script now if we have no interface with an IP address:
+if ! `ip -f inet -o addr show | grep -v " lo " 1>/dev/null 2>/dev/null` ; then
+ exit 1
+fi
+
+dropbear_start() {
+ # Create host keys if needed.
+ if [ ! -f /etc/dropbear/dropbear_rsa_host_key ]; then
+ /bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
+ fi
+ if [ ! -f /etc/dropbear/dropbear_dss_host_key ]; then
+ /bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
+ fi
+ touch /var/log/lastlog # The file is missing in the installer
+ /sbin/dropbear 2>> /var/log/dropbear.log
+}
+
+dropbear_stop() {
+ killall dropbear
+}
+
+dropbear_restart() {
+ if [ -r /var/run/dropbear.pid ]; then
+ echo "WARNING: killing listener process only. To kill every dropbear process, you "
+ echo " must use 'rc.dropbear stop'. 'rc.dropbear restart' kills only the "
+ echo " parent dropbear to allow an admin logged in through dropbear to use "
+ echo " 'rc.dropbear restart' without being cut off. If dropbear has been "
+ echo " upgraded, new connections will now use the new version, which should "
+ echo " be a safe enough approach."
+ kill `cat /var/run/dropbear.pid`
+ else
+ echo "WARNING: There does not appear to be a parent instance of dropbear running."
+ echo " If you really want to kill all running instances of dropbear "
+ echo " (including any sessions currently in use), run "
+ echo " '/etc/rc.d/rc.dropbear stop' instead."
+ exit 1
+ fi
+ sleep 1
+ dropbear_start
+}
+
+case "$1" in
+'start')
+ dropbear_start
+ ;;
+'stop')
+ dropbear_stop
+ ;;
+'restart')
+ dropbear_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+