freeswitch-stable: replace defaults with uci

This commit replaces /etc/default/freeswitch with /etc/config/freeswitch.
This way the init and hotplug configuration can be done with uci instead of
having to edit a file.

This also does away with the busybox ntpd warning. ntpd uses the same
configuration in system and it looks like busybox's ntpd is not used when
ntpd is installed.

Lastly some log strings are amended to start with a lowercase letter.

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
This commit is contained in:
Sebastian Kemper 2018-08-26 12:35:11 +02:00
parent a162bd9298
commit d78c4e07fa
5 changed files with 102 additions and 104 deletions

View file

@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PRG_NAME:=freeswitch PRG_NAME:=freeswitch
PKG_NAME:=$(PRG_NAME)-stable PKG_NAME:=$(PRG_NAME)-stable
PKG_VERSION:=1.8.1 PKG_VERSION:=1.8.1
PKG_RELEASE:=5 PKG_RELEASE:=6
PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net> PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
@ -400,7 +400,7 @@ endef
define Package/$(PKG_NAME)/conffiles define Package/$(PKG_NAME)/conffiles
$(FS_STABLE_SYSCONF_DIR)/$(PRG_NAME) $(FS_STABLE_SYSCONF_DIR)/$(PRG_NAME)
$(FS_STABLE_SYSCONF_DIR)/default/$(PRG_NAME) $(FS_STABLE_SYSCONF_DIR)/config/$(PRG_NAME)
$(FS_STABLE_SYSCONF_DIR)/init.d/$(PRG_NAME) $(FS_STABLE_SYSCONF_DIR)/init.d/$(PRG_NAME)
endef endef
@ -413,13 +413,13 @@ $(call Package/$(PKG_NAME)/install/lib,$(1),lib$(PRG_NAME))
$(INSTALL_DIR) $(1)$(FS_STABLE_IMAGES_DIR) $(INSTALL_DIR) $(1)$(FS_STABLE_IMAGES_DIR)
$(INSTALL_DIR) $(1)$(FS_STABLE_SCRIPTS_DIR) $(INSTALL_DIR) $(1)$(FS_STABLE_SCRIPTS_DIR)
$(INSTALL_DIR) $(1)$(FS_STABLE_SOUNDS_DIR) $(INSTALL_DIR) $(1)$(FS_STABLE_SOUNDS_DIR)
$(INSTALL_DIR) $(1)$(FS_STABLE_SYSCONF_DIR)/default $(INSTALL_DIR) $(1)$(FS_STABLE_SYSCONF_DIR)/config
$(INSTALL_DIR) $(1)$(FS_STABLE_SYSCONF_DIR)/init.d $(INSTALL_DIR) $(1)$(FS_STABLE_SYSCONF_DIR)/init.d
$(INSTALL_DIR) $(1)$(FS_STABLE_TLS_DIR) $(INSTALL_DIR) $(1)$(FS_STABLE_TLS_DIR)
$(INSTALL_BIN) ./files/$(PRG_NAME).init \ $(INSTALL_BIN) ./files/$(PRG_NAME).init \
$(1)$(FS_STABLE_SYSCONF_DIR)/init.d/$(PRG_NAME) $(1)$(FS_STABLE_SYSCONF_DIR)/init.d/$(PRG_NAME)
$(INSTALL_CONF) ./files/$(PRG_NAME).default \ $(INSTALL_CONF) ./files/$(PRG_NAME).config \
$(1)$(FS_STABLE_SYSCONF_DIR)/default/$(PRG_NAME) $(1)$(FS_STABLE_SYSCONF_DIR)/config/$(PRG_NAME)
endef endef
define Package/$(PKG_NAME)/postinst define Package/$(PKG_NAME)/postinst
@ -427,14 +427,14 @@ define Package/$(PKG_NAME)/postinst
if [ -z "$${IPKG_INSTROOT}" ]; then if [ -z "$${IPKG_INSTROOT}" ]; then
# Prevent $(PRG_NAME) from auto-starting after an upgrade. The modules may # Prevent $(PRG_NAME) from auto-starting after an upgrade. The modules may
# not be upgraded yet and the user configuration may need a revision. # not be upgraded yet and the user configuration may need a revision.
sed -i '/^ENABLE_FREESWITCH="yes"/s/^/#/' \ uci set freeswitch.general.enabled=0
$(FS_STABLE_SYSCONF_DIR)/default/$(PRG_NAME) uci commit freeswitch
echo echo
echo "o-------------------------------------------------------------------o" echo "o-------------------------------------------------------------------o"
echo "| FreeSWITCH note |" echo "| FreeSWITCH note |"
echo "o-------------------------------------------------------------------o" echo "o-------------------------------------------------------------------o"
echo "| Edit /etc/default/freeswitch to change basic init configuration. |" echo "| Edit /etc/config/freeswitch to change basic init configuration. |"
echo "o-------------------------------------------------------------=^_^=-o" echo "o-------------------------------------------------------------=^_^=-o"
echo echo
fi fi
@ -465,7 +465,7 @@ if [ -z "$${IPKG_INSTROOT}" ]; then
echo "o-------------------------------------------------------------------o" echo "o-------------------------------------------------------------------o"
echo "| FreeSWITCH hotplug note |" echo "| FreeSWITCH hotplug note |"
echo "o-------------------------------------------------------------------o" echo "o-------------------------------------------------------------------o"
echo "| See /etc/default/freeswitch for hotplug hints. |" echo "| See /etc/config/freeswitch for hotplug hints. |"
echo "o-------------------------------------------------------------=^_^=-o" echo "o-------------------------------------------------------------=^_^=-o"
echo echo
fi fi

