telephony/net/freeswitch/files/freeswitch.hotplug
Sebastian Kemper b7ada77e17 freeswitch-stable: move folder
Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
2020-05-23 19:46:12 +02:00

141 lines
3.2 KiB
Bash

#!/bin/sh
NAME=freeswitch
COMMAND=/etc/init.d/$NAME
LOGGER="/usr/bin/logger -t $NAME-hotplug"
LOG_ERR="$LOGGER -p user.err --"
LOG_NOTICE="$LOGGER -p user.notice --"
[ "$ACTION" = ifup ] || exit 0
. /lib/functions.sh
config_load $NAME
config_get interface hotplug interface
[ "$INTERFACE" = "$interface" ] || exit 0
pidof $NAME &> /dev/null
if [ $? -eq 0 ]; then
$LOG_NOTICE stopping $NAME
$COMMAND stop &> /dev/null
fi
config_get timeout hotplug timeout 60
[ "$timeout" -gt 0 ] 2> /dev/null || unset timeout
timeout="${timeout:-60}"
config_get mount_point hotplug mount_point
# Mount condition, idea lifted from OpenWrt Wiki
[ -n "$mount_point" ] && {
if ! [ -d "$mount_point" ]; then
$LOG_ERR "$mount_point" not a valid mount point
exit 1
fi
mnt="$mount_point"
notReady=start
tmp_timeout=$timeout
while [ -n "$notReady" -a $tmp_timeout -gt 0 ]; do
if [ "$notReady" != start ]; then
$LOG_NOTICE "$mnt" not yet mounted, timeout in $tmp_timeout s
sleep 5
tmp_timeout=$(($tmp_timeout-5))
fi
notReady=
result=$(cat /proc/mounts | awk '{print $2}' | grep "^$mnt\$")
if [ -z "$result" ]; then
notReady="$mnt not ready yet"
fi
done
if [ -n "$notReady" ]; then
$LOG_ERR "$mnt" still not mounted
$LOG_ERR not starting $NAME
exit 1
else
$LOG_NOTICE "$mnt" mounted
fi
}
config_get_bool ntpd hotplug ntpd 0
# ntpd condition
[ $ntpd -eq 1 ] && {
type ntpq &> /dev/null
[ $? -eq 0 ] || {
$LOG_ERR ntpq utility not found
exit 1
}
pidof ntpd &> /dev/null || {
$LOG_ERR ntpd not running
exit 1
}
notReady=start
tmp_timeout=$timeout
while [ -n "$notReady" -a $tmp_timeout -gt 0 ]; do
if [ "$notReady" != start ]; then
$LOG_NOTICE system time not in sync yet, timeout in $tmp_timeout s
sleep 5
tmp_timeout=$(($tmp_timeout-5))
fi
notReady=
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_ERR failed to extract stratum from ntpd
notReady="unable to extract stratum"
else
$LOG_NOTICE ntpd stratum $result
if [ $result -lt 16 ] 2> /dev/null; then
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_ERR failed to extract offset from ntpd
notReady="unable to extract offset"
else
# "-0" looks stupid, so remove "-"
result=$(echo $result | grep -o '[0-9]*')
$LOG_NOTICE ntpd to system time offset \+\/\- $result ms
# If offset < 100 ms consider system time in sync
[ $result -lt 100 ] || notReady="system time not in sync yet"
fi
else
notReady="ntpd not in sync yet"
fi
fi
done
if [ -n "$notReady" ]; then
$LOG_ERR system time still not in sync
$LOG_ERR not starting $NAME
exit 1
else
$LOG_NOTICE system time in sync
fi
}
$COMMAND start &> /dev/null
sleep 1
pidof $NAME &>/dev/null
if [ $? -eq 0 ]; then
$LOG_NOTICE started $NAME due to \"ifup "$INTERFACE"\" event
else
$LOG_ERR start of $NAME due to \"ifup "$INTERFACE"\" event failed
exit 1
fi