bfead56f93181e0c276cfa565b797238a46409b4
[feed/packages.git] / net / natmap / files / natmap.init
1 #!/bin/sh /etc/rc.common
2
3 START=99
4 USE_PROCD=1
5
6 NAME=natmap
7 PROG=/usr/bin/$NAME
8
9 STATUS_PATH=/var/run/natmap
10
11 load_interfaces() {
12 config_get interface "$1" interface
13 config_get enable "$1" enable 1
14
15 [ "${enable}" = "1" ] && interfaces=" ${interface} ${interfaces}"
16 }
17
18 validate_section_natmap() {
19 uci_load_validate "${NAME}" natmap "$1" "$2" \
20 'enable:bool:0' \
21 'family:string' \
22 'udp_mode:bool:0' \
23 'interface:string' \
24 'interval:uinteger' \
25 'stun_server:host' \
26 'http_server:host' \
27 'port:port' \
28 'forward_target:host' \
29 'forward_port:port' \
30 'notify_script:file' \
31 'log_stdout:bool:1' \
32 'log_stderr:bool:1'
33 }
34
35 natmap_instance() {
36 [ "$2" = 0 ] || {
37 echo "validation failed"
38 return 1
39 }
40
41 [ "${enable}" = 0 ] && return 1
42
43 procd_open_instance "$1"
44 procd_set_param command "$PROG" \
45 ${interval:+-k "$interval"} \
46 ${stun_server:+-s "$stun_server"} \
47 ${http_server:+-h "$http_server"} \
48 ${port:+-b "$port"} \
49
50 [ "${family}" = ipv4 ] && procd_append_param command -4
51 [ "${family}" = ipv6 ] && procd_append_param command -6
52 [ "${udp_mode}" = 1 ] && procd_append_param command -u
53
54 [ -n "${interface}" ] && {
55 local ifname
56
57 network_get_device ifname "$interface" || ifname="$interface"
58 procd_append_param command -i "$ifname"
59 procd_append_param netdev "$ifname"
60 }
61
62 [ -n "${forward_target}" ] && procd_append_param command -t "$forward_target" -p "$forward_port"
63
64 [ -n "${notify_script}" ] && procd_set_param env "NOTIFY_SCRIPT=${notify_script}"
65 procd_append_param command -e /usr/lib/natmap/update.sh
66
67 procd_set_param respawn
68 procd_set_param stdout "${log_stdout}"
69 procd_set_param stderr "${log_stderr}"
70
71 procd_close_instance
72 }
73
74 clear_status_files() {
75 find "${STATUS_PATH}" -type f -print0 | xargs -0 rm -f --
76 }
77
78 service_triggers() {
79 local interfaces
80
81 procd_add_reload_trigger "${NAME}"
82
83 config_load "${NAME}"
84 config_foreach load_interfaces natmap
85
86 [ -n "${interfaces}" ] && {
87 for n in $interfaces ; do
88 procd_add_reload_interface_trigger $n
89 done
90 }
91
92 procd_add_validation validate_section_natmap
93 }
94
95 start_service() {
96 . /lib/functions/network.sh
97
98 mkdir -p "${STATUS_PATH}"
99 clear_status_files
100
101 config_load "${NAME}"
102 config_foreach validate_section_natmap natmap natmap_instance
103 }
104
105 reload_service() {
106 stop
107 start
108 }
109
110 service_stopped() {
111 clear_status_files
112 }