View file

@ -0,0 +1,22 @@
config freeswitch 'general'
option enabled '0'
option user 'freeswitch'
option group 'freeswitch'
option options '-nonat -np'
option change_perm '0'
config freeswitch 'directories'
option cache '/tmp/freeswitch/cache'
option db '/tmp/freeswitch/db'
option log '/tmp/freeswitch/log'
option recordings '/tmp/freeswitch/recordings'
option storage '/tmp/freeswitch/storage'
option temp '/tmp/freeswitch/temp'
config freeswitch 'hotplug'
#option interface 'wan'
#option mount_point '/mnt/usb'
option ntpd '0'
option timeout '60'

View file

@ -1,44 +0,0 @@
### FreeSWITCH configuration ###
# Uncomment once you verified your configuration, otherwise the init script will
# not start FreeSWITCH.
#ENABLE_FREESWITCH="yes"
#FS_USER=freeswitch
#FS_GROUP=freeswitch
#FS_DIR_CACHE="/tmp/freeswitch/cache"
# Don't point FS_DIR_DB toward a flash drive, e.g. the flash drive of your
# router. FreeSWITCH will be writing constantly to its databases, which would
# degrade the flash over time. Point it to a tmpfs destination like /dev/shm or
# /tmp instead in order for the writes to go to RAM.
#FS_DIR_DB="/tmp/freeswitch/db"
#FS_DIR_LOG="/tmp/freeswitch/log"
#FS_DIR_RECORDINGS="/tmp/freeswitch/recordings"
#FS_DIR_STORAGE="/tmp/freeswitch/storage"
#FS_DIR_TEMP="/tmp/freeswitch/temp"
# The following is added to the command line when starting FreeSWITCH:
OPTIONS="-nonat -np"
### Hotplug configuration ###
# Only used by the FreeSWITCH hotplug script (available in a seperate package).
# Provide the interface that needs to change its state to "up" (if unset the
# hotplug script does nothing):
#FS_HOTPLUG_INTERFACE="wan"
# You can add conditions which need to be met before FreeSWITCH is started.
# Uncomment to check if something is mounted here:
#FS_HOTPLUG_MOUNTPOINT="/mnt/usb"
# Uncomment to check if ntpd is running and has set the system time:
#FS_HOTPLUG_NTPD="check"
# Uncomment to change the default timeout of 60 seconds that the hotplug script
# waits for a condition to turn from false to true:
#FS_HOTPLUG_TIMEOUT="20"

