#!/bin/sh # "FULLSCREEN" oder "MOD" - change '/usr/lib/cgi-bin/dtmfbox.cgi' also! DSMOD="1" DAEMON="dtmfbox" if [ "$DSMOD" = "1" ]; then export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin export LD_LIBRARY_PATH=/mod/lib DTMFBOX_DEFAULT="/etc/default.dtmfbox/" DTMFBOX_CFG="/mod/etc/conf/$DAEMON.cfg" DESIGN="MOD" else if [ "$DTMFBOX_PATH" = "" ]; then DTMFBOX_PATH="/var/dtmfbox"; fi export PATH=$DTMFBOX_PATH:$PATH DTMFBOX_DEFAULT="$DTMFBOX_PATH/default.dtmfbox/" DTMFBOX_CFG="/var/dtmfbox/$DAEMON.save" DESIGN="FULLSCREEN" fi case "$1" in ""|load|start|restart|stop|log|install|start_httpd|stop_httpd) if [ "$DSMOD" = "1" ]; then if [ ! -r "$DTMFBOX_CFG" ]; then echo "Error [$DAEMON]: not configured" 1>&2 exit 1 fi fi # Get variables if [ -f $DTMFBOX_CFG ]; then . $DTMFBOX_CFG fi # Change Path/Scriptpath if [ "$DTMFBOX_PATH" = "" ]; then # /var/dtmfbox DTMFBOX_PATH="/var/dtmfbox" DTMFBOX_SCRIPTFILE="/var/dtmfbox/script/script_main.sh" USE_USB="0" else # usb-path DTMFBOX_SCRIPTFILE="$DTMFBOX_PATH/script/script_main.sh" USE_USB="1" fi ;; esac start() { echo "Start $DAEMON..." cd / # Refresh voipd register (if started) if [ ! -z "$(pidof "voipd")" ]; then voipd -R 2>/dev/null fi # check if userscript is available and unpacked if [ ! -f /var/tmp/flash/dtmfbox_userscript.sh ]; then if [ -f /var/tmp/flash/dtmfbox_userscript.sh.tar.gz ]; then tar xvz -f /var/tmp/flash/dtmfbox_userscript.sh.tar.gz -C / rm /var/tmp/flash/dtmfbox_userscript.sh.tar.gz fi fi mkdir -p $DTMFBOX_PATH 2>/dev/null mkdir -p $DTMFBOX_PATH/play 2>/dev/null mkdir -p $DTMFBOX_PATH/record 2>/dev/null mkdir -p $DTMFBOX_PATH/script 2>/dev/null mkdir -p $DTMFBOX_PATH/tmp 2>/dev/null if [ "$USE_USB" = "1" ]; then # # use USB... # if [ ! -f "$DTMFBOX_PATH/play/beep.wav" ]; then cp $DTMFBOX_DEFAULT/play/beep.wav $DTMFBOX_PATH/play/beep.wav fi if [ ! -f "$DTMFBOX_PATH/play/beep_end.wav" ]; then cp $DTMFBOX_DEFAULT/play/beep_end.wav $DTMFBOX_PATH/play/beep_end.wav fi if [ ! -f "$DTMFBOX_PATH/script/script_main.sh" ]; then cp $DTMFBOX_DEFAULT/script/script_main.sh $DTMFBOX_PATH/script/script_main.sh chmod +x $DTMFBOX_PATH/script/script_main.sh fi if [ ! -f "$DTMFBOX_PATH/script/script_idle.sh" ]; then cp $DTMFBOX_DEFAULT/script/script_idle.sh $DTMFBOX_PATH/script/script_idle.sh chmod +x $DTMFBOX_PATH/script/script_idle.sh fi if [ ! -f "$DTMFBOX_PATH/script/script_admin.sh" ]; then cp $DTMFBOX_DEFAULT/script/script_admin.sh $DTMFBOX_PATH/script/script_admin.sh chmod +x $DTMFBOX_PATH/script/script_admin.sh fi if [ ! -f "$DTMFBOX_PATH/script/script_funcs.sh" ]; then cp $DTMFBOX_DEFAULT/script/script_funcs.sh $DTMFBOX_PATH/script/script_funcs.sh chmod +x $DTMFBOX_PATH/script/script_funcs.sh fi if [ ! -f "$DTMFBOX_PATH/script/script_cbct.sh" ]; then cp $DTMFBOX_DEFAULT/script/script_cbct.sh $DTMFBOX_PATH/script/script_cbct.sh chmod +x $DTMFBOX_PATH/script/script_cbct.sh fi if [ ! -f "$DTMFBOX_PATH/script/script_cbct_call.sh" ]; then cp $DTMFBOX_DEFAULT/script/script_cbct_call.sh $DTMFBOX_PATH/script/script_cbct_call.sh chmod +x $DTMFBOX_PATH/script/script_cbct_call.sh fi else # # use /var/dtmfbox # ln -s $DTMFBOX_DEFAULT/play/beep.wav $DTMFBOX_PATH/play/beep.wav 2>/dev/null ln -s $DTMFBOX_DEFAULT/play/beep_end.wav $DTMFBOX_PATH/play/beep_end.wav 2>/dev/null ln -s $DTMFBOX_DEFAULT/script/script_main.sh $DTMFBOX_PATH/script/script_main.sh 2>/dev/null ln -s $DTMFBOX_DEFAULT/script/script_idle.sh $DTMFBOX_PATH/script/script_idle.sh 2>/dev/null ln -s $DTMFBOX_DEFAULT/script/script_admin.sh $DTMFBOX_PATH/script/script_admin.sh 2>/dev/null ln -s $DTMFBOX_DEFAULT/script/script_funcs.sh $DTMFBOX_PATH/script/script_funcs.sh 2>/dev/null ln -s $DTMFBOX_DEFAULT/script/script_cbct.sh $DTMFBOX_PATH/script/script_cbct.sh 2>/dev/null ln -s $DTMFBOX_DEFAULT/script/script_cbct_call.sh $DTMFBOX_PATH/script/script_cbct_call.sh 2>/dev/null fi # # write dtmfbox.cfg # ( $DTMFBOX_DEFAULT/tmp/dtmfbox.config ) > $DTMFBOX_PATH/dtmfbox.cfg chmod +x $DTMFBOX_PATH/dtmfbox.cfg cd $DTMFBOX_PATH if [ "$DSMOD" = "0" ]; then DAEMON="./$DAEMON" fi if [ "$1" = "log" ]; then # Run daemon (logging)... $DAEMON -daemon -cfg $DTMFBOX_PATH/dtmfbox.cfg -log $DTMFBOX_PATH/dtmfbox.log else # Run daemon... $DAEMON -daemon -cfg $DTMFBOX_PATH/dtmfbox.cfg fi exitval=$? if [ "$exitval" -eq 0 ]; then echo 'done!' else echo 'failed!' exit $exitval fi } stop() { echo "Stop $DAEMON..." # Stop daemon if [ ! -z "$(pidof "$DAEMON")" ]; then cd $DTMFBOX_PATH $DAEMON -stop daemon & sleep 3 killall -9 $DAEMON > /dev/null 2>&1 exitval=$? fi # Remove symlinks, etc., when not USB (quick&dirty) if [ "$USE_USB" = "0" ]; then rm $DTMFBOX_PATH/dtmfbox.cfg 2>/dev/null rm $DTMFBOX_PATH/script/script_main.sh 2>/dev/null rm $DTMFBOX_PATH/script/script_idle.sh 2>/dev/null rm $DTMFBOX_PATH/script/script_admin.sh 2>/dev/null rm $DTMFBOX_PATH/script/script_funcs.sh 2>/dev/null rm $DTMFBOX_PATH/script/script_cbct.sh 2>/dev/null rm $DTMFBOX_PATH/script/script_cbct_call.sh 2>/dev/null rm $DTMFBOX_PATH/play/beep.wav 2>/dev/null rm $DTMFBOX_PATH/play/beep_end.wav 2>/dev/null rmdir $DTMFBOX_PATH/script 2>/dev/null rmdir $DTMFBOX_PATH/tmp 2>/dev/null rmdir $DTMFBOX_PATH/play 2>/dev/null rmdir $DTMFBOX_PATH/record 2>/dev/null rmdir $DTMFBOX_PATH 2>/dev/null fi # Refresh voipd register (if started) if [ ! -z "$(pidof "voipd")" ]; then voipd -R 2>/dev/null fi echo 'done!' } idle() { let wait=15 echo -n "$DAEMON starting (15 sec)... " while [ $wait -ge 1 ]; do sleep 1 echo -n "$wait," let wait=wait-1 done echo "ready!" } case "$1" in ""|load) if [ "$DSMOD" = "1" ]; then if type modreg > /dev/null; then if [ "$DESIGN" = "MOD" ]; then # Mod-Design modreg cgi "dtmfbox&show=status" "$DAEMON - Status" modreg cgi "dtmfbox&show=accounts" "$DAEMON - Accounts" modreg cgi "dtmfbox&show=am" "$DAEMON - AB" modreg cgi "dtmfbox&show=cbct" "$DAEMON - CB/CT" modreg cgi "dtmfbox&show=dtmf" "$DAEMON - DTMF" modreg cgi "dtmfbox&show=voip_capi" "$DAEMON - VoIP/CAPI" else # Fullscreen-Design modreg cgi $DAEMON $DAEMON fi # Userdefined script modreg file dtmfbox_userscript dtmfbox-userscript 1 /etc/default.dtmfbox/dtmfbox.file fi fi if [ "$DTMFBOX_ENABLED" != "yes" ]; then echo "$DAEMON is disabled" 1>&2 exit 1; fi if [ ! -z "$(pidof $DAEMON)" ]; then echo "$DAEMON already started." else idle start fi ;; unload) stop if [ "$DSMOD" = "1" ]; then if [ "$DESIGN" = "MOD" ]; then # Mod-Design unregister modunreg cgi "dtmfbox&show=status" modunreg cgi "dtmfbox&show=accounts" modunreg cgi "dtmfbox&show=am" modunreg cgi "dtmfbox&show=dtmf" modunreg cgi "dtmfbox&show=cbct" modunreg cgi "dtmfbox&show=voip_capi" else modunreg cgi $DAEMON; fi modunreg file dtmfbox_userscript fi ;; start) idle start ;; stop) stop ;; log) start "log" ;; restart) stop sleep 1 start ;; status) if [ -z "$(pidof "$DAEMON")" ]; then echo "stopped" else echo "running" fi ;; *) echo "Usage: $0 [load|unload|start|stop|log|restart|status]" 1>&2 exit 1 ;; esac exit 0