openwrt-packages/utils/bandwidthd/files/bandwidthd.init

107 lines
2.2 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
# Copyright (C) 2008-2017 OpenWrt.org
START=99
USE_PROCD=1
CONFIGNAME="bandwidthd"
CONFIGFILE="/tmp/etc/bandwidthd.conf"
config_cb() {
local cfg_type="$1"
local cfg_name="$2"
case "$cfg_type" in
bandwidthd)
append cfgs "$cfg_name"
;;
esac
}
export_bool() {
local option="$1"
local section="$2"
local _loctmp
config_get_bool _loctmp "$section" "$option"
if [ -n "$_loctmp" ]; then
conffile="${conffile}$option "
if [ 1 -eq "$_loctmp" ]; then
conffile="${conffile}true"
else
conffile="${conffile}false"
fi
conffile="${conffile}\n"
fi
}
export_number() {
local option="$1"
local section="$2"
local _loctmp
config_get _loctmp "$section" "$option"
if [ -n "$_loctmp" ]; then
conffile="${conffile}$option ${_loctmp}\n"
fi
}
export_string() {
local option="$1"
local section="$2"
local _loctmp
config_get _loctmp "$section" "$option"
if [ -n "$_loctmp" ]; then
conffile="${conffile}$option \"${_loctmp}\"\n"
fi
}
set_conf_file() {
local subnet conffile
[ -d /tmp/bandwidthd ] || mkdir -p /tmp/bandwidthd && cp /www/legend.gif /www/logo.gif /tmp/bandwidthd/
[ -e /htdocs ] || ln -s /tmp/bandwidthd /htdocs
[ -e /www/bandwidthd ] || ln -s /tmp/bandwidthd /www/bandwidthd
rm -f $CONFIGFILE
touch $CONFIGFILE
[ -e /etc/bandwidthd.conf ] || ln -s $CONFIGFILE /etc/bandwidthd.conf
config_load $CONFIGNAME
for cfg in $cfgs; do
config_get subnets $cfg subnets
for subnet in $subnets; do
conffile="${conffile}subnet ${subnet}\n"
done
export_string dev $cfg
export_number skip_intervals $cfg
export_number graph_cutoff $cfg
export_bool promiscuous $cfg
export_bool output_cdf $cfg
export_bool recover_cdf $cfg
export_string filter $cfg
export_bool graph $cfg
export_number meta_refresh $cfg
export_string pgsql_connect_string $cfg
export_string sqlite_filename $cfg
export_string sensor_id $cfg
[ -n "$conffile" ] && echo -e "$conffile" >>$CONFIGFILE
unset conffile
done
cd /
}
service_triggers()
{
procd_add_reload_trigger $CONFIGNAME
}
start_service() {
set_conf_file
procd_open_instance
procd_set_param command /usr/sbin/bandwidthd
procd_close_instance
}
stop_service() {
service_stop /usr/sbin/bandwidthd
}