| #!/bin/sh /etc/rc.common |
| # Copyright (C) 2008-2017 OpenWrt.org |
| |
| START=99 |
| |
| USE_PROCD=1 |
| |
| CONFIGNAME="bandwidthd" |
| CONFIGPHPNAME="bandwidthd-php" |
| CONFIGFILE="/tmp/etc/bandwidthd.conf" |
| CONFIGPHPFILE="/tmp/etc/bandwidthd-php.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="# auto-generated config file from /etc/config/${CONFIGNAME}\n" |
| |
| [ -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 / |
| } |
| |
| set_php_conf_file() { |
| local subnet conffile="<?php\n// auto-generated config file from /etc/config/${CONFIGPHPNAME}\n" |
| |
| rm -f $CONFIGPHPFILE |
| touch $CONFIGPHPFILE |
| |
| config_load $CONFIGPHPNAME |
| for cfg in $cfgs; do |
| export_number dflt_width $cfg |
| conffile="${conffile}define(\"DFLT_WIDTH\", ${paramstr:-"900"});\n" |
| |
| export_number dflt_height $cfg |
| conffile="${conffile}define(\"DFLT_HEIGHT\", ${paramstr:-"256"});\n" |
| |
| export_string dflt_interval $cfg |
| conffile="${conffile}define(\"DFLT_INTERVAL\", ${paramstr:-"INT_DAILY"});\n\n"'$db_connect_string = "sqlite:' |
| |
| export_string sqlite_dbname $cfg |
| conffile="${conffile}${paramstr:-"/www/bandwidthd/stats.db"}"'"'"\n?>" |
| [ -n "$conffile" ] && echo -e "$conffile" >>$CONFIGPHPFILE |
| done |
| cd / |
| } |
| |
| service_triggers() { |
| procd_add_reload_trigger $CONFIGNAME |
| procd_add_reload_trigger $CONFIGPHPNAME |
| } |
| |
| start_service() { |
| set_conf_file |
| set_php_conf_file |
| procd_open_instance |
| procd_set_param command /usr/sbin/bandwidthd |
| procd_close_instance |
| } |
| |
| stop_service() { |
| service_stop /usr/sbin/bandwidthd |
| } |