diff options
Diffstat (limited to 'web')
| -rwxr-xr-x | web/nms.gathering.org/comment-change.pl | 22 | ||||
| -rwxr-xr-x | web/nms.gathering.org/comment.pl | 3 | ||||
| -rwxr-xr-x | web/nms.gathering.org/port-state.pl | 109 | 
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(); | 
