From b48697c64a0ac57eed494104f4c82d61f5b6fc89 Mon Sep 17 00:00:00 2001 From: Lorenzo Puliti Date: Mon, 5 Aug 2019 20:24:41 +0200 Subject: Add a runscript for runit Add a 'run' and a 'finish' script for runit init system; rely on dh-runit for maintscript code. --- debian/control | 2 ++ debian/openssh-server.runit | 1 + debian/openssh-server.ssh.runscript/finish | 16 ++++++++++++++++ debian/openssh-server.ssh.runscript/run | 20 ++++++++++++++++++++ debian/rules | 2 +- 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 debian/openssh-server.runit create mode 100644 debian/openssh-server.ssh.runscript/finish create mode 100644 debian/openssh-server.ssh.runscript/run diff --git a/debian/control b/debian/control index c690df075..4ecf5abed 100644 --- a/debian/control +++ b/debian/control @@ -7,6 +7,7 @@ Build-Depends: autotools-dev, debhelper-compat (= 9), dh-autoreconf, dh-exec, + dh-runit(>=2.8.8), dpkg-dev (>= 1.16.1~), libaudit-dev [linux-any], libedit-dev, @@ -92,6 +93,7 @@ Conflicts: sftp, Replaces: openssh-client (<< 1:7.9p1-8), ssh, ssh-krb5, +Breaks: ${runit:Breaks}, Suggests: molly-guard, monkeysphere, rssh, diff --git a/debian/openssh-server.runit b/debian/openssh-server.runit new file mode 100644 index 000000000..cb659a00b --- /dev/null +++ b/debian/openssh-server.runit @@ -0,0 +1 @@ +debian/openssh-server.ssh.runscript logscript,name=ssh,since=1:8.0p1-5 diff --git a/debian/openssh-server.ssh.runscript/finish b/debian/openssh-server.ssh.runscript/finish new file mode 100644 index 000000000..7e29ef1db --- /dev/null +++ b/debian/openssh-server.ssh.runscript/finish @@ -0,0 +1,16 @@ +#!/bin/sh +set -e + +NAME=ssh + +[ $1 = -1 ] && echo "runsv: ERROR in $NAME: unexpected error or wrong sh syntax" +# no need to stop the service here, runsv will stop trying after the first attempt + +[ $1 = 161 ] && echo "runsv: ERROR $1 in $NAME: disabled by local settings" \ + && sv d $(dirname $0) && exit 0 + +[ $1 = 162 ] && echo "runsv: ERROR $1 in $NAME: configtest or early setup failed" \ + && sv d $(dirname $0) && exit 0 + +echo "$NAME Stopped" + diff --git a/debian/openssh-server.ssh.runscript/run b/debian/openssh-server.ssh.runscript/run new file mode 100644 index 000000000..f9b08a871 --- /dev/null +++ b/debian/openssh-server.ssh.runscript/run @@ -0,0 +1,20 @@ +#!/usr/bin/env /lib/runit/invoke-run +set -e + +NAME="ssh" + +sv start auditd || sv check auditd || true + +# don't start if 'sshd_not_to_be_start' exists +test -e /etc/ssh/sshd_not_to_be_run && exit 161 + +#Create /run/sshd +test -d /run/sshd || mkdir /run/sshd && chmod 0755 /run/sshd + +exec 2>&1 + +#Config test +/usr/sbin/sshd -t || exit 162 + +echo "Starting $NAME..." +exec /usr/sbin/sshd -D -e $SSHD_OPTS diff --git a/debian/rules b/debian/rules index 550306d4f..4208569e2 100755 --- a/debian/rules +++ b/debian/rules @@ -106,7 +106,7 @@ confflags += --with-ldflags='$(strip -Wl,--as-needed $(LDFLAGS))' confflags_udeb += --with-ldflags='-Wl,--as-needed' %: - dh $@ --with=autoreconf,systemd + dh $@ --with=autoreconf,systemd,runit autoreconf: autoreconf -f -i -- cgit v1.2.3