diff options
Diffstat (limited to 'web')
-rwxr-xr-x | web/api/public/config | 28 | ||||
-rw-r--r-- | web/js/nms.js | 46 |
2 files changed, 69 insertions, 5 deletions
diff --git a/web/api/public/config b/web/api/public/config new file mode 100755 index 0000000..dd8ccc1 --- /dev/null +++ b/web/api/public/config @@ -0,0 +1,28 @@ +#! /usr/bin/perl +# vim:ts=8:sw=8 + +use DBI; +use lib '/opt/gondul/include'; +use nms; +use nms::web; +use strict; +use warnings; +use Data::Dumper; + +$nms::web::cc{'max-age'} = "3600"; + +my $hostname = $ENV{'HTTP_HOST'} || ""; +my $q2 = $nms::web::dbh->prepare('select id, publicvhost, shortname, data from config order by id desc limit 1;'); + +$q2->execute(); +while (my $ref = $q2->fetchrow_hashref()) { + $nms::web::json{'config'} = $ref; + $nms::web::json{'config'}{'data'} = JSON::XS::decode_json($ref->{'data'}); + if ($ref->{'publicvhost'} eq $hostname) { + $nms::web::json{'config'}{'public'} = "true"; + } else { + $nms::web::json{'config'}{'public'} = "false"; + } +} + +finalize_output(); diff --git a/web/js/nms.js b/web/js/nms.js index 1f7398b..5df9431 100644 --- a/web/js/nms.js +++ b/web/js/nms.js @@ -548,6 +548,35 @@ function setNightMode(toggle) { } /* + * Only used to fetch the initial config for anything that needs to be + * handled prior to regular "boot up". + * + * For the moment, that only means detecting if we're being run on a public + * vhost or not. This has to be done in synch because it affects what + * sources we register for nmsData[]. If we wait for nmsData['config'], + * it's too late because all other things have been initialized already. + * + * If you add a configuration setting, use nmsData['config'] as much as + * possible. Avoid adding to this function. + */ +function getInitialConfig() { + $.ajax({ + type: "GET", + url: "/api/public/config", + async: false, + dataType: "json", + success: function (data, textStatus, jqXHR) { + if (data["config"]["public"] == "true") { + nms._public = true; + } else { + console.log("Private"); + nms._public = false; + } + } + }); +} + +/* * Boot up "fully fledged" NMS. * * This can be re-written to provide different looks and feels but using @@ -558,12 +587,17 @@ function initNMS() { nms.timers.playback = new nmsTimer(nms.playback.tick, 1000, "Playback ticker", "Handler used to advance time"); // Public + nmsData.registerSource("config","/api/public/config"); nmsData.registerSource("ping", "/api/public/ping"); nmsData.registerSource("switches","/api/public/switches"); nmsData.registerSource("switchstate","/api/public/switch-state"); nmsData.registerSource("dhcpsummary","/api/public/dhcp-summary"); nmsData.registerSource("dhcp","/api/public/dhcp"); - + + // Fetch initial config. Basically just populates nms._public. + // All other settings are kept in nmsData['config']. + getInitialConfig(); + // This is a magic dummy-source, it's purpose is to give a unified // way to get ticks every second. It is mainly meant to allow map // handlers to register for ticks so they will execute without data @@ -571,10 +605,12 @@ function initNMS() { // despite no pings) nmsData.registerSource("ticker","bananabananbanana"); - // Private - nmsData.registerSource("snmp","/api/read/snmp"); - nmsData.registerSource("comments", "/api/read/comments"); - nmsData.registerSource("smanagement","/api/read/switches-management"); + if (!nms._public) { + // Private + nmsData.registerSource("snmp","/api/read/snmp"); + nmsData.registerSource("comments", "/api/read/comments"); + nmsData.registerSource("smanagement","/api/read/switches-management"); + } restoreSettings(); nmsMap.init(); |