#!/bin/bash # # validate_controlled_conf.agi # # See if the desired ID is in the controlled conference database. # Return boolean VALID_PIN and numerical id CONTROLLED_CONF_ID if # it is found. # # Use the Linux "lockfile" command to control concurrent access # #set -x declare -a array while read -e ARG && [ "$ARG" ] ; do array=(` echo $ARG | sed -e 's/://'`) export ${array[0]}=${array[1]} done checkresults() { while read line do case ${line:0:4} in "200 " ) echo $line >&2 return;; "510 " ) echo $line >&2 return;; "520 " ) echo $line >&2 return;; * ) echo $line >&2;; #keep on reading those Invlid command #command syntax until "520 End ..." esac done } # Have conference IDs 111 - 116. Our "database" looks like this: # 111 0-N # 112 0-N # 113 0-N # . # . # 2nd column is number of people currently in the conference DBFILE=/var/lib/asterisk/agi-bin/controlledconf_id_db LOCKFILE=/tmp/controlledconf_id_db.lock TMPFILE=/tmp/controlledconf_id_db.tmp IDWANTED=$1 lockfile $LOCKFILE echo "SET VARIABLE VALID_PIN F" checkresults while read DBLINE do THISID=`echo $DBLINE | awk '{print $1}'` if [ $THISID = $IDWANTED ] then NUMCONFEREES=`echo $DBLINE | awk '{print $2}'` if [ $NUMCONFEREES -gt 0 ] then echo "SET VARIABLE VALID_PIN T" checkresults echo "SET VARIABLE CONTROLLED_CONF_ID $IDWANTED" checkresults fi fi done < $DBFILE rm -f $LOCKFILE exit 0;