freebsd-ports/net/vncreflector/files/vncreflector.sh.in
Doug Barton c49d1a3273 Remove the FreeBSD KEYWORD from all rc.d scripts where it appears.
We have not checked for this KEYWORD for a long time now, so this
is a complete noop, and thus no PORTREVISION bump. Removing it at
this point is mostly for pedantic reasons, and partly to avoid
perpetuating this anachronism by copy and paste to future scripts.
2006-02-20 20:47:50 +00:00

151 lines
3.7 KiB
Bash

#!/bin/sh
# $FreeBSD$
# PROVIDE: vncreflector
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
_etcdir="%%PREFIX%%/etc/vncreflector"
# Define these vncreflector_* variables in one of these files:
# /etc/rc.conf
# /etc/rc.conf.local
# /etc/rc.conf.d/vncreflector
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
#
vncreflector_enable=${vncreflector_enable-"NO"}
vncreflector_hostinfofile=${vncreflector_hostinfofile-"${_etcdir}/hostinfo"}
vncreflector_passwdfile=${vncreflector_passwdfile-"${_etcdir}/passwd"}
vncreflector_ports=${vncreflector_ports-"5999"}
vncreflector_requirepasswdfile=${vncreflector_requirepasswdfile-"YES"}
vncreflector_flags=${vncreflector_flags-"-q"}
vncreflector_pidfile=${vncreflector_pidfile-"/var/run/vncreflector.pid"}
vncreflector_logfile=${vncreflector_logfile-"/var/log/vncreflector.log"}
vncreflector_activefile=${vncreflector_logfile-"/var/log/vncreflector.log"}
vncreflector_addr=${vncreflector_addr-""}
#vncreflector_addr_5999=
. %%RC_SUBR%%
name="vncreflector"
rcvar=`set_rcvar`
start_cmd="vncreflector_start"
stop_cmd="vncreflector_stop"
command="%%PREFIX%%/bin/${name}"
# Disconnect from host, reread host file, reconnect.
sig_reload=USR2
vncreflector_start()
{
_started=0
echo -n "starting ${name}:"
rc_flags=${vncreflector_flags}
for _port in ${vncreflector_ports}; do
echo -n " ${_port}"
pidfile="${vncreflector_pidfile}.${_port}"
rc_pid=$(check_pidfile $pidfile $command)
if [ -z "$rc_fast" -a -n "$rc_pid" ]; then
echo -n "!"
continue
fi
_hostinfofile=""
_passwdfile=""
# if we only have one port, try the bare hostinfo
# before appending the port number.
if [ "${vncreflector_ports}" = "${_port}" -a \
-r "${vncreflector_hostinfofile}" ]; then
_hostinfofile=${vncreflector_hostinfofile}
# if we found a bare hostinfo file, we'll also
# look for a bare passwd file
if [ -r "${vncreflector_passwdfile}" ]; then
_passwdfile=${vncreflector_passwdfile}
fi
fi
if [ -z "${_hostinfofile}" ]; then
_hostinfofile="${vncreflector_hostinfofile}.${_port}"
fi
if [ ! -r "${_hostinfofile}" ]; then
echo -n "!hostfile"
continue
fi
# if we don't have a passwdfile yet, try to use a
# port-specific one and fall back to trying a global one
if [ -z "${_passwdfile}" ]; then
_passwdfile=${vncreflector_passwdfile}
if [ -r ${_passwdfile}.${_port} ]; then
_passwdfile="${_passwdfile}.${_port}"
fi
fi
if [ -r "${_passwdfile}" ]; then
_passwdarg="-p${_passwdfile}"
else
if checkyesno vncreflector_requirepasswdfile; then
if [ -z "$rc_force" ]; then
warn "missing passwd file for ${_port}."
return 1
else
echo -n "!passwdfile"
continue
fi
fi
_passwdarg=""
fi
if [ -z "${vncreflector_logfile}" ]; then
_logfile="/dev/null"
else
_logfile="${vncreflector_logfile}.${_port}"
fi
eval _addr=\$vncreflector_addr_${port}
if [ -z "${_addr}" ]; then
_addr=${vncreflector_addr}
fi
if [ -z "${_addr}" ]; then
unset _addr
fi
_doit="\
${command} ${rc_flags} \
-i ${vncreflector_pidfile} \
-l ${_port} \
-g ${_logfile} \
${_addr+-l $_addr }${_passwdfile+-p $_passwdfile } \
${_hostinfofile}"
debug "vncreflector_start: _doit: $_doit"
eval $_doit
_started=`expr 1 + ${_started}`
done
if [ $_started -lt 1 ]; then
return 1
fi
echo "."
}
vncreflector_stop()
{
echo -n "stopping ${name}: "
_pids=""
for _port in ${vncreflector_ports}; do
echo -n " ${_port}"
pidfile="${vncreflector_pidfile}.${_port}"
rc_pid=$(check_pidfile $pidfile $command)
if [ -n "$rc_pid" ]; then
kill $sig_stop $rc_pid
_pids="${_pids} ${rc_pid}"
else
warn "no server for port ${_port}"
fi
done
echo "."
wait_for_pids $_pids
}
load_rc_config $name
run_rc_command $*