6483daa2c00b97f7ca7927cea5d6ec88768229a6
[openwrt/svn-archive/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 }