telephony/net/freeswitch/files/freeswitch.init
Sebastian Kemper 1cb886e052 freeswitch: rework init & hotplug
This adds a term_timeout uci option which can be used to change the
default timeout that procd uses while waiting for freeswitch to exit
once the TERM signal is sent. freeswitch may take a bit longer to exit,
so adding this option is likely appreciated. By default procd's default
is used, though.

Logging is updated in init script and hotplug script. The used facility
is changed from user to daemon, for instance.

An issue was fixed in the parsing of the ntpq output. In case a positive
offset was printed the parsing failed. Apparently ntpq is now adding a
'+', so this is now accounted for.

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
2021-04-03 09:14:05 +02:00

102 lines
2.6 KiB
Bash

#!/bin/sh /etc/rc.common
# Copyright (C) 2017 - 2018 OpenWrt.org
START=90
USE_PROCD=1
#PROCD_DEBUG=1
NAME=freeswitch
COMMAND=/usr/bin/$NAME
LOGGER="/usr/bin/logger -s -t $NAME"
LOG_ERR="$LOGGER -p daemon.err --"
LOG_WARN="$LOGGER -p daemon.warn --"
LOG_INFO="$LOGGER -p daemon.info --"
start_service() {
dir_etc=/etc/$NAME
dir_localstate=/var/lib/$NAME
dir_run=/var/run/$NAME
config_load $NAME
config_get_bool enabled general enabled 0
if [ $enabled -eq 0 ]; then
$LOG_ERR service not enabled in /etc/config/$NAME
exit 1
fi
config_get_bool log_stderr general log_stderr 1
config_get_bool log_stdout general log_stdout 1
config_get dir_cache directories cache /tmp/$NAME/cache
config_get dir_db directories db /tmp/$NAME/db
config_get dir_log directories log /tmp/$NAME/log
config_get dir_recordings directories recordings /tmp/$NAME/recordings
config_get dir_storage directories storage /tmp/$NAME/storage
config_get dir_temp directories temp /tmp/$NAME/temp
config_get options general options
config_get term_timeout general term_timeout default
if [ default = "$term_timeout" ]; then
$LOG_INFO using procd\'s default term_timeout
elif ! [ 0 -lt "$term_timeout" ] 2>/dev/null; then
$LOG_ERR invalid term_timeout in /etc/config/$NAME
exit 1
fi
for i in "$dir_localstate" "$dir_run"; do
if ! [ -e "$i" ]; then
mkdir -m 0750 -p "$i"
[ -d "$i" ] && chown $NAME:$NAME "$i"
fi
done
command -v su >/dev/null
ret=$?
if [ 0 != "$ret" ]; then
$LOG_WARN utility \"su\" not available
$LOG_WARN will not attempt to create directories
else
for i in "$dir_cache" \
"$dir_db" \
"$dir_log" \
"$dir_recordings" \
"$dir_storage" \
"$dir_temp";
do
if ! [ -e "$i" ]; then
su -s /bin/sh -c "mkdir -m 0750 -p \"$i\"" $NAME
fi
done
fi
procd_open_instance
# starting with full path seems cleaner judging by 'ps' output
procd_set_param command $COMMAND
# need to specify all or none of -conf, -log, and -db
procd_append_param command \
-cache "$dir_cache" \
-conf "$dir_etc" \
-db "$dir_db" \
-g "$NAME" \
-log "$dir_log" \
-recordings "$dir_recordings" \
-run "$dir_run" \
-storage "$dir_storage" \
-temp "$dir_temp" \
-u "$NAME" \
$options \
-c
# forward stderr to logd
procd_set_param stderr $log_stderr
# same for stdout
procd_set_param stdout $log_stdout
if ! [ default = "$term_timeout" ]; then
procd_set_param term_timeout "$term_timeout"
fi
procd_close_instance
}