Merge pull request #533 from micmac1/rtpe-parallel
[feed/telephony.git] / net / asterisk-16.x / files / asterisk.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2014 OpenWrt.org
3
4 START=99
5
6 USE_PROCD=1
7
8 #PROCD_DEBUG=1
9
10 NAME=asterisk
11 COMMAND=/usr/sbin/$NAME
12
13 LOGGER="/usr/bin/logger -p user.err -s -t $NAME --"
14
15 start_service() {
16 local enabled
17
18 local user
19 local group
20
21 local log_stderr
22 local log_stdout
23
24 local agidir
25 local cdrcsvdir
26 local datadir
27 local dbdir
28 local keydir
29 local logdir
30 local rundir
31 local spooldir
32 local varlibdir
33
34 local options
35
36 config_load $NAME
37
38 config_get_bool enabled general enabled 0
39 if [ $enabled -eq 0 ]; then
40 $LOGGER service not enabled in /etc/config/$NAME
41 exit 1
42 fi
43
44 config_get user general user $NAME
45 config_get group general group $NAME
46
47 user_exists "$user" || {
48 $LOGGER user \""$user"\" does not exist
49 exit 1
50 }
51 group_exists "$group" || {
52 $LOGGER group \""$group"\" does not exist
53 exit 1
54 }
55
56 if [ "$user" = $NAME ]; then
57 if ! id -nG $NAME | grep -qwF dialout; then
58 group_exists dialout && group_add_user dialout $NAME
59 fi
60 fi
61
62 config_get_bool log_stderr general log_stderr 1
63 config_get_bool log_stdout general log_stdout 1
64
65 config_get agidir directories agidir /usr/share/$NAME/agi-bin
66 config_get datadir directories datadir /usr/share/$NAME
67 config_get dbdir directories dbdir /var/lib/$NAME/astdb
68 config_get keydir directories keydir /usr/share/$NAME/keys
69 config_get logdir directories logdir /var/log/$NAME
70 config_get rundir directories rundir /var/run/$NAME
71 config_get spooldir directories spooldir /var/spool/$NAME
72 config_get varlibdir directories varlibdir /var/lib/$NAME
73
74 config_get options general options
75
76 cdrcsvdir="${logdir}/cdr-csv"
77
78 # do not touch directories that already exist
79 # posix shell does not support arrays, hence using awk
80 awk \
81 -v user="$user" \
82 -v group="$group" \
83 -v a="$agidir" \
84 -v b="$cdrcsvdir" \
85 -v c="$datadir" \
86 -v d="$dbdir" \
87 -v e="$keydir" \
88 -v f="$logdir" \
89 -v g="$rundir" \
90 -v h="$spooldir" \
91 -v i="$varlibdir" \
92 '
93 BEGIN {
94 dir[0]=a
95 dir[1]=b
96 dir[2]=c
97 dir[3]=d
98 dir[4]=e
99 dir[5]=f
100 dir[6]=g
101 dir[7]=h
102 dir[8]=i
103 for (x in dir) {
104 if (system("test ! -e \"" dir[x] "\"" )) {
105 delete dir[x]
106 }
107 }
108 for (x in dir) {
109 system("mkdir -p \"" dir[x] "\"" )
110 system("chmod 750 \"" dir[x] "\"" )
111 system("chown \"" user "\":\"" group "\" \"" dir[x] "\"" )
112 }
113 }
114 '
115
116 chown -R "$user":"$group" /etc/$NAME
117
118 procd_open_instance
119 procd_set_param command $COMMAND
120 procd_append_param command \
121 -G "$group" \
122 -U "$user" \
123 $options \
124 -f
125 # forward stderr to logd
126 procd_set_param stderr $log_stderr
127 # same for stdout
128 procd_set_param stdout $log_stdout
129 procd_close_instance
130 }
131