aboutsummaryrefslogtreecommitdiffstats
path: root/web/api/read
diff options
context:
space:
mode:
Diffstat (limited to 'web/api/read')
-rwxr-xr-xweb/api/read/distro-management31
-rwxr-xr-x[-rw-r--r--]web/api/read/networks15
-rwxr-xr-xweb/api/read/oplog9
-rwxr-xr-xweb/api/read/switches-management35
-rwxr-xr-xweb/api/read/template-list21
5 files changed, 54 insertions, 57 deletions
diff --git a/web/api/read/distro-management b/web/api/read/distro-management
deleted file mode 100755
index 7fbebef..0000000
--- a/web/api/read/distro-management
+++ /dev/null
@@ -1,31 +0,0 @@
-#! /usr/bin/perl
-# vim:ts=8:sw=8
-
-use CGI qw(fatalsToBrowser);
-use DBI;
-use lib '/opt/gondul/include';
-use nms;
-use nms::web;
-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 $q2;
-
-$nms::web::cc{'max-age'} = "5";
-$nms::web::cc{'stale-while-revalidate'} = "30";
-
-$q2 = $nms::web::dbh->prepare('SELECT distro_name,sysname,subnet4,subnet6,traffic_vlan,distro_phy_port FROM switches WHERE placement is not null AND distro_name is not null AND distro_phy_port is not null and deleted = false');
-
-$q2->execute();
-while (my $ref = $q2->fetchrow_hashref()) {
- my $sysname = $ref->{'sysname'};
- my $distro = $ref->{'distro_name'};
- $nms::web::json{'distros'}{$distro}{$sysname} = $ref;
-}
-
-finalize_output();
diff --git a/web/api/read/networks b/web/api/read/networks
index 870ae8c..0fbdb15 100644..100755
--- a/web/api/read/networks
+++ b/web/api/read/networks
@@ -13,23 +13,12 @@ use Data::Dumper;
$nms::web::cc{'max-age'} = "5";
$nms::web::cc{'stale-while-revalidate'} = "30";
-my $q2 = $nms::web::dbh->prepare('select network, name, vlan, tags, routing_point, placement, last_updated, subnet4, subnet6, gw4, gw6 from networks');
+my $q2 = $nms::web::dbh->prepare('select name, vlan, networks.tags, switches.sysname as router, subnet4, subnet6, gw4, gw6 from networks left join switches on switches.switch = networks.router');
$q2->execute();
while (my $ref = $q2->fetchrow_hashref()) {
- $ref->{'placement'} =~ /\((-?\d+),(-?\d+)\),\((-?\d+),(-?\d+)\)/;
- my ($x1, $y1, $x2, $y2) = ($1, $2, $3, $4);
my $name = $ref->{'name'};
- $nms::web::json{'networks'}{$ref->{'name'}}{'vlan'} = $ref->{'vlan'};
- $nms::web::json{'networks'}{$ref->{'name'}}{'subnet4'} = $ref->{'subnet4'};
- $nms::web::json{'networks'}{$ref->{'name'}}{'subnet6'} = $ref->{'subnet6'};
- $nms::web::json{'networks'}{$ref->{'name'}}{'gw4'} = $ref->{'gw4'};
- $nms::web::json{'networks'}{$ref->{'name'}}{'gw6'} = $ref->{'gw6'};
- $nms::web::json{'networks'}{$ref->{'name'}}{'placement'}{'x'} = $x2;
- $nms::web::json{'networks'}{$ref->{'name'}}{'placement'}{'y'} = $y2;
- $nms::web::json{'networks'}{$ref->{'name'}}{'placement'}{'width'} = $x1 - $x2;
- $nms::web::json{'networks'}{$ref->{'name'}}{'placement'}{'height'} = $y1 - $y2;
- $nms::web::json{'networks'}{$ref->{'name'}}{'routing_point'} = $ref->{'routing_point'};
+ $nms::web::json{'networks'}{$ref->{'name'}} = $ref;
my $data = JSON::XS::decode_json($ref->{'tags'});
$nms::web::json{'networks'}{$ref->{'name'}}{'tags'} = $data;
}
diff --git a/web/api/read/oplog b/web/api/read/oplog
index fb187ea..f2ed3a7 100755
--- a/web/api/read/oplog
+++ b/web/api/read/oplog
@@ -6,7 +6,14 @@ use nms::web;
use strict;
use warnings;
-my $query = $nms::web::dbh->prepare('select id,date_trunc(\'second\',time) as timestamp,extract(hour from time) as h, extract(minute from time) as m,systems,username,log from oplog order by id desc;');
+my $filter = '';
+
+if (defined($get_params{'now'})) {
+ $filter = "where time < timestamp with time zone 'epoch' + " . db_safe_quote('now') . " * INTERVAL '1 second' ";
+}
+my $query = $nms::web::dbh->prepare('select id,date_trunc(\'second\',time) as timestamp,extract(hour from time) as h, extract(minute from time) as m,systems,username,log from oplog '
+ . $filter .
+'order by id desc;');
$query->execute();
while (my $ref = $query->fetchrow_hashref()) {
my %meh;
diff --git a/web/api/read/switches-management b/web/api/read/switches-management
index 77badf4..118ea4d 100755
--- a/web/api/read/switches-management
+++ b/web/api/read/switches-management
@@ -13,29 +13,40 @@ 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";
$nms::web::cc{'stale-while-revalidate'} = "30";
-if (!defined($switch)) {
- $q2 = $nms::web::dbh->prepare('select switches.sysname, host(switches.mgmt_v4_addr) as mgmt_v4_addr, host(switches.mgmt_v6_addr) as mgmt_v6_addr, switches.mgmt_vlan, switches.traffic_vlan, switches.poll_frequency, switches.last_updated, switches.distro_name, switches.distro_phy_port, switches.community, traffic_net.subnet4, traffic_net.subnet6, mgmt_net.gw4 as mgmt_v4_gw, mgmt_net.gw6 as mgmt_v6_gw from switches left join networks as traffic_net on (switches.traffic_vlan = traffic_net.name) left join networks as mgmt_net on (switches.mgmt_vlan = mgmt_net.name) where switches.placement is not null and switches.deleted = false;');
-} else {
- $q2 = $nms::web::dbh->prepare('select sysname,host(mgmt_v4_addr) as mgmt_v4_addr,host(mgmt_v6_addr) as mgmt_v6_addr,mgmt_vlan,traffic_vlan,poll_frequency,last_updated,distro_name,distro_phy_port,community from switches where placement is not null and sysname = ' . $nms::web::dbh->quote($switch) . ' and switches.deleted = false;');
+my $limit = '';
+if (defined($switch)) {
+ $limit = ' and sysname = ' . $nms::web::dbh->quote($switch);
}
+$q2 = $nms::web::dbh->prepare("select
+ switches.sysname,
+ host(switches.mgmt_v4_addr) as mgmt_v4_addr,
+ host(switches.mgmt_v6_addr) as mgmt_v6_addr,
+ switches.mgmt_vlan,
+ switches.traffic_vlan,
+ switches.poll_frequency,
+ switches.last_updated,
+ switches.distro_name,
+ switches.distro_phy_port,
+ switches.community
+ from switches where switches.placement is not null and switches.deleted = false $limit;");
+
$q2->execute();
while (my $ref = $q2->fetchrow_hashref()) {
my $sysname = $ref->{'sysname'};
$nms::web::json{'switches'}{$ref->{'sysname'}} = $ref;
}
-my $q4 = $nms::web::dbh->prepare('select linknet, (select sysname from switches where switch = switch1) as sysname1, addr1, (select sysname from switches where switch = switch2) as sysname2,addr2 from linknets');
-
-$q4->execute();
-while (my $ref = $q4->fetchrow_hashref()) {
- $nms::web::json{'linknets'}{$ref->{'linknet'}} = $ref;
-}
-
finalize_output();
diff --git a/web/api/read/template-list b/web/api/read/template-list
new file mode 100755
index 0000000..81b9986
--- /dev/null
+++ b/web/api/read/template-list
@@ -0,0 +1,21 @@
+#! /usr/bin/perl
+# vim:ts=8:sw=8
+
+use lib '/opt/gondul/include';
+use nms::web;
+use strict;
+use warnings;
+
+my @dirs = ("/opt/gondul/web/templates","/opt/gondul/data/templates");
+
+foreach my $template_dir (@dirs) {
+opendir (DIR, $template_dir) or next;
+while (my $file = readdir(DIR)) {
+ next if ($file =~ m/^\./);
+ my %meh;
+ $meh{'file'} = $file;
+
+ push @{$nms::web::json{'templates'}},\%meh;
+}
+}
+nms::web::finalize_output();