luci/contrib/package/asterisk-xip/files/uci/disaconf
2009-01-19 12:12:22 +00:00

113 lines
3.3 KiB
Bash

#!/bin/sh
# DISA - Directed Inwards System Application
ast_add_module disaconf
init_disaconf() {
ast_enable_type disa
ast_enable_type disaentry
}
check_append_disa() {
local context="${1}"
eval "local isadded=\"\${dialplan_add_disa_${context}-0}\""
if [ "$isadded" != "1" ] ; then
eval "dialplan_add_disa_${context}=1"
append disa_contexts "$context"
return 0
else
return 1
fi
}
handle_disa(){
opt_disa_context="$1"
check_append_disa "$1"
option_cb() {
case "$1" in
context|mailbox|passcode|timeout)
eval "opt_disa_${opt_disa_context}_$1=\"\$2\"" ;;
_*) ;;
*) logerror "Invalid DISA option in ${opt_disa_context}: $1" ;;
esac
}
}
disaoption_list="disa context mailbox passcode callerid"
check_add_disaentry() {
if [ ! -z "${last_disa_disa}" ] ; then
if [ -z "${last_disa_passcode}" ] ; then
logerror "Passcode required in DisaEntry for ${last_disa_disa}"
else
logdebug 3 "Adding DisaEntry to ${last_disa_disa}"
[ -z "${last_disa_context}" ] && eval "last_disa_context=\"\${opt_disa_${last_disa_disa}_context}\""
[ -z "${last_disa_mailbox}" ] && eval "last_disa_mailbox=\"\${opt_disa_${last_disa_disa}_mailbox}\""
local line=
[ -z "${last_disa_mailbox}" ] || line="|${last_disa_mailbox}"
[ -z "${line}" -a -z "${last_disa_callerid}" ] || line="|${last_disa_callerid}${line}"
[ -z "${line}" -a -z "${last_disa_context}" ] || line="|${last_disa_context}${line}"
line="${last_disa_passcode}${line}"
append opt_disa_${last_disa_disa}_list "${line}" "${N}"
fi
fi
for i in ${disaoption_list} ; do
eval "unset last_disa_$i"
done
}
handle_disaentry() {
check_add disaentry
option_cb() {
case "$1" in
disa|context|mailbox|passcode|callerid)
eval "last_disa_$1=\"\$2\"" ;;
_*) ;;
*) logerror "Invalid DISAEntry option in ${last_disa_context-<unknown>}: $1" ;;
esac
}
}
createdialplan_disaconf() {
if [ ! -z "${disa_contexts}" ] ; then
enable_module app_disa
for disactx in ${disa_contexts} ; do
logdebug 3 "Adding DISA context ${disactx}"
if check_add_context ${disactx} ; then
eval "local disa_list=\"\${opt_disa_${disactx}_list}\""
eval "local disa_timeout=\"\${opt_disa_${disactx}_timeout}\""
local nn=1
if [ ! -z "${disa_timeout}" ] ; then
logdebug 3 "Adding timeout to ${disactx}"
enable_module func_timeout
append_dialplan_context ${disactx} "exten => s,1,SET(TIMEOUT(response)=${disa_timeout})"
nn=n
fi
if [ -z "${disa_list}" ] ; then
logdebug 3 "No list in ${disactx}"
eval "local disa_mailbox=\"\${opt_disa_${disactx}_mailbox}\""
eval "local disa_context=\"\${opt_disa_${disactx}_context}\""
eval "local disa_passcode=\"\${opt_disa_${disactx}_passcode}\""
if [ ! -z ${disa_mailbox} ] ; then
disa_list="${disa_passcode}|${disa_context}||${disa_mailbox}"
else
append_dialplan_context ${disactx} "exten => s,${nn},DISA(${disa_passcode},${disa_context})"
fi
fi
if [ ! -z "${disa_list}" ] ; then
logdebug 3 "Output list to file in ${disactx}"
logdebug 4 "list: ${disa_list}"
local file="${DEST_DIR}/disa_${disactx}.txt"
echo "${asteriskuci_gen}${disa_list}" > "$file"
append_dialplan_context ${disactx} "exten => s,${nn},DISA(${file})"
fi
append_dialplan_context ${disactx} "exten => t,1,Hangup"
fi
done
fi
}