#!/bin/sh # # $FreeBSD$ # # PROVIDE: slimserver # REQUIRE: LOGIN # KEYWORD: FreeBSD shutdown # # Add the following lines to /etc/rc.conf to enable slimserver: # #slimserver_enable="YES" # . %%RC_SUBR%% name=slimserver start_precmd="slimserver_start_precmd" stop_cmd="slimserver_stop" rcvar=`set_rcvar` command=%%PREFIX%%/%%SLIMDIR%%/slimserver.pl pidfile=/var/run/${name}.pid logfile=/var/log/slimserver.log statedir=/var/db/slimserver cachedir=${statedir}/cache playlistdir=${statedir}/playlists conffile=${statedir}/slimserver.conf u=slimserv g=slimserv command_args="--daemon --prefsfile=${conffile} --logfile=${logfile} --user=${u} --group=${g} --pidfile=${pidfile}" PGREP=%%PGREPBASE%%/bin/pgrep slimserver_start_precmd() { if [ ! -d ${statedir} ]; then mkdir -p ${statedir} chown -R ${u}:${g} ${statedir} fi if [ ! -d ${cachedir} ]; then mkdir -p ${cachedir} chown -R ${u}:${g} ${cachedir} fi if [ ! -d ${playlistdir} ]; then mkdir -p ${playlistdir} chown -R ${u}:${g} ${playlistdir} fi if [ ! -f ${conffile} ]; then touch ${conffile} chown ${u}:${g} ${conffile} fi if [ ! -f ${logfile} ]; then touch ${logfile} chown ${u}:${g} ${logfile} fi } slimserver_stop() { if [ ! -f ${pidfile} ]; then exit fi echo 'Stopping SlimServer.' rc_pid=`cat ${pidfile}` rc_pid=`${PGREP} -u ${u} | grep ${rc_pid}` if [ -n "${rc_pid}" ]; then # Should be mDNSResponderPosix, but the port truncates rc_pids="${rc_pid} `${PGREP} -u ${u} mDNSResponderPos`" kill $sig_stop $rc_pids wait_for_pids $rc_pids else echo "${name} not running? (check ${pidfile})" fi rm -f ${pidfile} } load_rc_config ${name} slimserver_enable=${slimserver_enable:-"NO"} slimserver_flags=${slimserver_flags:-""} run_rc_command "$1"