aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rwxr-xr-xweb/api/public/config28
-rw-r--r--web/js/nms.js46
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();