aboutsummaryrefslogtreecommitdiffstats
path: root/web/nms.gathering.org
diff options
context:
space:
mode:
Diffstat (limited to 'web/nms.gathering.org')
-rwxr-xr-xweb/nms.gathering.org/comment-change.pl22
-rwxr-xr-xweb/nms.gathering.org/comment.pl3
-rwxr-xr-xweb/nms.gathering.org/port-state.pl109
3 files changed, 31 insertions, 103 deletions
diff --git a/web/nms.gathering.org/comment-change.pl b/web/nms.gathering.org/comment-change.pl
index 13ed058..d860777 100755
--- a/web/nms.gathering.org/comment-change.pl
+++ b/web/nms.gathering.org/comment-change.pl
@@ -1,24 +1,20 @@
#! /usr/bin/perl
-use CGI qw(fatalsToBrowser);
-use DBI;
+# vim:ts=8:sw=8
use lib '../../include';
use utf8;
use nms;
+use nms::web;
use strict;
use warnings;
-use Data::Dumper;
-my $cgi = CGI->new;
+my $id = db_safe_quote('comment');
+my $state = db_safe_quote('state');
-my $dbh = nms::db_connect();
-
-my $id = $dbh->quote($cgi->param('comment') || die );
-my $state= $dbh->quote($cgi->param('state') || die);
-
-
-my $q = $dbh->prepare("UPDATE switch_comments SET state = " . $state . " WHERE id = " . $id . ";");
+my $q = $nms::web::dbh->prepare("UPDATE switch_comments SET state = " . $state . " WHERE id = " . $id . ";");
$q->execute();
-print $cgi->header(-type=>'text/json; charset=utf-8');
-print "{ 'state': 'ok' }";
+$nms::web::cc{'max-age'} = '0';
+$nms::web::cc{'stale-while-revalidate'} = '0';
+$nms::web::json{'state'} = 'ok';
+finalize_output();
diff --git a/web/nms.gathering.org/comment.pl b/web/nms.gathering.org/comment.pl
index d22dcdc..7a45d76 100755
--- a/web/nms.gathering.org/comment.pl
+++ b/web/nms.gathering.org/comment.pl
@@ -5,9 +5,8 @@ use lib '../../include';
use nms::web;
use strict;
use warnings;
-use Data::Dumper;
-my $query = $nms::web::dbh->prepare('select sysname,extract(epoch from date_trunc(\'second\',time)) as time,state,username,id,comment from switch_comments natural join switches where state != \'delete\' order by time desc limit 1');
+my $query = $nms::web::dbh->prepare('select sysname,extract(epoch from date_trunc(\'second\',time)) as time,state,username,id,comment from switch_comments natural join switches where state != \'delete\' order by time desc');
$query->execute();
while (my $ref = $query->fetchrow_hashref()) {
push @{$nms::web::json{'comments'}{$ref->{'sysname'}}{'comments'}},$ref;
diff --git a/web/nms.gathering.org/port-state.pl b/web/nms.gathering.org/port-state.pl
index e3dc24a..e48e23a 100755
--- a/web/nms.gathering.org/port-state.pl
+++ b/web/nms.gathering.org/port-state.pl
@@ -5,119 +5,52 @@ use CGI qw(fatalsToBrowser);
use DBI;
use lib '../../include';
use nms;
+use nms::web;
use strict;
use warnings;
use Data::Dumper;
-my $cgi = CGI->new;
-
-my %cc = ();
-$cc{'stale-while-revalidate'} = "3600";
-$cc{'max-age'} = "5";
-
-# Print cache-control from %cc
-sub printcc {
- my $line = "";
- my $first = "";
- foreach my $tmp (keys(%cc)) {
- $line .= $first . $tmp . "=" . $cc{$tmp};
- $first = ", ";
- }
- print 'Cache-Control: ' . $line . "\n";
-}
-
-# FIXME: Shouldn't be magic.
-# Only used for setting time in result from DB time.
-# FIXME: Clarification, this _has_ to be set before setwhen is run,
-# since it secretly overrides it.
-my $now;
-
-# returns a valid $when statement
-# Also sets cache-control headers if time is overridden
-sub setwhen {
- my $when;
- $now = "now()";
- if (defined($cgi->param('now'))) {
- $now = "'" . $cgi->param('now') . "'::timestamp ";
- $cc{'max-age'} = "3600";
- }
- $when = " time > " . $now . " - '5m'::interval and time < " . $now . " ";
- return $when;
-}
-
-# Sets the ifname. If we are logged in, it's simply set to "ifname", otherwise
-# it's hashed for anonymization.
-sub obfuscateifname {
- my $ifname = "ifname";
- if (defined($cgi->param('public'))) {
- $ifname = "regexp_replace(ifname, 'ge-0/0/(([0-3][0-9])|(4[0-3])|([0-9]))\$',concat('ge-participant',sha1_hmac(ifname::bytea,'".$nms::config::nms_hash."'::bytea))) as ifname";
- }
- return $ifname;
-}
-
-
-my %json = ();
-my $dbh = nms::db_connect();
-my $when = setwhen;
-my $ifname = obfuscateifname;
-
-my $query = 'select sysname,extract(epoch from date_trunc(\'second\',time)) as time, '.$ifname.',ifhighspeed,ifhcinoctets,ifhcoutoctets from polls natural join switches where time in (select max(time) from polls where ' . $when . ' group by switch,ifname);';
-my $q = $dbh->prepare($query);
+my $query = 'select sysname,extract(epoch from date_trunc(\'second\',time)) as time, '.$nms::web::ifname.',ifhighspeed,ifhcinoctets,ifhcoutoctets from polls natural join switches where time in (select max(time) from polls where ' . $nms::web::when . ' group by switch,ifname);';
+my $q = $nms::web::dbh->prepare($query);
$q->execute();
while (my $ref = $q->fetchrow_hashref()) {
my @fields = ('ifhighspeed','ifhcoutoctets','ifhcinoctets');
foreach my $val (@fields) {
- $json{'switches'}{$ref->{'sysname'}}{'ports'}{$ref->{'ifname'}}{$val} = $ref->{$val};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'ports'}{$ref->{'ifname'}}{$val} = $ref->{$val};
}
- $json{'switches'}{$ref->{'sysname'}}{'ports'}{$ref->{'ifname'}}{'time'} = $ref->{'time'};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'ports'}{$ref->{'ifname'}}{'time'} = $ref->{'time'};
}
-my $q2 = $dbh->prepare('select switch,sysname,placement,ip,switchtype,poll_frequency,community,last_updated from switches natural join placements');
-my $q3 = $dbh->prepare('select distinct on (switch) switch,temp,time,sysname from switch_temp natural join switches where ' . $when . ' order by switch,time desc');
+my $q2 = $nms::web::dbh->prepare('select switch,sysname,placement,ip,switchtype,poll_frequency,community,last_updated from switches natural join placements');
+my $q3 = $nms::web::dbh->prepare('select distinct on (switch) switch,temp,time,sysname from switch_temp natural join switches where ' . $nms::web::when . ' order by switch,time desc');
$q2->execute();
while (my $ref = $q2->fetchrow_hashref()) {
$ref->{'placement'} =~ /\((-?\d+),(-?\d+)\),\((-?\d+),(-?\d+)\)/;
my ($x1, $y1, $x2, $y2) = ($1, $2, $3, $4);
my $sysname = $ref->{'sysname'};
- $json{'switches'}{$ref->{'sysname'}}{'switchtype'} = $ref->{'switchtype'};
- $json{'switches'}{$ref->{'sysname'}}{'management'}{'ip'} = $ref->{'ip'};
- $json{'switches'}{$ref->{'sysname'}}{'management'}{'poll_frequency'} = $ref->{'poll_frequency'};
- $json{'switches'}{$ref->{'sysname'}}{'management'}{'community'} = $ref->{'community'};
- $json{'switches'}{$ref->{'sysname'}}{'management'}{'last_updated'} = $ref->{'last_updated'};
- $json{'switches'}{$ref->{'sysname'}}{'placement'}{'x'} = $x2;
- $json{'switches'}{$ref->{'sysname'}}{'placement'}{'y'} = $y2;
- $json{'switches'}{$ref->{'sysname'}}{'placement'}{'width'} = $x1 - $x2;
- $json{'switches'}{$ref->{'sysname'}}{'placement'}{'height'} = $y1 - $y2;
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'switchtype'} = $ref->{'switchtype'};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'management'}{'ip'} = $ref->{'ip'};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'management'}{'poll_frequency'} = $ref->{'poll_frequency'};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'management'}{'community'} = $ref->{'community'};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'management'}{'last_updated'} = $ref->{'last_updated'};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'placement'}{'x'} = $x2;
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'placement'}{'y'} = $y2;
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'placement'}{'width'} = $x1 - $x2;
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'placement'}{'height'} = $y1 - $y2;
}
$q3->execute();
while (my $ref = $q3->fetchrow_hashref()) {
my $sysname = $ref->{'sysname'};
- $json{'switches'}{$ref->{'sysname'}}{'temp'} = $ref->{'temp'};
- $json{'switches'}{$ref->{'sysname'}}{'temp_time'} = $ref->{'time'};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'temp'} = $ref->{'temp'};
+ $nms::web::json{'switches'}{$ref->{'sysname'}}{'temp_time'} = $ref->{'time'};
}
-my $q4 = $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');
+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()) {
- $json{'linknets'}{$ref->{'linknet'}} = $ref;
-# push @{$json{'linknets'}}, $ref;
+ $nms::web::json{'linknets'}{$ref->{'linknet'}} = $ref;
}
-my $q5;
-$q5 = $dbh->prepare ('select ' . $now . ' as time;');
-$q5->execute();
-$json{'time'} = $q5->fetchrow_hashref()->{'time'};
-
-my $q6 = $dbh->prepare('select sysname,extract(epoch from date_trunc(\'second\',time)) as time,state,username,id,comment from switch_comments natural join switches where state != \'delete\' order by time desc');
-$q6->execute();
-while (my $ref = $q6->fetchrow_hashref()) {
- push @{$json{'switches'}{$ref->{'sysname'}}{'comments'}},$ref;
-}
-
-$json{'username'} = $cgi->remote_user();
-printcc;
-
-print $cgi->header(-type=>'text/json; charset=utf-8');
-print JSON::XS::encode_json(\%json);
+finalize_output();