Merge pull request #367 from micmac1/fs-uci

freeswitch-stable: replace init config defaults with UCI
This commit is contained in:
micmac1 2018-08-26 12:52:07 +02:00 committed by GitHub
commit de2ac6fbc7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 103 additions and 105 deletions

View file

@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PRG_NAME:=freeswitch
PKG_NAME:=$(PRG_NAME)-stable
PKG_VERSION:=1.8.1
PKG_RELEASE:=5
PKG_RELEASE:=6
PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
PKG_SOURCE_PROTO:=git
@ -33,7 +33,7 @@ PKG_BUILD_DEPENDS:= \
PKG_FIXUP:=autoreconf
# With mod_ssml and mod_rayo enabled the parallel compiles always failed
#PKG_BUILD_PARALLEL:=1
PKG_BUILD_PARALLEL:=0
PKG_INSTALL:=1
PKG_LICENSE:= \
@ -400,7 +400,7 @@ endef
define Package/$(PKG_NAME)/conffiles
$(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)
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_SCRIPTS_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_TLS_DIR)
$(INSTALL_BIN) ./files/$(PRG_NAME).init \
$(1)$(FS_STABLE_SYSCONF_DIR)/init.d/$(PRG_NAME)
$(INSTALL_CONF) ./files/$(PRG_NAME).default \
$(1)$(FS_STABLE_SYSCONF_DIR)/default/$(PRG_NAME)
$(INSTALL_CONF) ./files/$(PRG_NAME).config \
$(1)$(FS_STABLE_SYSCONF_DIR)/config/$(PRG_NAME)
endef
define Package/$(PKG_NAME)/postinst
@ -427,14 +427,14 @@ define Package/$(PKG_NAME)/postinst
if [ -z "$${IPKG_INSTROOT}" ]; then
# Prevent $(PRG_NAME) from auto-starting after an upgrade. The modules may
# not be upgraded yet and the user configuration may need a revision.
sed -i '/^ENABLE_FREESWITCH="yes"/s/^/#/' \
$(FS_STABLE_SYSCONF_DIR)/default/$(PRG_NAME)
uci set freeswitch.general.enabled=0
uci commit freeswitch
echo
echo "o-------------------------------------------------------------------o"
echo "| FreeSWITCH note |"
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
fi
@ -465,7 +465,7 @@ if [ -z "$${IPKG_INSTROOT}" ]; then
echo "o-------------------------------------------------------------------o"
echo "| FreeSWITCH hotplug note |"
echo "o-------------------------------------------------------------------o"
echo "| See /etc/default/freeswitch for hotplug hints. |"
echo "| See /etc/config/freeswitch for hotplug hints. |"
echo "o-------------------------------------------------------------=^_^=-o"
echo
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
FS=freeswitch
DEFAULT=/etc/default/$FS
LOGGER="/usr/bin/logger -t ${FS}-hotplug"
LOG_ERR="$LOGGER -p user.err --"
LOG_NOTICE="$LOGGER -p user.notice --"
@ -9,7 +8,10 @@ LOG_WARN="$LOGGER -p user.warn --"
[ "$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
@ -17,20 +19,24 @@ LOG_WARN="$LOGGER -p user.warn --"
pgrep $FS &> /dev/null
if [ $? -eq 0 ]; then
$LOG_NOTICE Stopping $FS
$LOG_NOTICE stopping $FS
/etc/init.d/$FS stop &> /dev/null
pgrep $FS &> /dev/null
if [ $? -eq 0 ]; then
$LOG_ERR Failed to stop $FS
$LOG_ERR failed to stop $FS
exit 1
else
$LOG_NOTICE $FS stopped
fi
fi
config_get FS_HOTPLUG_TIMEOUT hotplug timeout
[ "$FS_HOTPLUG_TIMEOUT" -gt 0 ] 2> /dev/null || unset FS_HOTPLUG_TIMEOUT
TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
config_get FS_HOTPLUG_MOUNTPOINT hotplug mount_point
# Mount condition, idea lifted from OpenWrt wiki
[ -n "$FS_HOTPLUG_MOUNTPOINT" ] && {
@ -60,7 +66,7 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
if [ -n "$notReady" ]; then
$LOG_ERR "$mnt" still not mounted
$LOG_ERR Not starting $FS
$LOG_ERR not starting $FS
exit 1
else
$LOG_NOTICE "$mnt" mounted
@ -68,8 +74,10 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
}
config_get_bool FS_HOTPLUG_NTPD hotplug ntpd 0
# ntpd condition
[ -n "$FS_HOTPLUG_NTPD" ] && {
[ $FS_HOTPLUG_NTPD -eq 1 ] && {
type ntpq &> /dev/null
[ $? -eq 0 ] || {
@ -85,14 +93,9 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
notReady=start
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
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
timeout=$(($timeout-5))
fi
@ -102,7 +105,7 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
result=$(ntpq -c 'timeout 300' -c 'rv 0 stratum' 2> /dev/null | \
awk -F '=' '{print $2}' | grep -o -E '^[0-9]+')
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"
else
$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 \
| awk -F '=' '{print $2}' | grep -o -E '^-?[0-9]+')
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"
else
# "-0" looks stupid, so remove "-"
@ -126,11 +129,11 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
done
if [ -n "$notReady" ]; then
$LOG_ERR System time still not in sync
$LOG_ERR Not starting $FS
$LOG_ERR system time still not in sync
$LOG_ERR not starting $FS
exit 1
else
$LOG_NOTICE System time in sync
$LOG_NOTICE system time in sync
fi
}
@ -140,8 +143,8 @@ TIMEOUT="${FS_HOTPLUG_TIMEOUT:-60}"
sleep 1
pgrep $FS &>/dev/null
if [ $? -eq 0 ]; then
$LOG_NOTICE Started $FS due to \"ifup "$INTERFACE"\" event
$LOG_NOTICE started $FS due to \"ifup "$INTERFACE"\" event
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
fi

View file

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