Przeglądaj źródła

web: added WAN statistics page

root 1 rok temu
rodzic
commit
e762590

+ 3 - 3
html/admin/reports/authday.php

@@ -42,7 +42,7 @@ $gateway_list = get_gateways($db_link);
 $gateway_filter='';
 if (!empty($rgateway) and $rgateway>0) { $gateway_filter="(router_id=$rgateway) AND"; }
 
-print "<tr align=center align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
 print "<td class=\"data\" colspan=2>".$auth['comments']."</td>\n";
 print "<td class=\"data\" colspan=2><a href=/admin/reports/userdaydetail.php?id=$id&date_start=$date1&date_stop=$date2>TOP 10</a></td>\n";
 print "<td class=\"data\" colspan=2><a href=/admin/reports/userdaydetaillog.php?id=$id&date_start=$date1&date_stop=$date2>".WEB_report_detail."</a></td>\n";
@@ -67,7 +67,7 @@ $userdata = mysqli_query($db_link, $sSQL);
 $sum_in = 0;
 $sum_out = 0;
 while (list ($u_router_id, $udata, $uin, $uout, $pin, $pout) = mysqli_fetch_array($userdata)) {
-    print "<tr align=center align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+    print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
     print "<td class=\"data\">$gateway_list[$u_router_id]</td>\n";
     print "<td class=\"data\">" . $udata . "</td>\n";
     print "<td class=\"data\">" . fbytes($uin) . "</td>\n";
@@ -78,7 +78,7 @@ while (list ($u_router_id, $udata, $uin, $uout, $pin, $pout) = mysqli_fetch_arra
     $sum_in += $uin;
     $sum_out += $uout;
 }
-print "<tr align=center align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
 print "<td class=\"data\"><b>" . WEB_title_itog . "</b></td>\n";
 print "<td class=\"data\"><b> </b></td>\n";
 print "<td class=\"data\"><b>" . fbytes($sum_in) . "</b></td>\n";

+ 1 - 1
html/admin/reports/index-full.php

@@ -99,7 +99,7 @@ while (list ($s_login,$s_ou_id,$u_id,$s_ip,$s_auth_id, $s_router_id, $traf_day_i
     print "<td class=\"$cl\">" . fpkts($p_out) . "</td>\n";
     print "</tr>\n";
 }
-print "<tr align=center align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
 print "<td class=\"data\" colspan=2><b>".WEB_title_itog."</b></td>\n";
 print "<td class=\"data\"><b></b></td>\n";
 print "<td class=\"data\"><b>" . fbytes($total_in) . "</b></td>\n";

+ 1 - 1
html/admin/reports/index.php

@@ -79,7 +79,7 @@ while (list ($s_login,$s_ou_id,$u_id,$s_auth_id, $s_router_id, $traf_day_in, $tr
     print "<td class=\"$cl\">" . fbytes($traf_day_out) . "</td>\n";
     print "</tr>\n";
 }
-print "<tr align=center align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
 print "<td class=\"data\" colspan=2><b>".WEB_title_itog."</b></td>\n";
 print "<td class=\"data\"><b>" . fbytes($total_in) . "</b></td>\n";
 print "<td class=\"data\"><b>" . fbytes($total_out) . "</b></td>\n";

+ 2 - 2
html/admin/reports/userdaydetail.php

@@ -51,7 +51,7 @@ $fsql = "SELECT A.proto, A.src_ip, A.src_port, SUM(A.bytes) as tin FROM Traffic_
             GROUP BY A.src_ip, A.src_port, A.proto ORDER BY tin DESC LIMIT 0,10";
 $userdata = mysqli_query($db_link, $fsql);
 while (list ($uproto, $uip, $uport, $ubytes) = mysqli_fetch_array($userdata)) {
-    print "<tr align=center align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+    print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
     $proto_name = getprotobynumber($uproto);
     if (!$proto_name) { $proto_name=$uproto; }
     print "<td class=\"data\">" . $proto_name . "</td>\n";
@@ -80,7 +80,7 @@ $fsql = "SELECT A.proto, A.dst_ip, A.dst_port, SUM(A.bytes) as tout FROM Traffic
         GROUP BY A.dst_ip, A.dst_port, A.proto ORDER BY tout DESC LIMIT 0,10";
 $userdata = mysqli_query($db_link, $fsql);
 while (list ($uproto, $uip, $uport, $ubytes) = mysqli_fetch_array($userdata)) {
-    print "<tr align=center align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+    print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
     $proto_name = getprotobynumber($uproto);
     if (!$proto_name) { $proto_name=$uproto; }
     print "<td class=\"data\">" . $proto_name . "</td>\n";

+ 1 - 1
html/admin/reports/userdaydetaillog.php

@@ -78,7 +78,7 @@ $fsql = "SELECT A.id, A.`timestamp`, A.router_id, A.proto, A.src_ip, A.src_port,
         ORDER BY `timestamp` ASC LIMIT $start,$displayed) as T ON A.id = T.id ORDER BY $sort_table.$sort_field $order";
 $userdata = mysqli_query($db_link, $fsql);
 while (list ($uid,$udata, $urouter, $uproto, $sip, $sport,$dip, $dport, $ubytes, $upkt) = mysqli_fetch_array($userdata)) {
-    print "<tr align=center align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+    print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
     print "<td class=\"data\">$udata</td>\n";
     print "<td class=\"data\">$gateway_list[$urouter]</td>\n";
     $proto_name = getprotobynumber($uproto);

+ 126 - 0
html/admin/reports/wan.php

@@ -0,0 +1,126 @@
+<?php
+require_once ($_SERVER['DOCUMENT_ROOT']."/inc/auth.php");
+require_once ($_SERVER['DOCUMENT_ROOT']."/inc/languages/" . HTML_LANG . ".php");
+require_once ($_SERVER['DOCUMENT_ROOT']."/inc/header.php");
+$default_date_shift='d';
+require_once ($_SERVER['DOCUMENT_ROOT']."/inc/datefilter.php");
+require_once ($_SERVER['DOCUMENT_ROOT']."/inc/gatefilter.php");
+
+print_reports_submenu($page_url);
+
+function print_gateway_statistics($db,$device_id,$device_name,$date1,$date2) {
+
+$start_time = new DateTimeImmutable($date1);
+$stop_time = new DateTimeImmutable($date2);
+$interval = $stop_time->diff($start_time,true);
+
+$delta = $interval->format("%a");
+
+$l3_interfaces = get_wan_interfaces($db,$device_id);
+
+#for day - show hour statistics
+$dt_template = '%Y-%m-%d %H:00:00';
+if ($delta == 1) { $dt_template = '%Y-%m-%d %H:00:00'; } 
+    elseif ($delta >1 and $delta<=31) { $dt_template = '%Y-%m-%d'; }
+        elseif ($delta >31) { $dt_template = '%Y-%m'; }
+
+
+$global_int_in = 0;
+$global_int_out = 0;
+$global_int_f_in = 0;
+$global_int_f_out = 0;
+
+print "<tr ><td class=\"info\" colspan=5><b>".$device_name."</b></td></tr>\n";
+
+foreach ($l3_interfaces as $row) {
+    print "<tr ><td class=\"data\" colspan=5><b>".$row['name']."</b></td></tr>\n";
+    print "<tr class=\"info\">\n";
+    print "<td >".WEB_date."</td>\n";
+    print "<td >".WEB_title_input."</td>\n";
+    print "<td >".WEB_title_output."</td>\n";
+    print "<td >".WEB_title_forward_input."</td>\n";
+    print "<td >".WEB_title_forward_output."</td>\n";
+    print "</tr>\n";
+
+    $trafSQL="SELECT DATE_FORMAT(`time`, '".$dt_template."'  ) AS dt,SUM(`in`) as byte_in,SUM(`out`) as byte_out, SUM(`forward_in`) as byte_f_in,SUM(`forward_out`) as byte_f_out FROM Wan_stats ";
+    $trafSQL .=" WHERE router_id='".$device_id."' AND interface_id='".$row['snmpin']."' AND time>='$date1' AND time<'$date2'";
+    $trafSQL .=" GROUP BY DATE_FORMAT(`time`, '".$dt_template."' ) ORDER BY dt;";
+
+    $int_statistics = get_records_sql($db,$trafSQL);
+
+    $int_in = 0;
+    $int_out = 0;
+    $int_f_in = 0;
+    $int_f_out = 0;
+    foreach ($int_statistics as $stat) {
+        print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+        print "<td class=\"data\">".$stat['dt']."</td>\n";
+        print "<td class=\"data\">".fbytes($stat['byte_in'])."</td>\n";
+        print "<td class=\"data\">".fbytes($stat['byte_out'])."</td>\n";
+        print "<td class=\"data\">".fbytes($stat['byte_f_in'])."</td>\n";
+        print "<td class=\"data\">".fbytes($stat['byte_f_out'])."</td>\n";
+        print "</tr>\n";
+        $int_in +=$stat['byte_in'];
+        $int_out +=$stat['byte_out'];
+        $int_f_in +=$stat['byte_f_in'];
+        $int_f_out +=$stat['byte_f_out'];
+        }
+    print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+    print "<td class=\"data\"><b>".WEB_title_itog."</b></td>\n";
+    print "<td class=\"data\">".fbytes($int_in)."</td>\n";
+    print "<td class=\"data\">".fbytes($int_out)."</td>\n";
+    print "<td class=\"data\">".fbytes($int_f_in)."</td>\n";
+    print "<td class=\"data\">".fbytes($int_f_out)."</td>\n";
+    print "</tr>\n";
+
+    $global_int_in += $int_in;
+    $global_int_out += $int_out;
+    $global_int_f_in += $int_f_in;
+    $global_int_f_out += $int_f_out;
+    }
+
+print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+print "<td class=\"data\" colspan=5><b>".WEB_title_itog."</b></td></tr>\n";
+print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
+print "<td class=\"data\"></td>\n";
+print "<td class=\"data\">".fbytes($global_int_in)."</td>\n";
+print "<td class=\"data\">".fbytes($global_int_out)."</td>\n";
+print "<td class=\"data\">".fbytes($global_int_f_in)."</td>\n";
+print "<td class=\"data\">".fbytes($global_int_f_out)."</td>\n";
+print "</tr>\n";
+
+}
+
+?>
+<div id="cont">
+
+<form action="wan.php" method="post">
+<?php echo WEB_log_start_date; ?>:&nbsp<input type="date" name="date_start" value="<?php echo $date1; ?>" />
+<?php echo WEB_log_stop_date; ?>:&nbsp<input type="date" name="date_stop" value="<?php echo $date2; ?>" />
+<?php echo WEB_cell_gateway; ?>:&nbsp<?php print_gateway_select($db_link, 'gateway', $rgateway); ?>
+<input type="submit" value="<?php echo WEB_btn_show; ?>">
+</form>
+
+<br>
+<br>
+<table class="data">
+
+<?php
+
+if ($rgateway==0) {
+    $gateways = get_gateways($db_link);
+    foreach ($gateways as $key => $val) {
+        print_gateway_statistics($db_link,$key,$val,$date1,$date2);
+        }
+    } else {
+        $router = get_record_sql($db_link,"SELECT device_name FROM devices WHERE id='".$rgateway."'");
+        print_gateway_statistics($db_link,$rgateway,$router['device_name'],$date1,$date2);
+    }
+
+?>
+
+</table>
+
+<?php
+require_once ($_SERVER['DOCUMENT_ROOT']."/inc/footer.php");
+?>

+ 9 - 1
html/inc/common.php

@@ -696,7 +696,8 @@ function print_reports_submenu($current_page)
 {
     print "<div id='submenu'>\n";
     print_submenu_url(WEB_submenu_traffic_ip_report, '/admin/reports/index-full.php', $current_page, 0);
-    print_submenu_url(WEB_submenu_traffic_login_report, '/admin/reports/index.php', $current_page, 1);
+    print_submenu_url(WEB_submenu_traffic_login_report, '/admin/reports/index.php', $current_page, 0);
+    print_submenu_url(WEB_submenu_traffic_wan_report, '/admin/reports/wan.php', $current_page, 1);
     print "</div>\n";
 }
 
@@ -939,6 +940,13 @@ function get_l3_interfaces($db, $device_id)
     return trim($result);
 }
 
+function get_wan_interfaces($db, $device_id)
+{
+    $l3_wan_sql = "SELECT id,name,snmpin FROM device_l3_interfaces WHERE device_id='".$device_id."' and interface_type=1 ORDER BY name";
+    $t_l3int = get_records_sql($db, $l3_wan_sql);
+    return $t_l3int;
+}
+
 function get_gw_subnets($db, $device_id)
 {
 $gw_subnets_sql='SELECT gateway_subnets.*,subnets.subnet,subnets.comment FROM gateway_subnets LEFT JOIN subnets ON gateway_subnets.subnet_id = subnets.id WHERE gateway_subnets.device_id='.$device_id.' ORDER BY subnets.subnet ASC';

+ 3 - 0
html/inc/languages/english.php

@@ -122,6 +122,7 @@ define("WEB_submenu_filter_list","Filter List");
 define("WEB_submenu_filter_group","Filter Groups");
 define("WEB_submenu_traffic_ip_report","Traffic report for ip");
 define("WEB_submenu_traffic_login_report","Traffic report for login");
+define("WEB_submenu_traffic_wan_report","WAN statistics");
 define("WEB_submenu_traffic_top10","TOP 10 in traffic");
 define("WEB_submenu_detail_log","Detailed log");
 define("WEB_submenu_net_devices","Network devices");
@@ -158,6 +159,8 @@ define("WEB_title_ip","Address");
 define("WEB_title_date","Date");
 define("WEB_title_input","Incoming");
 define("WEB_title_output","Outgoing");
+define("WEB_title_forward_input","Forward, in");
+define("WEB_title_forward_output","Forward, out");
 define("WEB_title_pktin","IN, pkt/s");
 define("WEB_title_pktout","OUT, pkt/s");
 define("WEB_title_maxpktin","Max IN, pkt/s");

+ 3 - 0
html/inc/languages/russian.php

@@ -122,6 +122,7 @@ define("WEB_submenu_filter_list","Список фильтров");
 define("WEB_submenu_filter_group","Группы фильтров");
 define("WEB_submenu_traffic_ip_report","Отчёт по трафику (ip)");
 define("WEB_submenu_traffic_login_report","Отчёт по трафику (login)");
+define("WEB_submenu_traffic_wan_report","Статистика для роутера");
 define("WEB_submenu_traffic_top10","TOP 10 по трафику");
 define("WEB_submenu_detail_log","Подробный лог");
 define("WEB_submenu_net_devices","Сетевые устройства");
@@ -158,6 +159,8 @@ define("WEB_title_ip","Адрес");
 define("WEB_title_date","Дата");
 define("WEB_title_input","Входящий");
 define("WEB_title_output","Исходящий");
+define("WEB_title_forward_input","Транзит, входящий");
+define("WEB_title_forward_output","Транзит, исходящий");
 define("WEB_title_pktin","IN, pkt/s");
 define("WEB_title_pktout","OUT, pkt/s");
 define("WEB_title_maxpktin","Max IN, pkt/s");

+ 0 - 1
scripts/updates/2-7-0/device_l3_interfaces.sql

@@ -1,2 +1 @@
 ALTER TABLE `device_l3_interfaces` ADD `snmpin` INT NULL DEFAULT NULL AFTER `device_id`;
-ALTER TABLE `device_l3_interfaces` ADD `deleted` BOOLEAN NOT NULL DEFAULT FALSE AFTER `name`;