X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/ae8928d2ffbfa3b9dba70bc2f70379ddc20947dc..f48ae55ba0a1acdd96bdfc78130b65008322f53b:/contrib/tripe.service.in diff --git a/contrib/tripe.service.in b/contrib/tripe.service.in new file mode 100644 index 00000000..7261c1ab --- /dev/null +++ b/contrib/tripe.service.in @@ -0,0 +1,65 @@ +;;; -*-conf-windows-*- +;;; +;;; systemd service configuration for the main tripe server. + +[Unit] +Description=Tripe virtual private network server +Documentation=man:tripe(8) + +ConditionPathExists=@sbindir@/tripe +ConditionPathExists=@bindir@/tripectl + +After=syslog.target network.target + +[Install] +WantedBy=multi-user.target + +[Service] +Type=forking +PIDFile=/var/run/tripectl.pid + +ExecStart=/bin/sh -e -c ' \ + . @initconfig@ && \ + logopt= && \ + case $${syslogp-nil} in nil) ;; *) logopt="$$logopt -l" ;; esac && \ + case $${logfile+t},$${syslogp-nil} in \ + t,*) logopt="$$logopt -f$$logfile" ;; \ + ,nil) logopt="$$logopt -f@logfile@" ;; \ + esac && \ + exec @bindir@/tripectl -D -s -p@sbindir@/tripe \ + -P/var/run/tripectl.pid \ + $$logopt \ + $${keytag+-S-t$$keytag} \ + $${addr+-S-b$$addr} $${port+-S-p$$port} \ + $${user+-U$$user} $${group+-G$$group} \ + $${sockmode+-S-m$$sockmode} \ + $${trace+-S-t$$trace} \ + $${tunnel+-S-n$$tunnel} \ + $$miscopts' + +ExecReload=@bindir@/tripectl RELOAD +ExecStop=@bindir@/tripectl QUIT + +ExecStartPre=/bin/sh -e -c ' \ + if { test -f /proc/misc && grep -q tun /proc/misc; } || \ + modprobe -q tun; \ + then \ + : good; \ + else \ + echo >&2 "tripe needs the TUN/TAP driver"; exit 1; \ + fi; \ + if test -c /dev/net/tun; then \ + : good; \ + else \ + echo >&2 "tripe needs /dev/net/tun, which is missing"; \ + exit 1; \ + fi' + +ExecStartPost=/bin/sh -e -c ' \ + for i in 1 2 3 4 give-up; do \ + @bindir@/tripectl HELP >/dev/null 2>&1 && break; \ + sleep 1; \ + done; \ + case $$i in \ + give-up) echo >&2 "tripe daemon failed to start"; exit 1 ;; \ + esac'