summaryrefslogtreecommitdiff
path: root/net/vncreflector/files/vncreflector.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'net/vncreflector/files/vncreflector.sh.in')
-rw-r--r--net/vncreflector/files/vncreflector.sh.in152
1 files changed, 152 insertions, 0 deletions
diff --git a/net/vncreflector/files/vncreflector.sh.in b/net/vncreflector/files/vncreflector.sh.in
new file mode 100644
index 000000000000..e6e69aa7d128
--- /dev/null
+++ b/net/vncreflector/files/vncreflector.sh.in
@@ -0,0 +1,152 @@
+#!/bin/sh
+# $FreeBSD$
+
+# PROVIDE: vncreflector
+# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: FreeBSD shutdown
+
+_prefix="%%PREFIX%%"
+_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=
+
+. /etc/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 $*