diff options
Diffstat (limited to 'include/nms')
-rw-r--r-- | include/nms/dbconfig.pm | 29 | ||||
-rw-r--r-- | include/nms/oplog.pm | 34 | ||||
-rw-r--r-- | include/nms/util.pm | 74 | ||||
-rwxr-xr-x | include/nms/web.pm | 2 |
4 files changed, 134 insertions, 5 deletions
diff --git a/include/nms/dbconfig.pm b/include/nms/dbconfig.pm new file mode 100644 index 0000000..b67c040 --- /dev/null +++ b/include/nms/dbconfig.pm @@ -0,0 +1,29 @@ +# vim:ts=8:sw=8 +use strict; +use warnings; +use utf8; +use DBI; +use Data::Dumper; +use JSON; +use nms; +package nms::dbconfig; + +use base 'Exporter'; +our @EXPORT = qw(%config); +our %config; +my $dbh; + +use Data::Dumper; + + +BEGIN { + $dbh = nms::db_connect(); + my $q2 = $dbh->prepare('select * from config order by id desc limit 1;'); + $q2->execute(); + while (my $ref = $q2->fetchrow_hashref()) { + %config = %$ref; + $config{'data'} = JSON::XS::decode_json($ref->{'data'}); + } + $dbh->disconnect(); +} +1; diff --git a/include/nms/oplog.pm b/include/nms/oplog.pm new file mode 100644 index 0000000..c5194cf --- /dev/null +++ b/include/nms/oplog.pm @@ -0,0 +1,34 @@ +# vim:ts=8:sw=8 +use strict; +use warnings; +use utf8; +use DBI; +use Data::Dumper; +use JSON; +use nms; +package nms::oplog; + +use base 'Exporter'; +our @EXPORT = qw(oplog); +my $dbh; +my $query; +my $user; + +use Data::Dumper; + + +sub oplog { + $query->execute($_[0], "[$user]" . $_[1]); + $dbh->commit; +} + +BEGIN { + $user = $ENV{'REMOTE_USER'} || "internal"; + $dbh = nms::db_connect(); + $query = $dbh->prepare("INSERT INTO oplog (username, systems, log) VALUES('system',?,?)"); +} + +END { + $dbh->disconnect(); +} +1; diff --git a/include/nms/util.pm b/include/nms/util.pm index d2382f9..f79df50 100644 --- a/include/nms/util.pm +++ b/include/nms/util.pm @@ -10,7 +10,6 @@ our @EXPORT = qw(guess_placement parse_switches_txt parse_switches parse_switch) # Parse a single switches.txt-formatted switch sub parse_switch { my ($switch, $subnet4, $subnet6, $mgtmt4, $mgtmt6, $lolid, $distro) = split(/ /); - my %foo = guess_placement($switch); my %ret = ( 'sysname' => "$switch", 'subnet4' => "$subnet4", @@ -50,10 +49,77 @@ sub parse_switches { return @switches; } -# Guesses placement from name to get a starting point -# -# FIXME: Move to configuration +# FIXME: Derive which function from the config/db using the shortname. +# If we care. sub guess_placement { + return guess_placement_dx($_[0]); +} +# Guesses placement from name to get a starting point +# Digitality X layout +# FIXME: Basically a stub, since MRGLASS is too slow with the map. +sub guess_placement_dx { + my ($x, $y, $xx, $yy); + + my $name = $_[0]; + my $src = "unknown"; + if ($name =~ /^row\d+-\d+$/) { + $name =~ /row(\d+)-(\d+)/; + my ($e, $s) = ($1, $2); + $src = "main"; + + $x = int(1523 - (($e-1)/2) * 61); + $y = undef; + + if ($s > 1) { + $y = 137; + } else { + $y = 410; + } + + $xx = $x + 32; + $yy = $y + 200; + + } elsif ($name =~ /^core$/) { + $src = "core"; + $x = 1100; + $y = 650; + $xx = $x + 200; + $yy = $y + 100; + } elsif ($name =~ /^noc$/) { + $src = "noc"; + $x = 300; + $y = 800; + $xx = $x + 230; + $yy = $y + 40; + } elsif ($name =~ /^distro(\d)$/) { + my $d = ($1); + $src = "distro"; + $x = 1200 - $d * 700; + $y = 355; + $xx = $x + 230; + $yy = $y + 40; + } else { + # Fallback to have _some_ position + $src = "random"; + $x = int(rand(1900)); + $y = int(rand(900)); + $xx = $x + 230; + $yy = $y + 40; + }; + + + my %box = ( + 'src' => "$src", + 'x1' => $x, + 'y1' => $y, + 'xx' => $xx, + 'yy' => $yy + ); + return %box; +} + +# Last updated for TG16 +sub guess_placement_tg { my ($x, $y, $xx, $yy); my $name = $_[0]; diff --git a/include/nms/web.pm b/include/nms/web.pm index 8a20f50..18fe919 100755 --- a/include/nms/web.pm +++ b/include/nms/web.pm @@ -67,7 +67,7 @@ sub setwhen { $offset = $_[1]; } if (defined($get_params{'now'})) { - $now = db_safe_quote('now') . "::timestamp with time zone "; + $now = "timestamp with time zone 'epoch' + " . db_safe_quote('now') . " * INTERVAL '1 second' "; $cc{'max-age'} = "3600"; } $now = "(" . $now . " - '" . $offset . "'::interval)"; |