#!/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 #

supervisor=supervise-daemon
description="Small SSH server using NaCl (no dependency on OpenSSL)"

nice="0"
pidfile="/run/tinysshd.sd.pid"
supervise_daemon_args=""

daemon=/usr/sbin/tinysshd
keygen=$daemon-makekey

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

command="tcpserver"
command_args="-HRDl0 ${IP} ${PORT} $daemon ${OPTIONS} $keydir"
proxy_env=/etc/profile.d/proxy.sh

depend() {
	use net
	after logger firewall
}

in_contr() {
	grep "container=" /proc/1/environ
}

start_pre() {
	checkpath --directory ${CONFDIR}
	eval $keygen $keydir 2>/dev/null

	if [ -z "$(in_contr)" ]; then
		supervise_daemon_args="$supervise_daemon_args -N $nice"
	fi

	# tinyssh also runs from inetd without tcpserver
	if [ ! -x /usr/bin/tcpserver ]; then
		# openrc does not use proxy environment by default
		if [ -f "$proxy_env" ]; then
			. $proxy_env
		fi
		apk add ucspi-tcp6
	fi
}
