blob: a022697d9bdcca0e972e4562285e12fd547c1001 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh /etc/rc.common
2# Copyright (C) 2015 villy@sft.ru
3
4START=98
5
6USE_PROCD=1
7PROG=/usr/bin/gammu-smsd
8CONFPFX=/var/gammu
9
10start_instance() {
11 local conf="$1"
12 local item
13 local conffile="$CONFPFX-$conf.conf"
14
15 config_get_bool item "$conf" enabled 0
16 [ "$item" = 0 ] && return
17
18 {
19 printf "; don't edit. instead look into /etc/config/gammu\n[gammu]\n\n"
20
21 config_get item "$conf" device
22 [ -z "$item" ] && return
23 echo "device = $item"
24
25 config_get item "$conf" connection
26 [ -z "$item" ] && return
27 echo "connection = $item"
28
29 config_get item "$conf" logfile
30 [ -z "$item" ] && item=syslog
31 echo "logfile = $item"
32
33 printf "\n[smsd]\nphoneid = %s\nservice = files\nlogfile = %s\n" "$conf" "$item"
34 printf "checkbattery = 0\nhangupcalls = 1\n"
35
36 config_get item "$conf" pin
37 [ -n "$item" ] && echo "pin = $item"
38 config_get item "$conf" phonecode
39 [ -n "$item" ] && echo "phonecode = $item"
40
41 config_get item "$conf" send
42 [ -n "$item" ] && echo "send = $item"
43
44 config_get item "$conf" receive
45 [ -n "$item" ] && echo "receive = $item"
46
47 config_get item "$conf" timeout
48 [ -n "$item" ] && echo "commtimeout = $item"
49
50 config_get item "$conf" sleep
51 [ -n "$item" ] && echo "loopsleep = $item"
52
53 config_get item "$conf" report
54 [ -n "$item" ] && echo "deliveryreport = $item"
55
56 config_get item "$conf" onreceive
57 [ -n "$item" ] && echo "runonreceive = $item"
58
59 config_get item "$conf" onerror
60 [ -n "$item" ] && echo "runonfailure = $item"
61
62 config_get item "$conf" spool
63 [ -z "$item" ] && item=/var/sms
64 [ -d "$item" ] || {
65 mkdir "$item"
66 mkdir "$item/inbox"
67 mkdir "$item/outbox"
68 mkdir "$item/sent"
69 mkdir "$item/error"
70 }
71 printf "inboxpath = %s/inbox/\noutboxpath = %s/outbox/\n" "$item" "$item"
72 printf "sentsmspath = %s/sent/\nerrorsmspath = %s/error/\n" "$item" "$item"
73 } > "$conffile"
74
75 config_get item "$conf" allow
76 [ -n "$item" ] && {
77 local data
78 local allowfile=$CONFPFX-$conf.allow
79 for data in $item ; do
80 echo $data >> "$allowfile"
81 done
82
83 echo "includenumbersfile = $allowfile" >> "$conffile"
84 }
85
86 config_get item "$conf" deny
87 [ -n "$item" ] && {
88 local data
89 local denyfile=$CONFPFX-$conf.deny
90 for data in $item ; do
91 echo $data >> "$denyfile"
92 done
93
94 echo "excludenumbersfile = $denyfile" >> "$conffile"
95 }
96
97 procd_open_instance
98
99 config_get_bool item "$conf" respawn 0
100 [ "$item" = 0 ] || procd_set_param respawn
101
102 procd_set_param command $PROG --config="$conffile"
103
104 config_get item "$conf" pidfile
105 [ -n "$item" ] && procd_append_param command --pid=$item
106
107 procd_close_instance
108}
109
110start_service() {
111 config_load gammu
112 config_foreach start_instance daemon
113}
114
115service_triggers() {
116 procd_add_reload_trigger "gammu"
117}