mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
72 lines
1.7 KiB
Bash
Executable file
72 lines
1.7 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
if [ -f /tmp/voice-monitor.pid ]; then
|
|
kill -9 $(cat /tmp/voice-monitor.pid) 2>/dev/null
|
|
rm -f /tmp/voice-monitor.pid
|
|
fi
|
|
|
|
[ "$1" == "stop" ] && exit
|
|
|
|
ACCOUNTENABLED=0
|
|
for peer in $(uci show voice_client | grep sip_service_provider | awk -F[.,=] '{print$2}'); do
|
|
[ "$(uci -q get voice_client.$peer.enabled)" == "1" ] && ACCOUNTENABLED=1
|
|
done
|
|
|
|
if [ $ACCOUNTENABLED -eq 0 ]; then
|
|
ubus call led.voice1 set '{"state":"off"}'
|
|
exit
|
|
fi
|
|
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
OFFHOOK=0
|
|
REGISTERED=0
|
|
|
|
asterisk -x 'sip show registry' | grep -q "Registered" && REGISTERED=1
|
|
ubus call endpt status | grep -q "OFFHOOK" && OFFHOOK=1
|
|
|
|
if [ $OFFHOOK -eq 1 ]; then
|
|
ubus call led.voice1 set '{"state":"notice"}'
|
|
elif [ $REGISTERED -eq 1 ]; then
|
|
ubus call led.voice1 set '{"state":"ok"}'
|
|
else
|
|
ubus call led.voice1 set '{"state":"error"}'
|
|
fi
|
|
|
|
ubus listen asterisk.registry asterisk.endpoint | \
|
|
while read event ; do
|
|
#echo "voice-monitor got event: $event" >/dev/console
|
|
json_load "$event"
|
|
if json_select asterisk.registry >/dev/null; then
|
|
json_get_var status status
|
|
if [ "$status" == "Registered" ]; then
|
|
REGISTERED=1
|
|
[ $OFFHOOK -eq 0 ] && ubus call led.voice1 set '{"state":"ok"}'
|
|
else
|
|
REGISTERED=0
|
|
[ $OFFHOOK -eq 0 ] && ubus call led.voice1 set '{"state":"error"}'
|
|
fi
|
|
elif json_select asterisk.endpoint >/dev/null; then
|
|
json_get_var event event
|
|
|
|
case $event in
|
|
OFFHOOK)
|
|
OFFHOOK=1
|
|
ubus call led.voice1 set '{"state":"notice"}'
|
|
;;
|
|
ONHOOK)
|
|
OFFHOOK=0
|
|
if [ $REGISTERED -eq 1 ]; then
|
|
ubus call led.voice1 set '{"state":"ok"}'
|
|
else
|
|
ubus call led.voice1 set '{"state":"error"}'
|
|
fi
|
|
;;
|
|
*)
|
|
# Do nothing for other events.
|
|
;;
|
|
esac
|
|
fi
|
|
done &
|
|
|
|
echo $(($!-1)) $! >/tmp/voice-monitor.pid
|