Merge pull request #367 from micmac1/fs-uci
freeswitch-stable: replace init config defaults with UCI
This commit is contained in:
commit
de2ac6fbc7
5 changed files with 103 additions and 105 deletions
|
@ -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
|
||||
|
|
22
net/freeswitch-stable/files/freeswitch.config
Normal file
22
net/freeswitch-stable/files/freeswitch.config
Normal 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'
|
||||
|
|
@ -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"
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue