[packages_10.03.2] bandwidthd: merge r28946, r29199
[10.03/packages.git] / utils / bandwidthd / files / bandwidthd.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2008-2011 OpenWrt.org
3
4 START=99
5
6 config_cb() {
7         local cfg_type="$1"
8         local cfg_name="$2"
9
10         case "$cfg_type" in
11                 bandwidthd)
12                         append cfgs "$cfg_name"
13                 ;;
14         esac
15 }
16
17 export_bool() {
18         local option="$1"
19         local section="$2"
20         local _loctmp
21         config_get_bool _loctmp "$section" "$option"
22         if [ -n "$_loctmp" ]; then
23                 conffile="${conffile}$option "
24                 if [ 1 -eq "$_loctmp" ]; then
25                         conffile="${conffile}true"
26                 else
27                         conffile="${conffile}false"
28                 fi
29                 conffile="${conffile}\n"
30         fi
31 }
32
33 export_number() {
34         local option="$1"
35         local section="$2"
36         local _loctmp
37         config_get _loctmp "$section" "$option"
38         if [ -n "$_loctmp" ]; then
39                 conffile="${conffile}$option ${_loctmp}\n"
40         fi
41 }
42
43 export_string() {
44         local option="$1"
45         local section="$2"
46         local _loctmp
47         config_get _loctmp "$section" "$option"
48         if [ -n "$_loctmp" ]; then
49                 conffile="${conffile}$option \"${_loctmp}\"\n"
50         fi
51 }
52
53 start() {
54         local subnet conffile
55
56         [ -d /tmp/bandwidthd ] || mkdir -p /tmp/bandwidthd && cp /www/legend.gif /www/logo.gif /tmp/bandwidthd/
57         [ -e /htdocs ] || ln -s /tmp/bandwidthd /htdocs
58         [ -e /www/bandwidthd ] || ln -s /tmp/bandwidthd /www/bandwidthd
59         rm -f /tmp/bandwidthd.conf
60         touch /tmp/bandwidthd.conf
61         [ -e /etc/bandwidthd.conf ] || ln -s /tmp/bandwidthd.conf /etc/bandwidthd.conf
62         
63         
64         config_load bandwidthd
65         for cfg in $cfgs; do
66                 config_get subnets $cfg subnets
67                         for subnet in $subnets; do
68                                 conffile="${conffile}subnet ${subnet}\n"
69                         done
70                 export_string dev $cfg
71                 export_number skip_intervals $cfg
72                 export_number graph_cutoff $cfg
73                 export_bool promiscuous $cfg
74                 export_bool output_cdf $cfg
75                 export_bool recover_cdf $cfg
76                 export_string filter $cfg
77                 export_bool graph $cfg
78                 export_number meta_refresh $cfg
79                 [ -n "$conffile" ] && echo -e "$conffile" >>/tmp/bandwidthd.conf
80                 unset conffile
81         done
82         cd /
83         service_start /usr/sbin/bandwidthd
84 }
85
86 stop() {
87         service_stop /usr/sbin/bandwidthd
88 }