3 # DISA - Directed Inwards System Application
5 ast_add_module disaconf
9 ast_enable_type disaentry
14 eval "local isadded=\"\${dialplan_add_disa_${context}-0}\""
15 if [ "$isadded" != "1" ] ; then
16 eval "dialplan_add_disa_${context}=1"
17 append disa_contexts "$context"
27 check_append_disa "$1"
31 context|mailbox|passcode|timeout)
32 eval "opt_disa_${opt_disa_context}_$1=\"\$2\"" ;;
34 *) logerror "Invalid DISA option in ${opt_disa_context}: $1" ;;
39 disaoption_list="disa context mailbox passcode callerid"
41 check_add_disaentry() {
42 if [ ! -z "${last_disa_disa}" ] ; then
43 if [ -z "${last_disa_passcode}" ] ; then
44 logerror "Passcode required in DisaEntry for ${last_disa_disa}"
46 logdebug 3 "Adding DisaEntry to ${last_disa_disa}"
47 [ -z "${last_disa_context}" ] && eval "last_disa_context=\"\${opt_disa_${last_disa_disa}_context}\""
48 [ -z "${last_disa_mailbox}" ] && eval "last_disa_mailbox=\"\${opt_disa_${last_disa_disa}_mailbox}\""
50 [ -z "${last_disa_mailbox}" ] || line="|${last_disa_mailbox}"
51 [ -z "${line}" -a -z "${last_disa_callerid}" ] || line="|${last_disa_callerid}${line}"
52 [ -z "${line}" -a -z "${last_disa_context}" ] || line="|${last_disa_context}${line}"
53 line="${last_disa_passcode}${line}"
54 append opt_disa_${last_disa_disa}_list "${line}" "${N}"
57 for i in ${disaoption_list} ; do
58 eval "unset last_disa_$i"
66 disa|context|mailbox|passcode|callerid)
67 eval "last_disa_$1=\"\$2\"" ;;
69 *) logerror "Invalid DISAEntry option in ${last_disa_context-<unknown>}: $1" ;;
74 createdialplan_disaconf() {
75 if [ ! -z "${disa_contexts}" ] ; then
76 enable_module app_disa
77 for disactx in ${disa_contexts} ; do
78 logdebug 3 "Adding DISA context ${disactx}"
79 if check_add_context ${disactx} ; then
80 eval "local disa_list=\"\${opt_disa_${disactx}_list}\""
81 eval "local disa_timeout=\"\${opt_disa_${disactx}_timeout}\""
83 if [ ! -z "${disa_timeout}" ] ; then
84 logdebug 3 "Adding timeout to ${disactx}"
85 enable_module func_timeout
86 append_dialplan_context ${disactx} "exten => s,1,SET(TIMEOUT(response)=${disa_timeout})"
89 if [ -z "${disa_list}" ] ; then
90 logdebug 3 "No list in ${disactx}"
91 eval "local disa_mailbox=\"\${opt_disa_${disactx}_mailbox}\""
92 eval "local disa_context=\"\${opt_disa_${disactx}_context}\""
93 eval "local disa_passcode=\"\${opt_disa_${disactx}_passcode}\""
94 if [ ! -z ${disa_mailbox} ] ; then
95 disa_list="${disa_passcode}|${disa_context}||${disa_mailbox}"
97 append_dialplan_context ${disactx} "exten => s,${nn},DISA(${disa_passcode},${disa_context})"
100 if [ ! -z "${disa_list}" ] ; then
101 logdebug 3 "Output list to file in ${disactx}"
102 logdebug 4 "list: ${disa_list}"
103 local file="${DEST_DIR}/disa_${disactx}.txt"
104 echo "${asteriskuci_gen}${disa_list}" > "$file"
106 append_dialplan_context ${disactx} "exten => s,${nn},DISA(${file})"
108 append_dialplan_context ${disactx} "exten => t,1,Hangup"