git: 46a10c978683 - main - security/headscale: add rc script and minimal working config

From: Ben Woods <woodsb02_at_FreeBSD.org>
Date: Mon, 18 Jul 2022 14:45:51 UTC
The branch main has been updated by woodsb02:

URL: https://cgit.FreeBSD.org/ports/commit/?id=46a10c9786832983ef9b6afeebc030f8f4879bf2

commit 46a10c9786832983ef9b6afeebc030f8f4879bf2
Author:     Christian McDonald <cmcdonald@netgate.com>
AuthorDate: 2022-06-17 20:41:33 +0000
Commit:     Ben Woods <woodsb02@FreeBSD.org>
CommitDate: 2022-07-18 14:43:39 +0000

    security/headscale: add rc script and minimal working config
    
    - Include rc script to enable/disable headscale service
    - Follow heir(7) with regards to headscale db, cache, config locations
    - Include a minimal configuration out of the box
    
    PR:             264744
    Approved by:    Michael Muenz <m.muenz@gmail.com>
---
 security/headscale/Makefile           | 24 ++++++++++++++++++--
 security/headscale/files/headscale.in | 41 +++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 2 deletions(-)

diff --git a/security/headscale/Makefile b/security/headscale/Makefile
index db5148827dcd..a479bc62e156 100644
--- a/security/headscale/Makefile
+++ b/security/headscale/Makefile
@@ -1,7 +1,7 @@
 PORTNAME=	headscale
 PORTVERSION=	0.15.0
 DISTVERSIONPREFIX=	v
-PORTREVISION=	4
+PORTREVISION=	5
 CATEGORIES=	security
 
 MAINTAINER=	m.muenz@gmail.com
@@ -17,11 +17,31 @@ BROKEN_armv7=	fails to compile: modernc.org/libc
 RUN_DEPENDS=	ca_root_nss>0:security/ca_root_nss
 
 USES=		go:modules
+USE_RC_SUBR=	headscale
 
 GO_MODULE=	github.com/juanfont/headscale
 
 GO_TARGET=	./cmd/headscale
 
-PLIST_FILES=	bin/headscale
+PLIST_FILES=	${ETCDIR}/config.yaml \
+		"@dir /var/cache/${PORTNAME}" \
+		"@dir /var/db/${PORTNAME}" \
+		bin/${PORTNAME}
+
+post-patch:
+	@${REINPLACE_CMD} -e 's|/etc/headscale|${PREFIX}/etc/${PORTNAME}|g' \
+		${WRKSRC}/cmd/headscale/cli/utils.go
+	@${REINPLACE_CMD} -e 's|/var/lib/headscale/db.sqlite|/var/db/${PORTNAME}/db.sqlite|g' \
+		${WRKSRC}/config-example.yaml
+	@${REINPLACE_CMD} -e 's|/var/lib/headscale/cache|/var/cache/${PORTNAME}|g' \
+		${WRKSRC}/config-example.yaml
+	@${REINPLACE_CMD} -e 's|/var/lib/headscale/private.key|${PREFIX}/etc/${PORTNAME}/private.key|g' \
+		${WRKSRC}/config-example.yaml
+
+post-install:
+	${MKDIR} ${STAGEDIR}${PREFIX}/etc/${PORTNAME}
+	${INSTALL_DATA} ${WRKSRC}/config-example.yaml ${STAGEDIR}${PREFIX}/etc/${PORTNAME}/config.yaml
+	${MKDIR} ${STAGEDIR}/var/db/${PORTNAME}
+	${MKDIR} ${STAGEDIR}/var/cache/${PORTNAME}
 
 .include <bsd.port.mk>
diff --git a/security/headscale/files/headscale.in b/security/headscale/files/headscale.in
new file mode 100644
index 000000000000..a3f4ada0b6f4
--- /dev/null
+++ b/security/headscale/files/headscale.in
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# PROVIDE: headscale
+# REQUIRE: NETWORKING
+# KEYWORD: shutdown
+#
+
+. /etc/rc.subr
+
+name=headscale
+rcvar=headscale_enable
+
+load_rc_config $name
+
+: ${headscale_enable:="NO"}
+: ${headscale_syslog_output_enable:="NO"}
+: ${headscale_syslog_output_priority:="info"}
+: ${headscale_syslog_output_facility:="daemon"}
+
+if checkyesno headscale_syslog_output_enable; then
+	headscale_syslog_output_flags="-t ${name} -T ${name}"
+
+	if [ -n "${headscale_syslog_output_priority}" ]; then
+		headscale_syslog_output_flags="${headscale_syslog_output_flags} -s ${headscale_syslog_output_priority}"
+	fi
+
+	if [ -n "${headscale_syslog_output_facility}" ]; then
+		headscale_syslog_output_flags="${headscale_syslog_output_flags} -l ${headscale_syslog_output_facility}"
+	fi
+fi
+
+pidfile=/var/run/${name}.pid
+procname="%%PREFIX%%/bin/${name}"
+
+start_cmd="${name}_start"
+
+headscale_start() {
+	/usr/sbin/daemon -f ${headscale_syslog_output_flags} -p ${pidfile} ${procname} serve
+}
+
+run_rc_command "$1"