#!/bin/sh

# PROVIDE: emby-server
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# emby_server_enable:	Set to yes to enable the emby-server service.
#			Default: no
# emby_server_user:	The user account used to run the emby-server daemon.
#			This is optional, however do not specifically set this to an
#			empty string as this will cause the daemon to run as root.
#			Default: emby
# emby_server_group:	The group account used to run the emby-server daemon.
#			This is optional, however do not specifically set this to an
#			empty string as this will cause the daemon to run with group wheel.
#			Default: emby
# emby_server_data_dir: Directory where emby-server configuration
#			data is stored.
#			Default: /var/db/emby-server
# emby_server_ffdetect: Path of the ffdetect binary.
#			Default: /usr/local/lib/emby-server/bin/ffdetect
# emby_server_ffmpeg:	Path of the ffmpeg binary.
#			Default: /usr/local/lib/emby-server/bin/ffmpeg
# emby_server_ffprobe:	Path of the ffprobe binary.
#			Default: /usr/local/lib/emby-server/bin/ffprobe
# emby_server_pid:	Name of the pid file.
#			Default: emby-server.pid
# emby_server_pid_dir:	Path of the pid file.
#			Default: /var/run/emby-server

. /etc/rc.subr
name=emby_server
rcvar=${name}_enable
load_rc_config ${name}

: ${emby_server_enable:="no"}
: ${emby_server_user:="emby"}
: ${emby_server_group:="emby"}
: ${emby_server_data_dir:="/var/db/emby-server"}
: ${emby_server_ffdetect:="/usr/local/lib/emby-server/bin/ffdetect"}
: ${emby_server_ffmpeg:="/usr/local/lib/emby-server/bin/ffmpeg"}
: ${emby_server_ffprobe:="/usr/local/lib/emby-server/bin/ffprobe"}
: ${emby_server_pid:="emby-server.pid"}
: ${emby_server_pid_dir:="/var/run/emby-server"}

pidfile="${emby_server_pid_dir}/${emby_server_pid}"
command="/usr/sbin/daemon"
command_args="-r -f -P ${pidfile} /usr/local/lib/emby-server/system/EmbyServer \
	-os freebsd \
	-ffdetect ${emby_server_ffdetect} \
	-ffmpeg ${emby_server_ffmpeg} \
	-ffprobe ${emby_server_ffprobe} \
	-programdata ${emby_server_data_dir}"

start_precmd=emby_server_start_precmd
emby_server_start_precmd()
{
	[ -d ${emby_server_pid_dir} ] || install -d -g ${emby_server_group} -o ${emby_server_user} ${emby_server_pid_dir}
	[ -d ${emby_server_data_dir} ] || install -d -g ${emby_server_group} -o ${emby_server_user} ${emby_server_data_dir}

	# .NET 6+ use dual mode sockets to avoid the separate AF handling.
	# disable .NET use of V6 if no ipv6 is configured.
	# See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=259194#c17
	ifconfig -a -u -G lo | grep -q inet6
	if [ $? == 1 ]; then
		export DOTNET_SYSTEM_NET_DISABLEIPV6=1
	fi

	export LD_LIBRARY_PATH=/usr/local/lib/emby-server/lib:/usr/local/lib
}

run_rc_command "$1"
