nats-server: Create rc.d and SMF bits

This commit is contained in:
Juraj Lutter 2020-10-12 15:36:32 +00:00
parent 09cb79a555
commit 2d7beee4df
4 changed files with 158 additions and 0 deletions

View File

@ -12,7 +12,36 @@ LICENSE= apache-2.0
GO_BUILD_PATTERN= .
NATS_USER= natssrv
NATS_GROUP= natssrv
NATS_HOMEDIR= ${VARBASE}/nats-server
NATS_LOGDIR= ${VARBASE}/log/nats-server
NATS_LOGFILE= ${NATS_LOGDIR}/nats-server.log
CHECK_SSP_SKIP= bin/*
.include "go-modules.mk"
.include "../../mk/bsd.prefs.mk"
PKG_GROUPS= ${NATS_GROUP}
PKG_USERS= ${NATS_USER}:${NATS_GROUP}
PKG_HOME.${NATS_USER}= ${NATS_HOMEDIR}
PKG_GECOS.${NATS_USER}= nats.io server
RCD_SCRIPTS= nats-server
SMF_NAME= nats-server
SMF_METHODS= ${RCD_SCRIPTS}
FILES_SUBST+= NATS_USER=${NATS_USER}
FILES_SUBST+= NATS_GROUP=${NATS_GROUP}
FILES_SUBST+= NATS_HOMEDIR=${NATS_HOMEDIR}
FILES_SUBST+= NATS_LOGDIR=${NATS_LOGDIR}
FILES_SUBST+= NATS_LOGFILE=${NATS_LOGFILE}
OWN_DIRS_PERMS+= ${NATS_HOMEDIR} ${NATS_USER} ${NATS_GROUP} 0700
MAKE_DIRS_PERMS+= ${NATS_LOGDIR} ${NATS_USER} ${NATS_GROUP} 0700
.include "../../lang/go/go-module.mk"
.include "../../mk/bsd.pkg.mk"

View File

@ -0,0 +1,68 @@
#!@RCD_SCRIPTS_SHELL@
#
# $NetBSD$
#
# PROVIDE: nats-server
# REQUIRE: DAEMON LOGIN mountall
# KEYWORD: shutdown
#
# You will need to set some variables in /etc/rc.conf to start nats-server:
#
# natsserver=YES
#
# The following variables are optional:
#
# natsserver_pidfile="/path/to/p.pid" path to nats-server PID file
# default:
# @NATS_HOMEDIR@/nats-server.pid
# natsserver_logfile="/path/to/p.log" path to nats-server log file
# default:
# @NATS_LOGFILE@
# natsserver_user="natssrv" the username for nats-server daemon
# natsserver_group="natssrv" the group for nats-server daemon
if [ -f /etc/rc.subr ]; then
. /etc/rc.subr
fi
name="nats-server"
rcvar="natsserver"
command="@PREFIX@/bin/nats-server"
: ${natsserver_pidfile:="@NATS_HOMEDIR@/nats-server.pid"}
: ${natsserver_logfile:="@NATS_LOGFILE@"}
: ${natsserver_user:="natssrv"}
: ${natsserver_group:="natssrv"}
start_cmd="natssrv_start"
natssrv_start()
{
@ECHO@ "Starting ${name}."
ulimit -n 4096
cd @NATS_HOMEDIR@
/usr/bin/su ${natsserver_user}:${natsserver_group} \
${command} -P ${natsserver_pidfile} \
-l ${natsserver_logfile} &
}
if [ -f /etc/rc.subr -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]; then
load_rc_config $name
pidfile="${natsserver_pidfile}"
run_rc_command "$1"
else
if [ -f /etc/rc.conf ]; then
. /etc/rc.conf
fi
pidfile="${natsserver_pidfile}"
case "$1" in
stop)
if [ -r "${pidfile}" ]; then
@ECHO@ "Stopping ${name}."
kill `@CAT@ ${pidfile}`
fi
;;
*)
eval ${start_cmd}
;;
esac
fi

View File

@ -0,0 +1,32 @@
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='@SMF_NAME@'>
<service name='@SMF_PREFIX@/@SMF_NAME@' type='service' version='1'>
<create_default_instance enabled='false' />
<single_instance />
<dependency name='fs' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/system/filesystem/local' />
</dependency>
<dependency name='net' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/network/loopback' />
</dependency>
<method_context working_directory='@VARBASE@/nats-server'>
<method_credential user='@NATS_USER@' group='@NATS_GROUP@' />
<method_environment>
<envvar name='LD_PRELOAD_32' value='/usr/lib/extendedFILE.so.1' />
</method_environment>
</method_context>
<exec_method name='start' type='method' exec='@PREFIX@/@SMF_METHOD_FILE.nats-server@ start' timeout_seconds='0' />
<exec_method name='stop' type='method' exec='@PREFIX@/@SMF_METHOD_FILE.nats-server@ stop' timeout_seconds='0' />
<stability value='Evolving' />
<template>
<common_name>
<loctext xml:lang='C'>nats.io messaging server</loctext>
</common_name>
<documentation>
<manpage title='NATS' section='1' />
<doc_link name='nats.io' uri='https://nats.io/' />
</documentation>
</template>
</service>
</service_bundle>

View File

@ -0,0 +1,29 @@
#!@SMF_METHOD_SHELL@
#
# $NetBSD$
#
# Init script for nats-server
#
. /lib/svc/share/smf_include.sh
PIDFILE="@NATS_HOMEDIR@/nats-server.pid"
LOGFILE="@NATS_LOGFILE@"
ulimit -n 10240
case "$1" in
start)
@PREFIX@/bin/nats-server -P ${PIDFILE} \
-l ${LOGFILE} &
;;
stop)
[ -f ${PIDFILE} ] && kill `@HEAD@ -1 ${PIDFILE}`
;;
*)
echo "Usage: $0 {start|stop}" >&2
exit 1
;;
esac
exit $SMF_EXIT_OK