#!/sbin/openrc-run
# Alpine Linux init.d for TinySSH
# Copyright 2017 Stuart Cardall (https://github.com/itoffshore)
# Distributed under the terms of the GNU General Public License, v2 or later #
# Modified by Laurent Bercot <ska-devel@skarnet.org> 2021-12-07

OPTIONS=${OPTIONS:-\-v -l}
PORT=${PORT:-22}
IP=${IP:-0.0.0.0}
CONFDIR=${CONFDIR:-/etc/tinyssh}
keydir=${CONFDIR}/sshkeys

depend() {
	use net
	after logger firewall
}

name=tinysshd
description="Small SSH server using libsodium (no dependency on OpenSSL)"
command="s6-tcpserver"
command_args="${IP} ${PORT} $name ${OPTIONS} $keydir"
command_background=true
pidfile=/var/run/tinysshd.pid

start_pre() {
	if ! [ -d "$keydir" ]; then
		checkpath -D ${CONFDIR}
		tinysshd-makekey $keydir 2>/dev/null
	fi
}

stop_post() {
	if [ "$RC_RUNLEVEL" = "shutdown" ]; then
		local _tinysshd_pids=$(pgrep tinysshd)
		if [ -n "$_tinysshd_pids" ]; then
			ebegin "Shutting down ssh connections"
			# shellcheck disable=SC2086
			kill -TERM $_tinysshd_pids >/dev/null 2>&1
			eend 0
		fi
	fi
}
