#!/bin/sh # PROVIDE: nuke # REQUIRE: DAEMON NETWORKING # KEYWORD: shutdown # Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable nuke: # nuke_enable (bool): Set to "NO" by default. # Set it to "YES" to enable nuke. # nuke_user (user): Set to "www" by default. # User to run nuke as. # nuke_group (group): Set to "www" by default. # Group to run nuke as. # nuke_bin (str): Set to "/usr/local/bin/nuke" by default. # Location of the nuke binary # nuke_args (str): Set to "" by default. # Extra flags passed to nuke. # nuke_env (str): Set to "" by default. # List of environment variables to be set before starting.. # nuke_env_file (str): Set to "/etc/nuke.env" by default. # Location of a file containing environment variables. # # Closely follows the init script from https://cgit.freebsd.org/ports/tree/www/go-anubis/files/anubis.in # with a couple of adjustments for more flexible environment variable handling . /etc/rc.subr name=nuke rcvar=nuke_enable load_rc_config ${name} : ${nuke_enable="NO"} : ${nuke_user="www"} : ${nuke_group="www"} : ${nuke_bin="/usr/local/bin/nuke"} : ${nukeargs=""} : ${nuke_env=""} : ${nuke_env_file="/etc/nuke.env"} pidfile=/var/run/${name}.pid daemon_pidfile=/var/run/${name}-daemon.pid command=/usr/sbin/daemon procname=${nuke_bin} logfile=/var/log/${name}.log command_args="-c -f -R 5 -r -T ${name} -p ${pidfile} -P ${daemon_pidfile} -o ${logfile} ${procname} ${nuke_args}" start_precmd=nuke_startprecmd stop_postcmd=nuke_stoppostcmd nuke_startprecmd () { if [ ! -e ${logfile} ]; then install -o ${nuke_user} -g ${nuke_group} /dev/null ${logfile} fi if [ ! -e ${daemon_pidfile} ]; then install -o ${nuke_user} -g ${nuke_group} /dev/null ${daemon_pidfile} fi if [ ! -e ${pidfile} ]; then install -o ${nuke_user} -g ${nuke_group} /dev/null ${pidfile} fi } nuke_stoppostcmd() { if [ -f "${daemon_pidfile}" ]; then pids=$( pgrep -F ${daemon_pidfile} 2>&1 ) _err=$? [ ${_err} -eq 0 ] && kill -9 ${pids} fi } run_rc_command "$1"