#!/usr/bin/openrc-run

#
# Initscript and LXDM-related config for x11vnc VNC server.
# Vladimir A. Smirnov (kkatarn@sleepgate.ru), 2022.
#

. /opt/etc/functions.openrc

PIDFILE=/var/run/x11vnc.pid
EXEC=/usr/bin/x11vnc

LOGFILE="/var/log/x11vnc.log"
ERRFILE="/var/log/x11vnc.err"

SHARED="-shared"
FOREVER="-forever"

# Enough in most cases:
#	RFBDISPLAY=":0"
# For LXDM display manager, conf.d/x11vnc should contain:
#	DMAUTH="/var/run/lxdm/lxdm-:0.auth"
#	rc_need="lxdm"
# Other DM's -- TBA.
#
# Authfile (created with x11vnc -storepasswd):
#	RFBAUTH="/opt/etc/vnc/rfbauth"

depend() {
	provide ${SVCNAME}
}

start()
{
	local _rc=1
	[ -f "${LOGFILE}" ] && rm "${LOGFILE}"
	[ -f "${ERRFILE}" ] && rm "${ERRFILE}"
	update_me
	ebegin "${ME}: starting \"${SVCNAME}\""
	start-stop-daemon --background --pidfile ${PIDFILE} --make-pidfile --start \
		--exec ${EXEC} --stdout "${LOGFILE}" --stderr "${ERRFILE}" -- \
		-display "${RFBDISPLAY}" -auth "${DMAUTH}" -rfbauth "${RFBAUTH}" ${SHARED} ${FOREVER}
	_rc=$?
	eend ${_rc}
	return ${_rc}
}

stop()
{
	ebegin "Stopping \"${SVCNAME}\""
	start-stop-daemon --stop --exec ${EXEC} --retry SIGTERM/5 --pidfile ${PIDFILE}
	eend 0
	return 0
}
