summaryrefslogtreecommitdiffstats
path: root/net/asterisk/files/asterisk.init
blob: 61c5d4f8d93a96c328367f9e3b93648244ebdcfc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/sh /etc/rc.common
# Copyright (C) 2014 OpenWrt.org

START=99

USE_PROCD=1
#PROCD_DEBUG=1

NAME=asterisk
COMMAND=/usr/sbin/$NAME

log() {
  level=$1
  shift
  /usr/bin/logger -p daemon.$level -s -t $NAME "$@"
}

start_service() {
  dbdir=/var/lib/asterisk/astdb
  logdir=/var/log/asterisk
  cdrcsvdir=$logdir/cdr-csv
  rundir=/var/run/asterisk
  spooldir=/var/spool/asterisk
  varlibdir=/var/lib/asterisk

  config_load $NAME

  config_get_bool enabled general enabled 0
  if [ $enabled -eq 0 ]; then
    log err "service not enabled in /etc/config/$NAME"
    return 1
  fi

  config_get_bool log_stderr general log_stderr 1
  config_get_bool log_stdout general log_stdout 0

  config_get options general options

  for i in \
    "$logdir" \
    "$cdrcsvdir" \
    "$rundir" \
    "$spooldir" \
    "$varlibdir" \
    "$dbdir"
  do
    if ! [ -e "$i" ]; then
      mkdir -m 0750 -p "$i"
      [ -d "$i" ] && chown $NAME:$NAME "$i"
    fi
  done

  procd_open_instance
  procd_set_param command $COMMAND
  procd_append_param command \
    -U "$NAME" \
    $options \
    -f
  # forward stderr to logd
  procd_set_param stderr $log_stderr
  # same for stdout
  procd_set_param stdout $log_stdout
  procd_close_instance
}

reload_service() {
  procd_send_signal $NAME
}

extra_command "reregister" "Re-register all outbound registrations"
reregister() {
  MODULES=`$COMMAND -x 'module show'` || exit 1

  echo "$MODULES" | grep -q -s '^res_pjsip.so' && {
    log info "re-registering all outbound pjsip registrations"
    $COMMAND -x 'pjsip send unregister *all' -x 'pjsip send register *all'
  }
}

service_triggers() {
  config_load $NAME
  config_get_bool enabled general enabled 0
  config_get interface general interface ""

  [ $enabled -eq 1 -a -n "$interface" ] && procd_add_interface_trigger "interface.*.up" "$interface" /etc/init.d/$NAME reregister
}