'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 = convert_friendly_interface_to_real_interface_name($ifdescr); array_push($array_of_real_nic_names, $real_nic_names); } $vnstat_nic = array_map('basename', glob($vnstat_db_prefix . '/*', GLOB_ONLYDIR)); // Compare real NICs with NICs assigned to vnstat $leftovers = array_diff($array_of_real_nic_names, $vnstat_nic); // Create database for each NIC foreach ($leftovers as $nic) { exec("/usr/local/bin/vnstat -u -i ". escapeshellarg($nic)); } conf_mount_ro(); } function vnstat_install_config() { $vnstat_db_prefix = "/conf/vnstat"; global $config; conf_mount_rw(); // Create vnstat database dir where it also will work for nanobsd if (is_dir("/usr/local/pkg/vnstat2/vnstat")) { @rename("/usr/local/pkg/vnstat2/vnstat", $vnstat_db_prefix); } safe_mkdir($vnstat_db_prefix); vnstat_link_config(); // Add MonthRotate value to config.xml and write /usr/local/etc/vnstat.conf if ($config['installedpackages']['vnstat2']['config'][0]['monthrotate'] == "") { $config['installedpackages']['vnstat2']['config'][0]['monthrotate'] = "1"; } if ($config['installedpackages']['vnstat2']['config'][0]['vnstat_phpfrontend'] == "on") { vnstat_php_frontend(); } write_conf_f(); // Add cron job to config.xml install_cron_job("/usr/local/pkg/vnstat2/vnstat2.sh", true, "*/1"); vnstat_create_nic_dbs(); write_config(); conf_mount_ro(); } function vnstat_php_frontend() { global $config; // Copy vnstat_php_frontend to www exec("/bin/cp -a /usr/local/pkg/vnstat2/vnstat_php_frontend/. /usr/local/www/vnstat2/"); // Find information to be written in config.php // $iface_list_array_items exec("/bin/ls /conf/vnstat/ | /usr/bin/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 = convert_friendly_interface_to_friendly_descr($ifdescr); $iface_title_array_items = "\$iface_title['$vnstat_nic_out'] = '$ifname_out';\n"; array_push($iface_title_array_items2, $iface_title_array_items); } } } $iface_title_array = implode($iface_title_array_items2); // PHP in static items // Added to new items for the front end version 1.5.1 $locale = "\$locale = 'en_US.UTF-8';"; $language = "\$language = 'en';"; $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'); ?> 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); } ?>