78 lines
2.8 KiB
Bash
78 lines
2.8 KiB
Bash
#!/bin/sh
|
|
|
|
# PROVIDE: mirotalk
|
|
# REQUIRE: LOGIN network
|
|
# KEYWORD: shutdown
|
|
#
|
|
# extraargs typically can remain unset
|
|
# extraargs accepts as string any of:
|
|
# --nowebclient Indicates that the web server should not host the web client.
|
|
# -w, --webdir Path to the Mirotalk web UI resources. Defaults to ./mirotalk-web
|
|
# -c, --configdir Path to use for configuration data (user settings and pictures).
|
|
# -l, --logdir Path to use for writing log files. Defaults to $datadir/log
|
|
# --ffmpeg Path to external FFmpeg executable to use. Defaults to PATH.
|
|
# --published-server-url Mirotalk Server URL to publish via auto discover process
|
|
#
|
|
#
|
|
# variable definitions
|
|
# mirotalk_exec_dir Path to the actual mirotalk binary Defaults to %%DATADIR%%
|
|
# mirotalk_data_dir Path to use for the data folder (database files, etc.) Defaults to /var/db/mirotalk
|
|
# mirotalk_cache_dir Path to use for caching. Defaults to /var/cache/mirotalk
|
|
# mirotalk_pid_dir Path to use for the pid file. Defaults to /var/run/mirotalk
|
|
|
|
. /etc/rc.subr
|
|
name=mirotalk
|
|
rcvar=mirotalk_enable
|
|
load_rc_config $name
|
|
|
|
: ${mirotalk_enable:=NO}
|
|
: ${mirotalk_user:="mirotalk"}
|
|
: ${mirotalk_group:="mirotalk"}
|
|
: ${mirotalk_extraargs:=""}
|
|
: ${mirotalk_exec_dir:="%%DATADIR%%"}
|
|
: ${mirotalk_data_dir:="/var/db/mirotalk"}
|
|
: ${mirotalk_cache_dir:="/var/cache/mirotalk"}
|
|
: ${mirotalk_pid_dir:="/var/run/mirotalk"}
|
|
|
|
pidfile="${mirotalk_pid_dir}/${name}_daemon.pid"
|
|
pidfile_child="${mirotalk_pid_dir}/${name}_child.pid"
|
|
command="/usr/sbin/daemon"
|
|
|
|
|
|
start_precmd=${name}_precmd
|
|
mirotalk_precmd() {
|
|
export PATH="/sbin:/bin:/usr/sbin:/usr/bin:%%LOCALBASE%%/sbin:%%LOCALBASE%%/bin"
|
|
|
|
if [ ! -d ${mirotalk_exec_dir} ]; then
|
|
install -d -o ${mirotalk_user} -g ${mirotalk_group} ${mirotalk_exec_dir}
|
|
fi
|
|
|
|
if [ ! -d ${mirotalk_data_dir} ]; then
|
|
install -d -o ${mirotalk_user} -g ${mirotalk_group} ${mirotalk_data_dir}
|
|
fi
|
|
|
|
if [ ! -d ${mirotalk_cache_dir} ]; then
|
|
install -d -o ${mirotalk_user} -g ${mirotalk_group} ${mirotalk_cache_dir}
|
|
fi
|
|
|
|
if [ ! -d ${mirotalk_pid_dir} ]; then
|
|
install -d -o ${mirotalk_user} -g ${mirotalk_group} ${mirotalk_pid_dir}
|
|
fi
|
|
|
|
# .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
|
|
|
|
if [ `uname -K` -ge 1400092 ]; then
|
|
export CLR_OPENSSL_VERSION_OVERRIDE=30
|
|
fi
|
|
|
|
rc_flags="-r -f -p ${pidfile_child} -P ${pidfile} ${mirotalk_exec_dir}/mirotalk --datadir ${mirotalk_data_dir} --cachedir ${mirotalk_cache_dir} ${mirotalk_extraargs} >> /dev/null 2>&1 ${rc_flags}"
|
|
}
|
|
|
|
run_rc_command "$1"
|