modules/admin-full: fix wifi join
[project/luci.git] / contrib / package / asterisk-xip / files / uci / disaconf
1 #!/bin/sh
2
3 # DISA - Directed Inwards System Application
4
5 ast_add_module disaconf
6
7 init_disaconf() {
8         ast_enable_type disa
9         ast_enable_type disaentry
10 }
11
12 check_append_disa() {
13         local context="${1}"
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"
18                 return 0
19         else
20                 return 1
21         fi
22 }
23
24 handle_disa(){
25         opt_disa_context="$1"
26
27         check_append_disa "$1"
28
29         option_cb() {
30                 case "$1" in
31                         context|mailbox|passcode|timeout)
32                                 eval "opt_disa_${opt_disa_context}_$1=\"\$2\"" ;;
33                         _*) ;;
34                         *) logerror "Invalid DISA option in ${opt_disa_context}: $1" ;;
35                 esac
36         }
37 }
38
39 disaoption_list="disa context mailbox passcode callerid"
40
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}"
45                 else
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}\""
49                         local line=
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}"
55                 fi
56         fi
57         for i in ${disaoption_list} ; do
58                 eval "unset last_disa_$i"
59         done
60 }
61
62 handle_disaentry() {
63         check_add disaentry
64         option_cb() {
65                 case "$1" in
66                         disa|context|mailbox|passcode|callerid)
67                                 eval "last_disa_$1=\"\$2\"" ;;
68                         _*) ;;
69                         *) logerror "Invalid DISAEntry option in ${last_disa_context-<unknown>}: $1" ;;
70                 esac
71         }
72 }
73
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}\""
82                                 local nn=1
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})"
87                                         nn=n
88                                 fi
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}"
96                                         else
97                                                 append_dialplan_context ${disactx} "exten => s,${nn},DISA(${disa_passcode},${disa_context})"
98                                         fi
99                                 fi
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"
105
106                                         append_dialplan_context ${disactx} "exten => s,${nn},DISA(${file})"
107                                 fi
108                                 append_dialplan_context ${disactx} "exten => t,1,Hangup"
109                         fi
110                 done
111         fi
112 }
113