View file

@ -1,7 +1,6 @@
#!/bin/sh #!/bin/sh
FS=freeswitch FS=freeswitch
DEFAULT=/etc/default/$FS
LOGGER="/usr/bin/logger -t ${FS}-hotplug" LOGGER="/usr/bin/logger -t ${FS}-hotplug"
LOG_ERR="$LOGGER -p user.err --" LOG_ERR="$LOGGER -p user.err --"
LOG_NOTICE="$LOGGER -p user.notice --" LOG_NOTICE="$LOGGER -p user.notice --"
@ -9,7 +8,10 @@ LOG_WARN="$LOGGER -p user.warn --"
[ "$ACTION" = ifup ] || exit 0 [ "$ACTION" = ifup ] || exit 0
[ -f $DEFAULT ] && . $DEFAULT . /lib/functions.sh
config_load $FS
config_get FS_HOTPLUG_INTERFACE hotplug interface
[ -n "$FS_HOTPLUG_INTERFACE" ] || exit 0 [ -n "$FS_HOTPLUG_INTERFACE" ] || exit 0
@ -17,20 +19,24 @@ LOG_WARN="$LOGGER -p user.warn --"
pgrep $FS &> /dev/null pgrep $FS &> /dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
$LOG_NOTICE Stopping $FS $LOG_NOTICE stopping $FS
/etc/init.d/$FS stop &> /dev/null /etc/init.d/$FS stop &> /dev/null
pgrep $FS &> /dev/null pgrep $FS &> /dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
$LOG_ERR Failed to stop $FS $LOG_ERR failed to stop $FS
exit 1 exit 1
else else
$LOG_NOTICE $FS stopped $LOG_NOTICE $FS stopped
fi fi
fi fi
config_get FS_HOTPLUG_TIMEOUT hotplug timeout
[ "$FS_HOTPLUG_TIMEOUT" -gt 0 ] 2> /dev/null || unset FS_HOTPLUG_TIMEOUT [ "$FS_HOTPLUG_TIMEOUT" -gt 0 ] 2> /dev/null || unset FS_HOTPLUG_TIMEOUT
TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}" TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
config_get FS_HOTPLUG_MOUNTPOINT hotplug mount_point
# Mount condition, idea lifted from OpenWrt wiki # Mount condition, idea lifted from OpenWrt wiki
[ -n "$FS_HOTPLUG_MOUNTPOINT" ] && { [ -n "$FS_HOTPLUG_MOUNTPOINT" ] && {
@ -60,7 +66,7 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
if [ -n "$notReady" ]; then if [ -n "$notReady" ]; then
$LOG_ERR "$mnt" still not mounted $LOG_ERR "$mnt" still not mounted
$LOG_ERR Not starting $FS $LOG_ERR not starting $FS
exit 1 exit 1
else else
$LOG_NOTICE "$mnt" mounted $LOG_NOTICE "$mnt" mounted
@ -68,8 +74,10 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
} }
config_get_bool FS_HOTPLUG_NTPD hotplug ntpd 0
# ntpd condition # ntpd condition
[ -n "$FS_HOTPLUG_NTPD" ] && { [ $FS_HOTPLUG_NTPD -eq 1 ] && {
type ntpq &> /dev/null type ntpq &> /dev/null
[ $? -eq 0 ] || { [ $? -eq 0 ] || {
@ -85,14 +93,9 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
notReady=start notReady=start
timeout=$TIMEOUT timeout=$TIMEOUT
result=$(uci get 'system.ntp.enabled' 2> /dev/null)
[ "$result" -eq 1 ] 2> /dev/null && {
$LOG_WARN BusyBox NTP client _and_ ntpd running
}
while [ -n "$notReady" -a $timeout -gt 0 ]; do while [ -n "$notReady" -a $timeout -gt 0 ]; do
if [ "$notReady" != start ]; then if [ "$notReady" != start ]; then
$LOG_NOTICE System time not in sync yet, timeout in $timeout s $LOG_NOTICE system time not in sync yet, timeout in $timeout s
sleep 5 sleep 5
timeout=$(($timeout-5)) timeout=$(($timeout-5))
fi fi
@ -102,7 +105,7 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
result=$(ntpq -c 'timeout 300' -c 'rv 0 stratum' 2> /dev/null | \ result=$(ntpq -c 'timeout 300' -c 'rv 0 stratum' 2> /dev/null | \
awk -F '=' '{print $2}' | grep -o -E '^[0-9]+') awk -F '=' '{print $2}' | grep -o -E '^[0-9]+')
if [ -z $result ]; then if [ -z $result ]; then
$LOG_WARN Failed to extract stratum from ntpd $LOG_WARN failed to extract stratum from ntpd
notReady="unable to extract stratum" notReady="unable to extract stratum"
else else
$LOG_NOTICE ntpd stratum $result $LOG_NOTICE ntpd stratum $result
@ -110,7 +113,7 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
result=$(ntpq -c 'timeout 300' -c 'rv 0 offset' 2> /dev/null \ result=$(ntpq -c 'timeout 300' -c 'rv 0 offset' 2> /dev/null \
| awk -F '=' '{print $2}' | grep -o -E '^-?[0-9]+') | awk -F '=' '{print $2}' | grep -o -E '^-?[0-9]+')
if [ -z $result ]; then if [ -z $result ]; then
$LOG_WARN Failed to extract offset from ntpd $LOG_WARN failed to extract offset from ntpd
notReady="unable to extract offset" notReady="unable to extract offset"
else else
# "-0" looks stupid, so remove "-" # "-0" looks stupid, so remove "-"
@ -126,11 +129,11 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
done done
if [ -n "$notReady" ]; then if [ -n "$notReady" ]; then
$LOG_ERR System time still not in sync $LOG_ERR system time still not in sync
$LOG_ERR Not starting $FS $LOG_ERR not starting $FS
exit 1 exit 1
else else
$LOG_NOTICE System time in sync $LOG_NOTICE system time in sync
fi fi
} }
@ -140,8 +143,8 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
sleep 1 sleep 1
pgrep $FS &>/dev/null pgrep $FS &>/dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
$LOG_NOTICE Started $FS due to \"ifup "$INTERFACE"\" event $LOG_NOTICE started $FS due to \"ifup "$INTERFACE"\" event
else else
$LOG_ERR Start of $FS due to \"ifup "$INTERFACE"\" event failed $LOG_ERR start of $FS due to \"ifup "$INTERFACE"\" event failed
exit 1 exit 1
fi fi

View file

@ -8,37 +8,50 @@ USE_PROCD=1
#PROCD_DEBUG=1 #PROCD_DEBUG=1
FS=freeswitch FS=freeswitch
DEFAULT=/etc/default/$FS
LOGGER="/usr/bin/logger -p user.err -s -t $FS" LOGGER="/usr/bin/logger -p user.err -s -t $FS"
OPTIONS=
PROG=/usr/bin/$FS
TIMEOUT=30
[ -f $DEFAULT ] && . $DEFAULT # used in both start_service() and stop_service()
fs_dir_run=/var/run/$FS
fs_user="${FS_USER:-$FS}"
fs_group="${FS_GROUP:-$FS}"
fs_dir_etc="/etc/$FS"
fs_dir_localstate="/var/lib/$FS"
fs_dir_run="/var/run/$FS"
fs_dir_cache="${FS_DIR_CACHE:-/tmp/$FS/cache}"
fs_dir_db="${FS_DIR_DB:-/tmp/$FS/db}"
fs_dir_log="${FS_DIR_LOG:-/tmp/$FS/log}"
fs_dir_recordings="${FS_DIR_RECORDINGS:-/tmp/$FS/recordings}"
fs_dir_storage="${FS_DIR_STORAGE:-/tmp/$FS/storage}"
fs_dir_temp="${FS_DIR_TEMP:-/tmp/$FS/temp}"
start_service() { start_service() {
local dir= local change_perm
local dir
local enabled
if [ "$ENABLE_FREESWITCH" != yes ]; then local fs_user
$LOGGER User configuration incomplete - not starting $FS local fs_group
$LOGGER Check ENABLE_FREESWITCH in $DEFAULT
local fs_dir_cache
local fs_dir_db
local fs_dir_etc=/etc/$FS
local fs_dir_localstate=/var/lib/$FS
local fs_dir_log
local fs_dir_recordings
local fs_dir_storage
local fs_dir_temp
local OPTIONS
local PROG=/usr/bin/$FS
config_load $FS
config_get_bool enabled general enabled 0
if [ $enabled -eq 0 ]; then
$LOGGER service not enabled in /etc/config/$FS
exit 1 exit 1
fi fi
config_get fs_user general user $FS
config_get fs_group general group $FS
config_get fs_dir_cache directories cache /tmp/$FS/cache
config_get fs_dir_db directories db /tmp/$FS/db
config_get fs_dir_log directories log /tmp/$FS/log
config_get fs_dir_recordings directories recordings /tmp/$FS/recordings
config_get fs_dir_storage directories storage /tmp/$FS/storage
config_get fs_dir_temp directories temp /tmp/$FS/temp
for dir in "$fs_dir_cache" "$fs_dir_db" "$fs_dir_localstate" \ for dir in "$fs_dir_cache" "$fs_dir_db" "$fs_dir_localstate" \
"$fs_dir_log" "$fs_dir_recordings" "$fs_dir_run" "$fs_dir_storage" \ "$fs_dir_log" "$fs_dir_recordings" "$fs_dir_run" "$fs_dir_storage" \
"$fs_dir_temp" "$fs_dir_temp"
@ -50,10 +63,13 @@ start_service() {
} }
done done
#[ -d "$fs_dir_etc" ] && { config_get_bool change_perm general change_perm 0
# find "$fs_dir_etc" -type f -exec chown root:"$fs_group" {} \; [ $change_perm -eq 1 ] && [ -d "$fs_dir_etc" ] && {
# find "$fs_dir_etc" -type f -exec chmod 640 {} \; find "$fs_dir_etc" -type f -exec chown root:"$fs_group" {} \;
#} find "$fs_dir_etc" -type f -exec chmod 640 {} \;
}
config_get OPTIONS general options
procd_open_instance procd_open_instance
# starting with full path seems cleaner judging by 'ps' output # starting with full path seems cleaner judging by 'ps' output
@ -79,8 +95,9 @@ start_service() {
} }
stop_service() { stop_service() {
local retval= local retval
local mypid= local mypid
local TIMEOUT=30
local timeout=$TIMEOUT local timeout=$TIMEOUT
pgrep $FS &> /dev/null pgrep $FS &> /dev/null
@ -124,8 +141,8 @@ stop_service() {
done done
[ $retval -ne 1 ] && { [ $retval -ne 1 ] && {
$LOGGER Application seems to hang $LOGGER application seems to hang
$LOGGER Sending SIGKILL $LOGGER sending SIGKILL
kill -SIGKILL $mypid 2>/dev/null kill -SIGKILL $mypid 2>/dev/null
sleep 3 sleep 3
pgrep $FS | grep -w $mypid &>/dev/null pgrep $FS | grep -w $mypid &>/dev/null
@ -133,7 +150,7 @@ stop_service() {
} }
[ $retval -ne 1 ] && { [ $retval -ne 1 ] && {
$LOGGER Failed to stop $FS $LOGGER failed to stop $FS
exit 1 exit 1
} }
} }