aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rwxr-xr-xweb/api/public/dhcp10
-rwxr-xr-xweb/api/public/switch-state8
-rwxr-xr-xweb/api/write/network-update57
-rwxr-xr-xweb/api/write/switch-update2
-rw-r--r--web/index.html5
-rw-r--r--web/js/nms-info-box.js8
-rw-r--r--web/js/nms-map-handlers.js21
-rw-r--r--web/js/nms.js2
8 files changed, 36 insertions, 77 deletions
diff --git a/web/api/public/dhcp b/web/api/public/dhcp
index 0b0bb49..f153a49 100755
--- a/web/api/public/dhcp
+++ b/web/api/public/dhcp
@@ -8,16 +8,16 @@ use warnings;
use Data::Dumper;
nms::web::setwhen('60m');
-my $q = $nms::web::dbh->prepare('select distinct on (sysname) extract(epoch from date_trunc(\'second\',time)) as time,sysname from dhcp join switches on dhcp.switch = switches.switch where ' . $nms::web::when . ' and switches.deleted = false order by sysname,time desc;');
+my $q = $nms::web::dbh->prepare('select distinct on (name) extract(epoch from date_trunc(\'second\',time)) as time,name from dhcp join networks on dhcp.network = networks.network where ' . $nms::web::when . ' order by name,time desc;');
$q->execute();
while ( my $ref = $q->fetchrow_hashref() ) {
- my $sysname = $ref->{'sysname'};
- $json{'dhcp'}{$ref->{'sysname'}} = $ref->{'time'};
+ my $sysname = $ref->{'sname'};
+ $json{'dhcp'}{$ref->{'name'}} = $ref->{'time'};
}
-my $q2 = $nms::web::dbh->prepare("select sysname,count(distinct mac) as clients,count(distinct ip) as addresses,count(mac) as acks from dhcp natural join switches where $nms::web::when and switches.deleted = false group by switches.sysname;");
+my $q2 = $nms::web::dbh->prepare("select name,count(distinct mac) as clients,count(distinct ip) as addresses,count(mac) as acks from dhcp natural join networks where $nms::web::when group by networks.name;");
$q2->execute();
while (my $ref = $q2->fetchrow_hashref()) {
- $nms::web::json{'switches'}{$ref->{sysname}} = $ref;
+ $nms::web::json{'networks'}{$ref->{name}} = $ref;
}
$nms::web::cc{'max-age'} = "10";
diff --git a/web/api/public/switch-state b/web/api/public/switch-state
index 965e881..19bd771 100755
--- a/web/api/public/switch-state
+++ b/web/api/public/switch-state
@@ -14,9 +14,9 @@ my ($switch, $port) = split(/\//,$target,2);
my $q;
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 . ' and switches.deleted = false group by 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 . ' and switches.deleted = false group by switch) and switches.deleted = false and not switches.tags \?& array[\'switchstateignore\'];');
} 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) . ' and switches.deleted = false;');
+ $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) . ' and switches.deleted = false and not switches.tags \?& array[\'switchstateignore\'];');
}
$q->execute();
@@ -83,9 +83,9 @@ while ( my $ref = $q->fetchrow_hashref() ) {
nms::web::setwhen('15m','10m');
my $q2;
if (!defined($switch)) {
- $q2 = $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);');
+ $q2 = $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 . ' and switches.deleted = false group by switch) and switches.deleted = false and not switches.tags \?& array[\'switchstateignore\'];');
} else {
- $q2 = $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) . ';');
+ $q2 = $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) . ' and switches.deleted = false and not switches.tags \?& array[\'switchstateignore\'];');
}
$q2->execute();
diff --git a/web/api/write/network-update b/web/api/write/network-update
index f6684c5..6344c37 100755
--- a/web/api/write/network-update
+++ b/web/api/write/network-update
@@ -23,51 +23,23 @@ my @dups;
my $sth = $nms::web::dbh->prepare("SELECT name FROM networks WHERE name=?");
-my @fields = ('name','last_updated','placement','subnet4','subnet6','gw4','gw6','routing_point','vlan','tags');
-
-sub convertplace
-{
- my %in = %{$_[0]};
- my %out = ();
-
- if (not defined $in{'x1'} and defined($in{'x'})) {
- $out{'x1'} = int($in{'x'});
- $out{'y1'} = int($in{'y'});
- $out{'xx'} = int($in{'x'} + $in{'width'});
- $out{'yy'} = int($in{'y'} + $in{'height'});
- } else {
- return \%in;
- }
- return \%out;
-}
+my @fields = ('name','last_updated','subnet4','subnet6','gw4','gw6','routing_point','vlan','tags');
foreach my $tmp2 (@tmp) {
my %network = %{$tmp2};
my $affected = 0;
my %template = ();
map { $template{$_} = 'DEFAULT' } @fields;
- if (not defined($network{'sysname'})) {
+ if (not defined($network{'name'})) {
next;
}
- $sth->execute( $network{'sysname'});
+ $sth->execute( $network{'name'});
while ( my @row = $sth->fetchrow_array ) {
$affected += 1;
}
if ($affected == 0) {
- my %placement;
- if (not defined ($network{'placement'})) {
- %placement = guess_placement($network{'sysname'});
- } else {
- %placement = %{convertplace($network{'sysname'})};
- }
- my ($x1,$x2,$y1,$y2);
- $x1 = $placement{'x1'};
- $y1 = $placement{'y1'};
- $x2 = $placement{'xx'};
- $y2 = $placement{'yy'};
- $network{'placement'} = "(($x1,$y1),($x2,$y2))";
map {
if (defined ($template{$_})) {
@@ -76,24 +48,9 @@ foreach my $tmp2 (@tmp) {
} keys %network;
- $nms::web::dbh->do("INSERT INTO NETWORKS (name, last_updated, placement, subnet4, subnet6, routing_point, gw4, gw6, vlan, tags) VALUES ($template{'sysname'}, $template{'last_updated'}, $template{'placement'}, $template{'subnet4'}, $template{'subnet6'}, $template{'routing_point'}, $template{'gw4'}, $template{'gw6'}, $template{'vlan'}, $template{'tags'});");
- push @added, $network{'sysname'};
+ $nms::web::dbh->do("INSERT INTO NETWORKS (name, last_updated, subnet4, subnet6, routing_point, gw4, gw6, vlan, tags) VALUES ($template{'name'}, $template{'last_updated'}, $template{'subnet4'}, $template{'subnet6'}, $template{'routing_point'}, $template{'gw4'}, $template{'gw6'}, $template{'vlan'}, $template{'tags'});");
+ push @added, $network{'name'};
} else {
- if (defined($network{'placement'})) {
- my %placement;
- if ($network{'placement'} eq "reset") {
- %placement = guess_placement($network{'sysname'});
- } else {
- %placement = %{convertplace($network{'placement'})};
- }
- my ($x1,$x2,$y1,$y2);
- $x1 = $placement{'x1'};
- $y1 = $placement{'y1'};
- $x2 = $placement{'xx'};
- $y2 = $placement{'yy'};
- $network{'placement'} = "(($x1,$y1),($x2,$y2))";
- push @dups, "not really, but: " . $network{'placement'};
- }
if (defined($network{'tags'})) {
$network{'tags'} =~ s/'/"/g;
}
@@ -103,8 +60,8 @@ foreach my $tmp2 (@tmp) {
push @set, "$_=" . $dbh->quote($network{$_});
}
} keys %network;
- $nms::web::dbh->do("UPDATE NETWORKS SET " . join(", ", @set) . "WHERE name=" . $dbh->quote($network{'sysname'}) . ";");
- push @dups, $network{'sysname'};
+ $nms::web::dbh->do("UPDATE networks SET " . join(", ", @set) . "WHERE name=" . $dbh->quote($network{'name'}) . ";");
+ push @dups, $network{'name'};
}
}
$json{'networks_addded'} = \@added;
diff --git a/web/api/write/switch-update b/web/api/write/switch-update
index b71548b..bcf69e1 100755
--- a/web/api/write/switch-update
+++ b/web/api/write/switch-update
@@ -23,7 +23,7 @@ my @dups;
my $sth = $nms::web::dbh->prepare("SELECT sysname FROM switches WHERE sysname=?");
-my @fields = ( 'community', 'tags', 'distro_name', 'distro_phy_port', 'mgmt_v4_addr', 'mgmt_v4_gw', 'mgmt_v4_netsize', 'mgmt_v6_addr', 'mgmt_v6_gw', 'mgmt_v6_netsize', 'mgmt_vlan', 'placement', 'poll_frequency', 'subnet4', 'subnet6', 'sysname', 'traffic_vlan', 'deleted');
+my @fields = ( 'community', 'tags', 'distro_name', 'distro_phy_port', 'mgmt_v4_addr', 'mgmt_v6_addr', 'mgmt_vlan', 'placement', 'poll_frequency', 'sysname', 'traffic_vlan', 'deleted');
sub convertplace
{
diff --git a/web/index.html b/web/index.html
index 2fee54f..7b07f09 100644
--- a/web/index.html
+++ b/web/index.html
@@ -143,6 +143,7 @@
<div class="span3 col-lg-6">
<textarea id="template-input" class="form-control" cols="80" rows="25"></textarea>
<div class="form-inline">
+ https://gondul.tg.lol/api/templates/
<div class="form-group">
<select onchange="nmsTemplate.fromFile(this.value)" class="form-control" id="nmsTemplate-select">
<option value="">Select template</option>
@@ -150,7 +151,7 @@
</div>
<div class="form-group">
<label for="template-query-params">Query parameters</label>
- <input type="text" class="form-control" id="template-query-params" value="?switch=e13-1&foo=bar" />
+ <input type="text" class="form-control" id="template-query-params" value="?a=r1.ring:ge-1/0/2.0:mgmt+irb.666" />
</div>
<div class="form-group">
<button onclick="nmsTemplate.test()" class="btn btn-primary">Test</button>
@@ -158,7 +159,7 @@
</div>
</div>
<div class="span3 col-lg-6">
- <textarea id="template-output" class="form-control" disabled cols="80" rows="25"></textarea>
+ <textarea id="template-output" class="form-control" readonly cols="80" rows="25"></textarea>
</div>
</div>
</div>
diff --git a/web/js/nms-info-box.js b/web/js/nms-info-box.js
index 8f34031..4e8b18d 100644
--- a/web/js/nms-info-box.js
+++ b/web/js/nms-info-box.js
@@ -686,7 +686,7 @@ var switchPortsPanel = function () {
}
} catch(e) {};
- groupObj.innerHTML = '<span class="panel-heading" style="display:block;"><a class="collapse-controller" role="button" data-toggle="collapse" href="#'+cleanObj+'-group">' + snmpJson[obj].ifDescr + ' </a><small>' + snmpJson[obj].ifAlias + '</small><span class="pull-right">' + traffic + '<i class="btn-xs ' + button + '"><span class="glyphicon ' + glyphicon + '" title="' + title + '" aria-hidden="true"></span></i></span></span>';
+ groupObj.innerHTML = '<span class="panel-heading" style="display:block;"><a class="collapse-controller" role="button" data-toggle="collapse" href="#'+cleanObj+'-group">' + snmpJson[obj].ifDescr + ' </a><small>' + snmpJson[obj].ifName + '</small><span class="pull-right">' + traffic + '<i class="btn-xs ' + button + '"><span class="glyphicon ' + glyphicon + '" title="' + title + '" aria-hidden="true"></span></i></span></span>';
var groupObjCollapse = document.createElement("div");
groupObjCollapse.id = cleanObj + "-group";
@@ -1389,7 +1389,7 @@ var networkEditPanel = function() {
};
this.save = function () {
- var myData = nmsInfoBox._editStringify(this.sw);
+ var myData = nmsInfoBox._editStringify(this.sw,"name");
$.ajax({
type: "POST",
url: "/api/write/network-update",
@@ -1505,7 +1505,7 @@ nmsInfoBox._editChange = function(sw, v) {
out.value = myData;
};
-nmsInfoBox._editStringify = function(sw) {
- nmsInfoBox._editValues['sysname'] = sw;
+nmsInfoBox._editStringify = function(sw, sysname='sysname') {
+ nmsInfoBox._editValues[sysname] = sw;
return JSON.stringify([nmsInfoBox._editValues]);
};
diff --git a/web/js/nms-map-handlers.js b/web/js/nms-map-handlers.js
index f9fe52b..7200c60 100644
--- a/web/js/nms-map-handlers.js
+++ b/web/js/nms-map-handlers.js
@@ -516,13 +516,13 @@ function getDhcpColor(stop)
function dhcpUpdater()
{
- if (!testTree(nmsData,['dhcp','dhcp']) || !testTree(nmsData,['switches','switches'])) {
+ if (!testTree(nmsData,['dhcp','dhcp']) || !testTree(nmsData,['switches','switches']) || !testTree(nmsData,['smanagement','switches'])) {
return
}
var now = nmsData.dhcp.time;
for (var sw in nmsData.switches.switches) {
var c = nmsColor.blue;
- var s = nmsData.dhcp.dhcp[sw];
+ var s = nmsData.dhcp.dhcp[nmsData.smanagement.switches[sw].traffic_vlan];
if (s == undefined) {
nmsMap.setSwitchColor(sw,c);
continue;
@@ -536,9 +536,9 @@ function dhcpInfo(sw) {
var ret = new handlerInfo("dhcp","DHCP state");
ret.why = "No DHCP data";
ret.data[0].description = "DHCP age";
- if (testTree(nmsData,['dhcp','dhcp',sw])) {
+ if (testTree(nmsData,['dhcp','dhcp',nmsData.smanagement.switches[sw].traffic_vlan])) {
var now = nmsData.dhcp.time;
- var then = nmsData.dhcp.dhcp[sw];
+ var then = nmsData.dhcp.dhcp[nmsData.smanagement.switches[sw].traffic_vlan];
var diff = now - then;
var divider = 6;
if(tagged(sw,'slowdhcp')) {
@@ -551,11 +551,11 @@ function dhcpInfo(sw) {
} else {
ret.data[0].value = "No DHCP data";
if (testTree(nmsData,['smanagement','switches',sw])) {
- if (nmsData.smanagement.switches[sw].subnet4 == undefined ||
- nmsData.smanagement.switches[sw].subnet4 == "") {
- ret.data[0].value = "No associated subnets";
+ if (nmsData.smanagement.switches[sw].traffic_vlan == undefined ||
+ nmsData.smanagement.switches[sw].traffic_vlan == "") {
+ ret.data[0].value = "No associated networks";
ret.score = 0;
- ret.why = "No subnet registered";
+ ret.why = "No network associated";
} else {
ret.score = 350;
ret.why = "No DHCP data";
@@ -565,9 +565,10 @@ function dhcpInfo(sw) {
ret.why = "No management data for DHCP";
}
}
- if (testTree(nmsData,['dhcp','switches',sw,'clients'])) {
+ if (testTree(nmsData,['dhcp','networks',nmsData.smanagement.switches[sw].traffic_vlan,'clients'])) {
ret.data[1] = {};
- ret.data[1].value = nmsData.dhcp.switches[sw].clients;
+ 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,['switches','switches',sw, 'tags'])) {
diff --git a/web/js/nms.js b/web/js/nms.js
index 0caac24..5e2dc22 100644
--- a/web/js/nms.js
+++ b/web/js/nms.js
@@ -134,7 +134,7 @@ function nmsTimer(handler, interval, name, description) {
function byteCount(bytes,precision) {
if (precision ==undefined)
precision = 1;
- var units = ['', 'K', 'M', 'G', 'T', 'P'];
+ var units = ['', 'K', 'M', 'G', 'T', 'P', 'E','Z'];
var i = 0;
while (bytes > 1024) {
bytes = bytes / 1024;