<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
- <script>
- var netdataRegistry = true;
- var netdataTheme = 'slate';
- var netdataShowHelp = true;
- </script>
- <script type="text/javascript" src="dashboard.js?v46"></script>
-
- <script>
- var urlOptions = {
- host: null,
- chart: null,
- family: null,
- alarm: null,
- alarm_unique_id: 0,
- alarm_id: 0,
- alarm_event_id: 0,
- hasProperty: function(property) {
- return typeof this[property] !== 'undefined';
- }
- };
-
- function netdataQueryParse() {
- var query = document.location.search.split('?');
- var variables = query[1].split('&');
- var len = variables.length;
- while(len--) {
- var p = variables[len].split('=');
- if(urlOptions.hasProperty(p[0]) && typeof p[1] !== 'undefined')
- urlOptions[p[0]] = p[1];
- }
+</head>
+<script>
+ var netdataRegistry = true;
+ var netdataRegistryAfterMs = 0;
+ var netdataTheme = 'slate';
+ var netdataShowHelp = true;
+</script>
+<script type="text/javascript" src="dashboard.js?v20170105-7"></script>
+
+<script>
+var urlOptions = {
+ host: null,
+ chart: null,
+ family: null,
+ alarm: null,
+ alarm_unique_id: 0,
+ alarm_id: 0,
+ alarm_event_id: 0,
+ hasProperty: function(property) {
+ return typeof this[property] !== 'undefined';
}
-
- function netdataURL(url) {
- return url + '#top'
- + ';nowelcome=1'
- + ';show_alarms=1'
- + ';chart=' + urlOptions.chart.toString()
- + ';family=' + urlOptions.family.toString()
- + ';alarm=' + urlOptions.alarm.toString()
- + ';alarm_unique_id=' + urlOptions.alarm_unique_id.toString()
- + ';alarm_id=' + urlOptions.alarm_id.toString()
- + ';alarm_event_id=' + urlOptions.alarm_event_id.toString()
- ;
+};
+
+function netdataQueryParse() {
+ var query = document.location.search.split('?');
+ var variables = query[1].split('&');
+ var len = variables.length;
+ while(len--) {
+ var p = variables[len].split('=');
+ if(urlOptions.hasProperty(p[0]) && typeof p[1] !== 'undefined')
+ urlOptions[p[0]] = decodeURIComponent(p[1]);
}
- var gotoServerValidateRemaining = 0;
- var gotoServerMiddleClick = false;
- var gotoServerStop = false;
- var thisIsHttps = false;
- var urlsInHttp = 0;
- function gotoServerValidateUrl(id, guid, url) {
- var penaldy = 0;
- var error = 'failed';
-
- if(thisIsHttps === false && url.toString().startsWith('https://')) {
- // we penalize https only if the current url is http
- // to allow the user walk through all its servers.
- penaldy = 500;
- }
+ if(typeof urlOptions.family !== 'string')
+ urlOptions.family = '';
- else if(thisIsHttps === true && url.toString().startsWith('http://')) {
- error = 'can\'t check';
- urlsInHttp++;
- }
+ if(typeof urlOptions.chart !== 'string')
+ urlOptions.chart = '';
+}
+
+function netdataURL(url) {
+ return url + '#top'
+ + ';nowelcome=1'
+ // + ';show_alarms=1'
+ + ';chart=' + encodeURIComponent(urlOptions.chart)
+ + ';family=' + encodeURIComponent(urlOptions.family)
+ + ';alarm=' + encodeURIComponent(urlOptions.alarm)
+ + ';alarm_unique_id=' + urlOptions.alarm_unique_id.toString()
+ + ';alarm_id=' + urlOptions.alarm_id.toString()
+ + ';alarm_event_id=' + urlOptions.alarm_event_id.toString()
+ ;
+}
+
+var gotoServerValidateRemaining = 0;
+var gotoServerMiddleClick = false;
+var gotoServerStop = false;
+var thisIsHttps = false;
+var urlsInHttp = 0;
+function gotoServerValidateUrl(id, guid, url) {
+ var penaldy = 0;
+ var error = 'failed';
+
+ if(thisIsHttps === false && url.toString().startsWith('https://'))
+ // we penalize https only if the current url is http
+ // to allow the user walk through all its servers.
+ penaldy = 500;
+
+ else if(thisIsHttps === true && url.toString().startsWith('http://')) {
+ error = 'can\'t check';
+ urlsInHttp++;
+ }
- var finalURL = netdataURL(url);
+ var finalURL = netdataURL(url);
- setTimeout(function() {
- document.getElementById('gotoServerList').innerHTML += '<tr><td style="padding-left: 20px;"><a href="' + finalURL + '" target="_blank">' + url + '</a></td><td style="padding-left: 30px;"><code id="' + guid + '-' + id + '-status">checking...</code></td></tr>';
+ setTimeout(function() {
+ document.getElementById('gotoServerList').innerHTML += '<tr><td style="padding-left: 20px;"><a href="' + finalURL + '" target="_blank">' + url + '</a></td><td style="padding-left: 30px;"><code id="' + guid + '-' + id + '-status">checking...</code></td></tr>';
- NETDATA.registry.hello(url, function(data) {
- if (data) {
- document.getElementById(guid + '-' + id + '-status').innerHTML = "OK";
+ NETDATA.registry.hello(url, function(data) {
+ if(typeof data !== 'undefined' && data !== null && typeof data.machine_guid === 'string' && data.machine_guid === guid) {
+ // console.log('OK ' + id + ' URL: ' + url);
+ document.getElementById(guid + '-' + id + '-status').innerHTML = "OK";
- if(!gotoServerStop) {
- gotoServerStop = true;
+ if(!gotoServerStop) {
+ gotoServerStop = true;
- if(gotoServerMiddleClick) {
- window.open(finalURL);
- gotoServerMiddleClick = false;
- document.getElementById('gotoServerResponse').innerHTML = '<b>Opening new window to ' + NETDATA.registry.machines[guid].name + '<br/><a href="' + finalURL + '">' + url + '</a></b><br/>(check your pop-up blocker if it fails)';
- }
- else
- document.location = finalURL;
+ if(gotoServerMiddleClick) {
+ window.open(finalURL);
+ gotoServerMiddleClick = false;
+ document.getElementById('gotoServerResponse').innerHTML = '<b>Opening new window to ' + NETDATA.registry.machines[guid].name + '<br/><a href="' + finalURL + '">' + url + '</a></b><br/>(check your pop-up blocker if it fails)';
+ }
+ else {
+ document.getElementById('gotoServerResponse').innerHTML += 'found it! It is at:<br/><small>' + url + '</small>';
+ document.location = finalURL;
}
}
- else {
- document.getElementById(guid + '-' + id + '-status').innerHTML = error;
- gotoServerValidateRemaining--;
- if(gotoServerValidateRemaining <= 0) {
- gotoServerMiddleClick = false;
- document.getElementById('gotoServerResponse').innerHTML = '<b>Sorry! I cannot find any operational URL for this server</b>';
-
- if(thisIsHttps === true && urlsInHttp > 0) {
- document.getElementById('gotoServerResponse').innerHTML += '<br/>redirecting myself to HTTP to allow checking';
- document.location = document.location.toString().replace('https://', 'http://');
- }
+ }
+ else {
+ if(typeof data !== 'undefined' && data !== null && typeof data.machine_guid === 'string' && data.machine_guid !== guid)
+ error = 'wrong machine';
+
+ document.getElementById(guid + '-' + id + '-status').innerHTML = error;
+ gotoServerValidateRemaining--;
+ if(gotoServerValidateRemaining <= 0) {
+ gotoServerMiddleClick = false;
+ document.getElementById('gotoServerResponse').innerHTML = '<b>Sorry! I cannot find any operational URL for this server</b>';
+
+ if(thisIsHttps === true && urlsInHttp > 0) {
+ document.getElementById('gotoServerResponse').innerHTML += '<br/>redirecting myself to HTTP to allow checking';
+ document.location = document.location.toString().replace('https://', 'http://');
}
}
- });
- }, (id * 50) + penaldy);
+ }
+ });
+ }, (id * 50) + penaldy);
+}
+
+var netdataRegistryCallback = function(machines_array) {
+ if(typeof urlOptions.host !== 'string') {
+ document.getElementById('bodylog').innerHTML = "Sorry... bad request.";
+ return;
}
- var netdataRegistryCallback = function(machines_array) {
- document.getElementById('message').innerHTML = 'These are the URLs this machine is known:';
-
- if(document.location.toString().startsWith('https://'))
- thisIsHttps = true;
-
- if(machines_array) {
- var len = machines_array.length;
- while(len--) {
- if(machines_array[len].name === urlOptions.host) {
- var ulen = machines_array[len].alternate_urls.length;
- gotoServerValidateRemaining = ulen;
- while(ulen--)
- gotoServerValidateUrl(ulen, machines_array[len].guid, machines_array[len].alternate_urls[ulen]);
- return;
- }
- }
- }
+ document.getElementById('message').innerHTML = 'These are the URLs this machine is known:';
- document.getElementById('bodylog').innerHTML = "Sorry... your account is not linked to a netdata server named: <b>" + urlOptions.host + '</b>';
- };
+ if(document.location.toString().startsWith('https://'))
+ thisIsHttps = true;
- netdataQueryParse();
+ if(machines_array) {
+ var guids = {};
+ var checked = {};
+ var len = machines_array.length;
+ var count = 0;
- if(typeof urlOptions.host !== 'string')
- document.getElementById('bodylog').innerHTML = "Sorry... bad request.";
+ while(len--) {
+ if(machines_array[len].name === urlOptions.host) {
+ var ulen = machines_array[len].alternate_urls.length;
+ var guid = machines_array[len].guid;
+ guids[guid] = true;
+
+ gotoServerValidateRemaining = ulen;
+ while(ulen--) {
+ var url = machines_array[len].alternate_urls[ulen];
+ checked[url] = true;
+ gotoServerValidateUrl(count++, guid, url);
+ }
- if(typeof urlOptions.family !== 'string')
- urlOptions.family = '';
+ setTimeout(function() {
+ if(gotoServerStop === false) {
+ document.getElementById('gotoServerResponse').innerHTML = '<b>Added all the known URLs for this machine.</b>';
+ var guid;
+ for(guid in guids) {
+ NETDATA.registry.search(guid, function(data) {
+ // console.log(data);
+ len = data.urls.length;
+ while(len--) {
+ var url = data.urls[len][1];
+ // console.log(url);
+ if(typeof checked[url] === 'undefined') {
+ gotoServerValidateRemaining++;
+ checked[url] = true;
+ gotoServerValidateUrl(count++, guid, url);
+ }
+ }
+ });
+ }
+ }
+ }, 2000);
- if(typeof urlOptions.chart !== 'string')
- urlOptions.chart = '';
- </script>
+ return false;
+ }
+ }
+ }
-</head>
+ document.getElementById('bodylog').innerHTML = "Sorry... your account is not linked to a netdata server named: <b>" + urlOptions.host + '</b>';
+};
+
+netdataQueryParse();
+</script>
<body>
<div class="container" id="">
<div id="bodylog" style="padding-top: 8vmax; font-size: 2.0vmax;">