]> arthur.barton.de Git - netdata.git/blob - web/goto-host-from-alarm.html
enabled redirect to destination netdata server
[netdata.git] / web / goto-host-from-alarm.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <title>Goto a host you know...</title>
5     <meta name="application-name" content="netdata">
6
7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8     <meta charset="utf-8">
9     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
10     <meta name="viewport" content="width=device-width, initial-scale=1">
11     <meta name="apple-mobile-web-app-capable" content="yes">
12     <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
13
14     <script>
15         var netdataRegistry = true;
16         var netdataTheme = 'slate';
17         var netdataShowHelp = true;
18     </script>
19     <script type="text/javascript" src="dashboard.js?v46"></script>
20
21     <script>
22     var urlOptions = {
23         host: null,
24         chart: null,
25         family: null,
26         hasProperty: function(property) {
27             return typeof this[property] !== 'undefined';
28         }
29     };
30
31     function netdataQueryParse() {
32         var query = document.location.search.split('?');
33         var variables = query[1].split('&');
34         var len = variables.length;
35         while(len--) {
36             var p = variables[len].split('=');
37             if(urlOptions.hasProperty(p[0]) && typeof p[1] !== 'undefined')
38                 urlOptions[p[0]] = p[1];
39         }
40     }
41
42     function netdataURL(url) {
43         return url + '#top;show_alarms=true;chart=' + urlOptions.chart + ';family=' + urlOptions.family;
44     }
45
46     var gotoServerValidateRemaining = 0;
47     var gotoServerMiddleClick = false;
48     var gotoServerStop = false;
49     function gotoServerValidateUrl(id, guid, url) {
50         var penaldy = 0;
51         if(document.location.toString().startsWith('http://') && url.toString().startsWith('https://'))
52                 // we penalize https only if the current url is http
53                 // to allow the user walk through all its servers.
54                 penaldy = 500;
55
56         var finalURL = netdataURL(url);
57
58         setTimeout(function() {
59             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>';
60
61             NETDATA.registry.hello(url, function(data) {
62                 if (data) {
63                     document.getElementById(guid + '-' + id + '-status').innerHTML = "OK";
64
65                     if(!gotoServerStop) {
66                         gotoServerStop = true;
67
68                         if(gotoServerMiddleClick) {
69                             window.open(finalURL, '_blank');
70                             gotoServerMiddleClick = false;
71                             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)';
72                         }
73                         else
74                             document.location = finalURL;
75                     }
76                 }
77                 else {
78                     document.getElementById(guid + '-' + id + '-status').innerHTML = "failed!";
79                     gotoServerValidateRemaining--;
80                     if(gotoServerValidateRemaining <= 0) {
81                         gotoServerMiddleClick = false;
82                         document.getElementById('gotoServerResponse').innerHTML = '<b>Sorry! I cannot find any operational URL for this server</b>';
83                     }
84                 }
85             });
86         }, (id * 50) + penaldy);
87     }
88
89     var netdataRegistryCallback = function(machines_array) {
90         if(machines_array) {
91             var len = machines_array.length;
92             while(len--) {
93                 if(machines_array[len].name === urlOptions.host) {
94                     var ulen = machines_array[len].alternate_urls.length;
95                     gotoServerValidateRemaining = ulen;
96                     while(ulen--)
97                         gotoServerValidateUrl(ulen, machines_array[len].guid, machines_array[len].alternate_urls[ulen]);
98                     return;
99                 }
100             }
101         }
102
103         document.getElementById('bodylog').innerHTML = "Sorry... your account is not linked to a netdata server named: <b>" + urlOptions.host + '</b>';
104     };
105
106     netdataQueryParse();
107
108     if(typeof urlOptions.host !== 'string')
109         document.getElementById('bodylog').innerHTML = "Sorry... bad request.";
110
111     if(typeof urlOptions.family !== 'string')
112         urlOptions.family = '';
113
114     if(typeof urlOptions.chart !== 'string')
115         urlOptions.chart = '';
116     </script>
117
118 </head>
119 <body>
120 <div class="container" id="">
121     <div id="bodylog" style="padding-top: 8vmax; font-size: 2.0vmax;">
122         Please wait...
123
124         <div style="padding-top: 20px;">
125             <table id="gotoServerList" class="table">
126             </table>
127         </div>
128         <p style="padding-top: 10px;"><small>
129             This page can only find netdata URLs you have already visited and are linked to your account on this netdata registry.
130         </small></p>
131         <div id="gotoServerResponse" style="display: block; width: 100%; text-align: center; padding-top: 20px;"></div>
132     </div>
133
134 </div>
135 </body>
136 </html>