#!/bin/sh
# Created by: KalleDK <plexmaintainer@k-moeller.dk>
#
#
# PROVIDE: plexmediaserver_plexpass
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable the Plex Media Server:
#
# plexmediaserver_plexpass_enable="YES"
#
# plexmediaserver_plexpass_support_path="/usr/local/plexdata" # Plex data: logs, media metadata, settings, etc
#
# plexmediaserver_plexpass_tmp="/var/tmp/plex" # configure tmp directory used for the transcoding process if desired
#
# plexmediaserver_plexpass_maxplugins="6" # Maximum number of background plugin procs. May have to raise in rare cases.
#

. /etc/rc.subr

name=plexmediaserver_plexpass
rcvar=plexmediaserver_plexpass_enable
load_rc_config $name

: ${plexmediaserver_plexpass_enable:=NO}
: ${plexmediaserver_plexpass_support_path="/usr/local/plexdata-plexpass"}
: ${plexmediaserver_plexpass_user="plex"}
: ${plexmediaserver_plexpass_group="plex"}
: ${plexmediaserver_plexpass_maxplugins=6}

command=/usr/sbin/daemon
procname="/usr/local/share/plexmediaserver-plexpass/Plex_Media_Server"
command_args="-f ${procname}"
pidfile=/var/run/plex/plex.pid
start_precmd=plex_precmd
stop_precmd=plex_stop_precmd
stop_postcmd=plex_stop_postcmd

plex_precmd()
{
	export SUPPORT_PATH="${plexmediaserver_plexpass_support_path}"
	export HOME="${plexmediaserver_plexpass_support_path}/Plex Media Server"
	export PYTHONHOME="/usr/local/share/plexmediaserver-plexpass/Resources/Python"
	export SCRIPTPATH="/usr/local/share/plexmediaserver-plexpass"
	export LD_LIBRARY_PATH="/usr/local/lib/compat:${SCRIPTPATH}"
	export PLEX_MEDIA_SERVER_HOME="${SCRIPTPATH}"
	export PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS=${plexmediaserver_plexpass_maxplugins}
	export PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR=${plexmediaserver_plexpass_support_path}
	export PLEX_MEDIA_SERVER_PIDFILE=${pidfile}
	export PLEX_MEDIA_SERVER_LOG_DIR="${plexmediaserver_plexpass_support_path}/Plex Media Server/Logs"
	export PATH="${SCRIPTPATH}/Resources/Python/bin:${PATH}"
	export LC_ALL="en_US.UTF-8"
	export LANG="en_US.UTF-8"
	ulimit -s 3000

	if [ ! -d ${pidfile%/*} ]; then
		install -d -o ${plexmediaserver_plexpass_user} ${pidfile%/*};
	fi
	
	if [ ! -d "${plexmediaserver_plexpass_support_path}/Plex Media Server" ]; then
		install -d -g ${plexmediaserver_plexpass_group} -o ${plexmediaserver_plexpass_user} "${plexmediaserver_plexpass_support_path}/Plex Media Server";
	fi

	if [ ! -d "${plexmediaserver_plexpass_support_path}/Plex" ]; then
		install -d -g ${plexmediaserver_plexpass_group} -o ${plexmediaserver_plexpass_user} "${plexmediaserver_plexpass_support_path}/Plex";
	fi
	
	if [ ${plexmediaserver_plexpass_tmp} ]; then 
		export TMPDIR=${plexmediaserver_plexpass_tmp};
		install -d -g ${plexmediaserver_plexpass_group} -o ${plexmediaserver_plexpass_user} "${plexmediaserver_plexpass_tmp}";
	fi
}

plex_stop_precmd()
{
	if [ -r ${pidfile} ]; then
		export _PLEXPID=$(check_pidfile ${pidfile} ${procname})
	fi
}

plex_stop_postcmd()
{
	_PLEX_CHILDREN=$(pgrep -g ${_PLEXPID})
	echo "Cleaning up leftover child processes."
	kill $sig_stop ${_PLEX_CHILDREN}
	wait_for_pids ${_PLEX_CHILDREN}
}

run_rc_command "$1"
