diff options
| -rwxr-xr-x | include/nms/web.pm | 3 | ||||
| -rwxr-xr-x | web/api/public/switch-state | 18 | ||||
| -rwxr-xr-x | web/api/read/switches-management | 8 | ||||
| -rw-r--r-- | web/js/nms-map-handlers.js | 40 | 
4 files changed, 51 insertions, 18 deletions
diff --git a/include/nms/web.pm b/include/nms/web.pm index 6592bfb..588498f 100755 --- a/include/nms/web.pm +++ b/include/nms/web.pm @@ -85,7 +85,8 @@ sub finalize_output {  	$json{'time'} = int($query->fetchrow_hashref()->{'time'});  	$json{'hash'} = $hash;  	if (defined($get_params{'now'})) { -		$cc{'max-age'} = "3600"; +		$cc{'max-age'} = "60"; +		$cc{'stale-while-revalidate'} = "3600";  	}  	printcc; diff --git a/web/api/public/switch-state b/web/api/public/switch-state index 919924e..528bf7d 100755 --- a/web/api/public/switch-state +++ b/web/api/public/switch-state @@ -7,17 +7,19 @@ use strict;  use warnings;  use Data::Dumper; -my $target = $ENV{REQUEST_URI}; -$target =~ s/$ENV{SCRIPT_NAME}//; -$target =~ s/^\///; -my ($switch, $port) = split(/\//,$target,2); +#my $target = $ENV{REQUEST_URI}; +#$target =~ s/$ENV{SCRIPT_NAME}//; +#$target =~ s/^\///; +#my ($switch, $port) = split(/\//,$target,2); +my $port; +my  $switch;  my $q; -if (!defined($switch)) { +#if (!defined($switch)) {  	$q = $nms::web::dbh->prepare('select sysname,extract(epoch from date_trunc(\'second\',time)) as time,data from snmp natural join switches where id in (select max(id) from snmp where ' . $nms::web::when . '  group by switch) and  switches.deleted = \'f\' and not switches.tags \?& array[\'ignoreswitchstate\'];'); -} else { -	$q = $nms::web::dbh->prepare('select sysname,extract(epoch from date_trunc(\'second\',time)) as time,data from snmp natural join switches where id in (select max(id) from snmp where ' . $nms::web::when . 'group by switch) and sysname = ' . $nms::web::dbh->quote($switch) . ';'); -} +#} else { +#	$q = $nms::web::dbh->prepare('select sysname,extract(epoch from date_trunc(\'second\',time)) as time,data from snmp natural join switches where id in (select max(id) from snmp where ' . $nms::web::when . 'group by switch) and sysname = ' . $nms::web::dbh->quote($switch) . ';'); +#}  $q->execute();  while ( my $ref = $q->fetchrow_hashref() ) { diff --git a/web/api/read/switches-management b/web/api/read/switches-management index c734eef..b42c84b 100755 --- a/web/api/read/switches-management +++ b/web/api/read/switches-management @@ -13,7 +13,13 @@ use Data::Dumper;  my $target = $ENV{REQUEST_URI};  $target =~ s/$ENV{SCRIPT_NAME}//;  $target =~ s/^\///; -my ($switch, $port) = split(/\//,$target,2); +my $switch; +my $port; + +if ($target !~ m/now=/) { +	($switch, $port) = split(/\//,$target,2); +} +	  my $q2;  $nms::web::cc{'max-age'} = "5"; diff --git a/web/js/nms-map-handlers.js b/web/js/nms-map-handlers.js index 5b39fa3..ba20e03 100644 --- a/web/js/nms-map-handlers.js +++ b/web/js/nms-map-handlers.js @@ -146,7 +146,7 @@ var handlers = [  function uplinkInfo(sw)  { -	var ret = new handlerInfo("uplink","Uplinks"); +	var ret = new handlerInfo("snmpup","Uplinks");  	ret.why = "Uplinks";  	ret.score = 0;  	var u = 0; @@ -188,7 +188,7 @@ function uplinkInfo(sw)  		    }  		}  	} -	if (testTree(nmsData,['switchstate','switches',sw,'clients','live'])) { +	if (testTree(nmsData,['switchstate','switches',sw,'clients','total'])) {  		var tu = parseInt(nmsData.switchstate.switches[sw].clients.live);  		var tt = parseInt(nmsData.switchstate.switches[sw].clients.total);  		ret.data[1] = {}; @@ -547,11 +547,21 @@ function dhcpInfo(sw) {          if (!testTree(nmsData,['dhcp','dhcp']) || !testTree(nmsData,['switches','switches']) || !testTree(nmsData,['smanagement','switches'])) {                  return ret.data[1] = {};          } +	var dhcpClients = 0; +	var clientPortsUp = 0; +	var clientPortsUp = setTree(nmsData,['switchstate','switches',sw,'clients','live'],0); +	var clientPortsTotal = setTree(nmsData,['switchstate','switches',sw,'clients','total'],0); +	if (testTree(nmsData,['dhcp','networks',nmsData.smanagement.switches[sw].traffic_vlan,'clients'])) { +		dhcpClients = nmsData.dhcp.networks[nmsData.smanagement.switches[sw].traffic_vlan].clients; +	}  	if (testTree(nmsData,['dhcp','dhcp',nmsData.smanagement.switches[sw].traffic_vlan])) {  		var now = nmsData.dhcp.time;  		var then = nmsData.dhcp.dhcp[nmsData.smanagement.switches[sw].traffic_vlan];  		var diff = now - then;  		var divider = 6; +		if (dhcpClients < 10) { +			divider = 12; +		}  		if(tagged(sw,'slowdhcp')) {  			divider = 12;  		} @@ -568,8 +578,12 @@ function dhcpInfo(sw) {  				ret.score = 0;  				ret.why = "No network associated";  			} else { -				ret.score = 350; -				ret.why = "No DHCP data"; +				if (!(clientPortsUp < 2 && clientPortsTotal > 20)) { +					ret.score = 350; +					ret.why = "No DHCP data"; +				} else { +					ret.data[0].value = "No DHCP data, but too few clients anyway"; +				}  			}  		} else {  			ret.score = 100; @@ -577,10 +591,20 @@ function dhcpInfo(sw) {  		}  	}  	if (testTree(nmsData,['dhcp','networks',nmsData.smanagement.switches[sw].traffic_vlan,'clients'])) { +		var dhcpClients = nmsData.dhcp.networks[nmsData.smanagement.switches[sw].traffic_vlan].clients;  		ret.data[1] = {};  		ret.data[1].value = nmsData.dhcp.networks[nmsData.smanagement.switches[sw].traffic_vlan].clients; -		console.log()  		ret.data[1].description = "DHCP clients"; +		if (testTree(nmsData,['switchstate','switches',sw,'clients','live'])) { +			var tu = parseInt(nmsData.switchstate.switches[sw].clients.live); +			var tt = parseInt(nmsData.switchstate.switches[sw].clients.total); +			if (tu - dhcpClients > 5) { +				if (ret.score < 450) { +					ret.score = 450; +					ret.why = "Far more client ports than dhcp clients"; +				} +			} +		}  	}  	if (testTree(nmsData,['switches','switches',sw, 'tags'])) {  		if (tagged(sw,'ignoredhcp')) { @@ -721,7 +745,7 @@ function snmpInit() {  }  function snmpUpInfo(sw) { -	var ret = new handlerInfo("snmpup","SNMP uplink data"); +	var ret = new handlerInfo("uplink","SNMP uplink data");  	ret.why = "No SNMP data";  	ret.score = 0; @@ -820,9 +844,9 @@ function memoryInfo(sw) {  			var local = nmsData.snmp.snmp[sw].misc['jnxOperatingBuffer'][u];  			memory = Math.max(nmsData.snmp.snmp[sw].misc.jnxOperatingBuffer[u],memory);  		} -		if (memory < 30) { +		if (memory < 70) {  			ret.score = 0; -		} else if (memory < 60) { +		} else if (memory < 80) {  			ret.score = 100;  		} else if (memory < 90) {  			ret.score = memory * 2;  | 
