0) { unset($config['cron']['item'][$x_name]); write_config(); } configure_cron(); conf_mount_ro(); } function vnstat_install_config() { global $config; conf_mount_rw(); exec("[ ! -d dir ] && mkdir /var/db/vnstat"); // Unpack and move Vnstat frontend exec("cd .."); exec("tar -zxovf /usr/local/pkg/vnstat_php_frontend-1.4.1.tar.gz"); exec("mv vnstat_php_frontend-1.4.1 /usr/local/www/vnstat2"); // Add cron job to config.xml $cron_item = array(); $cron_item['minute'] = "*/1"; $cron_item['hour'] = "*"; $cron_item['mday'] = "*"; $cron_item['month'] = "*"; $cron_item['wday'] = "*"; $cron_item['who'] = "root"; $cron_item['command'] = "/usr/local/bin/vnstat -u"; $config['cron']['item'][] = $cron_item; // get system nic's and create a database for them $array_of_real_nic_names = array(); $array_of_custom_nic_names = array(); $ifdescrs = array('wan' => 'WAN', 'lan' => 'LAN'); for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) { $ifdescrs['opt' . $j] = $config['interfaces']['opt' . $j]['descr']; } foreach ($ifdescrs as $ifdescr => $ifname): $real_nic_names = get_real_interface($ifdescr); array_push($array_of_real_nic_names, $real_nic_names); endforeach; // Get already nic's assigned to vnstat exec("ls /var/db/vnstat/ | grep -v '\.'", $vnstat_nic); // Compare real nic's with nic's assigned to vnstat $result = array_diff($array_of_real_nic_names, $vnstat_nic); // Create database for each nic foreach ($result as $result2) { exec("/usr/local/bin/vnstat -u -i ". $result2); } // Find information to be writing in config.php // $iface_list_array_items exec("ls /var/db/vnstat/ | grep -v '\.'", $vnstat_nic_in); $iface_list_array_items = implode("', '", $vnstat_nic_in); $iface_list_array = "\$iface_list = array('$iface_list_array_items');"; // $iface_title_array_items $iface_title_array_items = array(); $iface_title_array_items2 = array(); foreach ($vnstat_nic_in as $vnstat_nic_out) { $ifdescrs = array('wan' => 'WAN', 'lan' => 'LAN'); for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) { $ifdescrs['opt' . $j] = $config['interfaces']['opt' . $j]['descr']; } foreach ($ifdescrs as $ifdescr => $ifname): $real_nic_names3 = get_real_interface($ifdescr); If ($real_nic_names3 == $vnstat_nic_out) { $ifname_out = $ifdescr; $iface_title_array_items = "\$iface_title['$vnstat_nic_out'] = '$ifname_out';\n"; array_push($iface_title_array_items2, $iface_title_array_items); } endforeach; } $iface_title_array = implode($iface_title_array_items2); // php in php static items $vnstat_bin2 = "\$vnstat_bin = '/usr/local/bin/vnstat';"; $data_dir2 = "\$data_dir = './dumps';"; $graph_format2 ="\$graph_format='svg';"; $colorscheme2 = "\$colorscheme['light'] = array("; $colorscheme3 = "\$colorscheme['red'] = array("; $colorscheme4 = "\$colorscheme['pfSense'] = array("; // ************ Write new config.php ****************** $config_file = << /path/to/data_dir/vnstat_dump_ // $vnstat_bin2 $data_dir2 // graphics format to use: svg or png $graph_format2 // Font to use for PNG graphs define('GRAPH_FONT',dirname(__FILE__).'/VeraBd.ttf'); // Font to use for SVG graphs define('SVG_FONT', 'Verdana'); // color schemes // colors are defined as R,G,B,ALPHA quads where R, G and B range from 0-255 // and ALPHA from 0-127 where 0 is opaque and 127 completely transparent. // define('DEFAULT_COLORSCHEME', 'pfSense'); $colorscheme2 'stylesheet' => 'vnstat.css', 'image_background' => array( 255, 255, 255, 0 ), 'graph_background' => array( 220, 220, 230, 0 ), 'graph_background_2' => array( 205, 205, 220, 0 ), 'grid_stipple_1' => array( 140, 140, 140, 0 ), 'grid_stipple_2' => array( 200, 200, 200, 0 ), 'border' => array( 0, 0, 0, 0 ), 'text' => array( 0, 0, 0, 0 ), 'rx' => array( 190, 190, 20, 50 ), 'rx_border' => array( 40, 80, 40, 90 ), 'tx' => array( 130, 160, 100, 50 ), 'tx_border' => array( 80, 40, 40, 90 ) ); // A red colorscheme based on a contribution by Enrico Tröger $colorscheme3 'stylesheet' => 'vnstat_red.css', 'image_background' => array( 225, 225, 225, 0 ), 'graph_background' => array( 220, 220, 230, 0 ), 'graph_background_2' => array( 205, 205, 220, 0 ), 'grid_stipple_1' => array( 140, 140, 140, 0 ), 'grid_stipple_2' => array( 200, 200, 200, 0 ), 'border' => array( 0, 0, 0, 0 ), 'text' => array( 0, 0, 0, 0 ), 'rx' => array( 190, 20, 20, 50 ), 'rx_border' => array( 80, 40, 40, 90 ), 'tx' => array( 130, 130, 130, 50 ), 'tx_border' => array( 60, 60, 60, 90 ) ); // A red colorscheme based on a contribution by Perry Mason $colorscheme4 'stylesheet' => 'vnstat_pfSense.css', 'image_background' => array( 240, 240, 240, 0 ), 'graph_background' => array( 255, 255, 255, 0 ), 'graph_background_2' => array( 255, 255, 255, 0 ), 'grid_stipple_1' => array( 144, 0, 0, 0 ), 'grid_stipple_2' => array( 144, 0, 0, 0 ), 'border' => array( 0, 0, 0, 0 ), 'text' => array( 0, 0, 0, 0 ), 'rx' => array( 190, 20, 20, 50 ), 'rx_border' => array( 80, 40, 40, 90 ), 'tx' => array( 130, 130, 130, 50 ), 'tx_border' => array( 60, 60, 60, 90 ) ); ?> EOF; $hf = fopen("/usr/local/www/vnstat2/config.php","w"); if(!$hf) { log_error("could not open /usr/local/www/vnstat2/config.php for writing"); exit; } fwrite($hf, $config_file); fclose($hf); write_config(); configure_cron(); conf_mount_ro(); } ?>