3 # Author: Michael Geddes <michael at frog dot wheelycreek dot net>
4 # Copyright 2008 Michael Geddes
10 # Calling of Macros in dialplan
18 asteriskuci_gen
="; Generated by Openwrt AstriskUCI script version ${Version}$N"
27 if [ $
(expr $1 "<=" ${debuglevel-0}) == 1 ] ; then
36 [ $i == $val ] && return 0
45 while [ ! -z "$rhs" ] ; do
48 [ -z $4 ] ||
eval "$4 ${cur}"
49 append
$1 "${lhs}${cur}" "$4"
50 [ "$nvar" == "$rhs" ] && break
57 local sum=`md5sum $2 | cut -d " " -f 1`
62 #eval "logdebug 1 \"Checksum $2 : \${$1}\""
67 local sum=`md5sum $2 | cut -d " " -f 1`
71 #logdebug 1 "Compare $1 checksum $2 with new checksum $sum "
76 # Add config module to initialise list
77 ast_add_conf
() append asterisk_conf_list
$1 " "
78 # Add module to initialise list
79 ast_add_module
() append asterisk_module_list
$1 " "
80 # Add to 'reload' list.
81 ast_add_reload
() append asterisk_load_list
$1 " "
83 # Enable a top-level type
84 ast_enable_type
() eval "enabled_section_${1}=1"
86 # Is a top-level type enabled?
88 eval "local res=\${enabled_section_${1}}"
89 if [ "$res" != 1 ] ; then
95 # For use in sections - make sure that the last section is processed
97 logdebug
1 "Check add $1"
98 if [ ! -z "${last_added_checked}" ] ; then
99 logdebug
1 "Eval check-add ${last_added_checked}"
100 eval "check_add_${last_added_checked}"
102 last_added_checked
=$1
105 # Process the section yet to be checked.
106 check_all_added
() check_add
""
108 # Create static links for stuff we dont want to configure yet.
109 create_staticlinks
() {
110 logdebug
1 "Link in a few mostly static configurations"
111 linkconfigs
="codecs.conf say.conf sip_notify.conf udptl.conf logger.conf"
112 module_enabled res_indications
&& append linkconfigs indications.conf
" "
113 for i
in ${linkconfigs} ; do
114 [ -e $DEST_DIR/$i ] ||
ln -s $DEST/etc
/asterisk
/$i $DEST_DIR
117 logdebug
1 "Link in #include directories"
118 for i
in include inc libs lib library macro macros
; do
119 if [ -e $DEST/etc
/asterisk
/$i -a ! -d "$DEST_DIR/$i" -a ! -e "$DEST_DIR/$i" ] ; then
120 ln -s $DEST/etc
/asterisk
/$i $DEST_DIR
132 DEST_DIR
=/tmp
/asterisk
135 if [ "$2" == "testonly" ] ; then
137 elif [ "$2" == "test" ] ; then
138 DEST_DIR
=/tmp
/asterisk.tmp
139 echo Using Test dir
: $DEST_DIR
143 [ -z "$3" ] || debuglevel
=$3
145 logdebug
1 "Loading Asterisk Config"
146 .
${UCILIB}/asteriskconf
147 logdebug
2 "Loading Module Config"
148 .
${UCILIB}/moduleconf
149 logdebug
2 "Loading Dialplan Config"
150 .
${UCILIB}/dialplanconf
152 for f
in ${DEST}/etc
/asterisk
/conf.d
/* ; do
153 logdebug
1 "Loading Module $f"
164 for i
in ${asterisk_module_list} ; do
165 logdebug
1 "Init $i module"
169 for i
in ${asterisk_conf_list} ; do
170 logdebug
1 "Init $i config"
176 logdebug
2 "Load $1/$2"
177 eval "local val=\"\${dups_$2}\""
178 if [ "${val}" == "" ] ; then
181 logerror
"Duplicate Section Name: $2 (type $1)"
184 if ast_type_enabled
$1 ; then
186 elif [ ! -z "$1" ] ; then
188 logerror
"Unknown section: $1/$2"
190 logerror
"Invalid option '$1' for invalid section"
197 if [ "$testing_mode" != "1" ] ; then
201 for i
in ${asterisk_conf_list} ; do
202 logdebug
1 "Create $i config"
203 eval "create_${i}conf"
208 # Link in a few mostly static configurations
211 [ "$testing_mode" == "2" ] && reload_check_asterisk
216 ASTCMD
="${DEST%/}/usr/sbin/asterisk -C /tmp/asterisk/asterisk.conf "
217 logdebug
1 "Command: $1"
218 if [ -z "${2-}" ] ; then
219 ${ASTCMD} -r -x "$1" 2>&- 1>&-
221 eval "$2=`${ASTCMD} -r -x \"$1\"`"
227 # while [ -d /proc/$1 ] ; do
232 restart_gracefully
() {
233 stop_uci_asterisk
"$DEST"
234 startup_asterisk
"$DEST"
236 #echo "Check for pid"
237 #if [ -r /var/run/asterisk.ctl ] ; then
238 # astcmd "stop gracefully"
240 # [ ${ret} = 0 ] || return $ret
241 # waitfor `cat /var/run/asterisk.pid`
243 #startup_asterisk ${DEST}
247 while [ ! -z "$1" ] ; do
253 reload_check_asterisk
() {
254 logdebug
1 "Check Reloading"
256 if [ "${ast_restart-}" == 1 ] ; then
257 logdebug
1 "Restarting Gracefully"
260 for i
in ${asterisk_load_list} ; do
261 logdebug
1 "Checking ${i} reload"
262 eval "local doload=\${ast_${i}_restart}"
264 1) logdebug
1 "Reloading ${i}" ;;
265 2) logdebug
1 "Unloading ${i}" ;;
269 [ ${reboot} = 1 ] && logdebug
1 "reboot hardware"
273 logdebug
1 "Reloading"
275 if [ "${ast_restart-}" == 1 ] ; then
276 logdebug
2 "Restarting Gracefully"
280 for i
in ${asterisk_load_list} ; do
281 logdebug
3 "Checking ${i} reload"
282 eval "local doload=\${ast_${i}_restart}"
284 1) logdebug
1 "Reloading ${i}"
285 eval "reload_${i}" || reboot
=1 ;;
286 2) logdebug
1 "Unloading ${i}"
287 eval "unload_${i}" || reboot
=1 ;;
292 if [ ${reboot} = 1 ] ; then
293 ( sleep 5; reboot_hardware
) &
298 DEFAULT
=$DEST/etc
/default
/asterisk
299 [ -f $DEFAULT ] && .
$DEFAULT
300 [ -d /var
/run
] || mkdir
-p /var
/run
301 [ -d ${asterisk_logdir} ] || mkdir
-p ${asterisk_logdir}
302 [ -d ${asterisk_spooldir} ] || mkdir
-p ${asterisk_spooldir}
303 [ -d /var
/spool
/asterisk
] || mkdir
-p /var
/spool
/asterisk
304 [ -h $DEST/usr
/lib
/asterisk
/astdb
] ||
ln -sf /var
/spool
/asterisk
/astdb
$DEST/usr
/lib
/asterisk
/astdb
306 $DEST/usr
/sbin
/asterisk
-C /tmp
/asterisk
/asterisk.conf
$UCIOPTIONS -f 2>&1 > ${asterisk_logdir}/asterisk_proc
&
307 # Wait a bit then reboot the hardware
308 ( sleep 5; reboot_hardware
) &
311 # Init.d start() handler
312 start_uci_asterisk
() {
315 if setup_asterisk
$DEST ; then
316 startup_asterisk
"$DEST"
320 restart_uci_asterisk
() {
322 if setup_asterisk
$DEST ; then
323 echo "Trying to Restart gracefully"
324 if [ -r /var
/run
/asterisk.ctl
] ; then
325 # if astcmd "restart gracefully" ; then
326 echo "Sending restart"
327 if restart_gracefully
; then
328 echo "Restarting gracefully"
332 stop_uci_asterisk
"$DEST"
333 startup_asterisk
"$DEST"
341 # init.d stop() handler
342 stop_uci_asterisk
() {
344 if [ -r /var
/run
/asterisk.ctl
] ; then
348 [ -f /var
/run
/asterisk.pid
] && kill $
(cat /var
/run
/asterisk.pid
) >/dev
/null
2>&1
351 reload_uci_asterisk
() {
353 DEFAULT
=$DEST/etc
/default
/asterisk
355 if [ -r /var
/run
/asterisk.ctl
] ; then
356 if setup_asterisk
"$DEST" ; then
357 # Selective reload modules.
361 start_uci_asterisk
"$1"
365 # vim: ts=2 sw=2 noet foldmethod=indent