diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rwxr-xr-x | web/nms.gathering.org/comment-add.pl (renamed from web/nms.gathering.org/switch-comment.pl) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/css/bootstrap-theme.css (renamed from web/nms.gathering.org/nms2/css/bootstrap-theme.css) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/css/bootstrap-theme.css.map (renamed from web/nms.gathering.org/nms2/css/bootstrap-theme.css.map) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/css/bootstrap-theme.min.css (renamed from web/nms.gathering.org/nms2/css/bootstrap-theme.min.css) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/css/bootstrap.css (renamed from web/nms.gathering.org/nms2/css/bootstrap.css) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/css/bootstrap.css.map (renamed from web/nms.gathering.org/nms2/css/bootstrap.css.map) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/css/bootstrap.min.css (renamed from web/nms.gathering.org/nms2/css/bootstrap.min.css) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/css/navbar-static-top.css (renamed from web/nms.gathering.org/nms2/css/navbar-static-top.css) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/display.html.bak | 46 | ||||
-rw-r--r-- | web/nms.gathering.org/fonts/glyphicons-halflings-regular.eot (renamed from web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.eot) | bin | 20127 -> 20127 bytes | |||
-rw-r--r-- | web/nms.gathering.org/fonts/glyphicons-halflings-regular.svg (renamed from web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.svg) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/fonts/glyphicons-halflings-regular.ttf (renamed from web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.ttf) | bin | 45404 -> 45404 bytes | |||
-rw-r--r-- | web/nms.gathering.org/fonts/glyphicons-halflings-regular.woff (renamed from web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.woff) | bin | 23424 -> 23424 bytes | |||
-rw-r--r-- | web/nms.gathering.org/fonts/glyphicons-halflings-regular.woff2 (renamed from web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.woff2) | bin | 18028 -> 18028 bytes | |||
-rw-r--r-- | web/nms.gathering.org/img/tg15-salkart-clean-big.png (renamed from web/nms.gathering.org/nms2/img/tg15-salkart-clean-big.png) | bin | 84362 -> 84362 bytes | |||
-rw-r--r-- | web/nms.gathering.org/img/tg15-salkart-full.png (renamed from web/nms.gathering.org/nms2/img/tg15-salkart-full.png) | bin | 167427 -> 167427 bytes | |||
-rw-r--r-- | web/nms.gathering.org/img/tg15-salkart.png (renamed from web/nms.gathering.org/nms2/img/tg15-salkart.png) | bin | 141073 -> 141073 bytes | |||
-rw-r--r-- | web/nms.gathering.org/index.html | 618 | ||||
-rw-r--r-- | web/nms.gathering.org/js/bootstrap.js (renamed from web/nms.gathering.org/nms2/js/bootstrap.js) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/js/bootstrap.min.js (renamed from web/nms.gathering.org/nms2/js/bootstrap.min.js) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/js/jquery.min.js (renamed from web/nms.gathering.org/nms2/js/jquery.min.js) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/js/nms-color-util.js (renamed from web/nms.gathering.org/nms2/js/nms-color-util.js) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/js/nms-map-handlers.js (renamed from web/nms.gathering.org/nms2/js/nms-map-handlers.js) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/js/nms.js (renamed from web/nms.gathering.org/nms2/js/nms.js) | 15 | ||||
-rw-r--r-- | web/nms.gathering.org/js/npm.js (renamed from web/nms.gathering.org/nms2/js/npm.js) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/nms2/index.html | 527 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/change-switch-pos.pl (renamed from web/nms.gathering.org/change-switch-pos.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/dhcp-json.pl (renamed from web/nms.gathering.org/dhcp-json.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/dhcpkart.pl (renamed from web/nms.gathering.org/dhcpkart.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/display-rack.html (renamed from web/nms.gathering.org/display-rack.html) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/display.html (renamed from web/nms.gathering.org/display.html) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/old/edit.html (renamed from web/nms.gathering.org/edit.html) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/old/index.html | 115 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/led.pl (renamed from web/nms.gathering.org/led.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/mygraph.pl (renamed from web/nms.gathering.org/mygraph.pl) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/old/nettkart-continuous.html (renamed from web/nms.gathering.org/nettkart-continuous.html) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/nettkart-json.pl (renamed from web/nms.gathering.org/nettkart-json.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/nettkart-text.pl (renamed from web/nms.gathering.org/nettkart-text.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/nettkart-web.pl (renamed from web/nms.gathering.org/nettkart-web.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/nettkart.pl (renamed from web/nms.gathering.org/nettkart.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/observium.html (renamed from web/nms.gathering.org/observium.html) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/ping-json.pl (renamed from web/nms.gathering.org/ping-json.pl) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/old/ping.css (renamed from web/nms.gathering.org/ping.css) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/old/ping.html (renamed from web/nms.gathering.org/ping.html) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/old/ping.js (renamed from web/nms.gathering.org/ping.js) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/old/ping2.html (renamed from web/nms.gathering.org/ping2.html) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/portkart.pl (renamed from web/nms.gathering.org/portkart.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/showswitch.pl (renamed from web/nms.gathering.org/showswitch.pl) | 0 | ||||
-rw-r--r-- | web/nms.gathering.org/old/slide.html (renamed from web/nms.gathering.org/slide.html) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/smanagement.pl (renamed from web/nms.gathering.org/smanagement.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/sshow.pl (renamed from web/nms.gathering.org/sshow.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/stempmap.pl (renamed from web/nms.gathering.org/stempmap.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/stromkart.pl (renamed from web/nms.gathering.org/stromkart.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/switches-json.pl (renamed from web/nms.gathering.org/switches-json.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/uplinkkart-text.pl (renamed from web/nms.gathering.org/uplinkkart-text.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/uplinkkart.pl (renamed from web/nms.gathering.org/uplinkkart.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/old/uplinktrafikkart.pl (renamed from web/nms.gathering.org/uplinktrafikkart.pl) | 0 | ||||
-rwxr-xr-x | web/nms.gathering.org/ping.pl (renamed from web/nms.gathering.org/ping-json2.pl) | 0 |
59 files changed, 640 insertions, 682 deletions
@@ -8,7 +8,6 @@ web/nms-public.gathering.org/ping.json web/nms-public.gathering.org/speedometer.json web/nms-public.gathering.org/switches.json web/nms.gathering.org/.htaccess -web/nms.gathering.org/img/ working-area/ include/config.pm include/tgmanage.cfg.sh diff --git a/web/nms.gathering.org/switch-comment.pl b/web/nms.gathering.org/comment-add.pl index 262d625..262d625 100755 --- a/web/nms.gathering.org/switch-comment.pl +++ b/web/nms.gathering.org/comment-add.pl diff --git a/web/nms.gathering.org/nms2/css/bootstrap-theme.css b/web/nms.gathering.org/css/bootstrap-theme.css index b0fdfcb..b0fdfcb 100644 --- a/web/nms.gathering.org/nms2/css/bootstrap-theme.css +++ b/web/nms.gathering.org/css/bootstrap-theme.css diff --git a/web/nms.gathering.org/nms2/css/bootstrap-theme.css.map b/web/nms.gathering.org/css/bootstrap-theme.css.map index 5a12d63..5a12d63 100644 --- a/web/nms.gathering.org/nms2/css/bootstrap-theme.css.map +++ b/web/nms.gathering.org/css/bootstrap-theme.css.map diff --git a/web/nms.gathering.org/nms2/css/bootstrap-theme.min.css b/web/nms.gathering.org/css/bootstrap-theme.min.css index cefa3d1..cefa3d1 100644 --- a/web/nms.gathering.org/nms2/css/bootstrap-theme.min.css +++ b/web/nms.gathering.org/css/bootstrap-theme.min.css diff --git a/web/nms.gathering.org/nms2/css/bootstrap.css b/web/nms.gathering.org/css/bootstrap.css index fb15e3d..fb15e3d 100644 --- a/web/nms.gathering.org/nms2/css/bootstrap.css +++ b/web/nms.gathering.org/css/bootstrap.css diff --git a/web/nms.gathering.org/nms2/css/bootstrap.css.map b/web/nms.gathering.org/css/bootstrap.css.map index 2fd84f3..2fd84f3 100644 --- a/web/nms.gathering.org/nms2/css/bootstrap.css.map +++ b/web/nms.gathering.org/css/bootstrap.css.map diff --git a/web/nms.gathering.org/nms2/css/bootstrap.min.css b/web/nms.gathering.org/css/bootstrap.min.css index cd1c616..cd1c616 100644 --- a/web/nms.gathering.org/nms2/css/bootstrap.min.css +++ b/web/nms.gathering.org/css/bootstrap.min.css diff --git a/web/nms.gathering.org/nms2/css/navbar-static-top.css b/web/nms.gathering.org/css/navbar-static-top.css index bf6b28e..bf6b28e 100644 --- a/web/nms.gathering.org/nms2/css/navbar-static-top.css +++ b/web/nms.gathering.org/css/navbar-static-top.css diff --git a/web/nms.gathering.org/display.html.bak b/web/nms.gathering.org/display.html.bak deleted file mode 100755 index f74d941..0000000 --- a/web/nms.gathering.org/display.html.bak +++ /dev/null @@ -1,46 +0,0 @@ -<html>
- <head>
- <title>TG15 - The Future Is Back</title>
- <style type="text/css">
- .frames {
- position: absolute;
- bottom: 0px;
- left: 0px;
- visibility: hidden;
- margin: 0px;
- overflow-y: hidden;
- overflow-x: hidden;
- }
- </style>
- <script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
- <script type="text/javascript">
- var page = 0;
- var iframes = 3;
- var delay = 10;
-
- function rotate() {
- $('body').delay(delay*1000).queue(function(next) {
- $('iframe').each(function(i, obj) {
- if (i == page) {
- this.style.visibility = 'visible';
- } else {
- this.style.visibility = 'hidden';
- }
- });
- next();
- rotate();
- });
- page = (page + 1) % iframes;
- }
-
- $(document).ready(function(){
- rotate();
- });
- </script>
- </head>
- <body style="background-image: url('http://funfact.tg15.gathering.org/background.png'); background-size: cover; background-repeat: no-repeat; overflow: hidden;">
- <iframe height="1080" class="frames" width="1920" id="observium" frameborder="0" src="http://nms.tg15.gathering.org/ping.html" scrolling="no"></iframe>
- <iframe height="1080" class="frames" width="1920" id="observium" frameborder="0" src="http://nms.tg15.gathering.org/dhcpkart.pl" scrolling="no"></iframe>
- <iframe height="600" class="frames" width="92%" id="observium" frameborder="0" src="http://observium.tg15.gathering.org/graph-realtime.php?type=bits&id=447&interval=30" scrolling="no" style="visibility: visible;"></iframe>
- </body>
-</html>
diff --git a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.eot b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.eot Binary files differindex b93a495..b93a495 100644 --- a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.eot +++ b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.eot diff --git a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.svg b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.svg index 94fb549..94fb549 100644 --- a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.svg +++ b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.svg diff --git a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.ttf b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.ttf Binary files differindex 1413fc6..1413fc6 100644 --- a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.ttf +++ b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.ttf diff --git a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.woff b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.woff Binary files differindex 9e61285..9e61285 100644 --- a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.woff +++ b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.woff diff --git a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.woff2 b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.woff2 Binary files differindex 64539b5..64539b5 100644 --- a/web/nms.gathering.org/nms2/fonts/glyphicons-halflings-regular.woff2 +++ b/web/nms.gathering.org/fonts/glyphicons-halflings-regular.woff2 diff --git a/web/nms.gathering.org/nms2/img/tg15-salkart-clean-big.png b/web/nms.gathering.org/img/tg15-salkart-clean-big.png Binary files differindex 8d647a3..8d647a3 100644 --- a/web/nms.gathering.org/nms2/img/tg15-salkart-clean-big.png +++ b/web/nms.gathering.org/img/tg15-salkart-clean-big.png diff --git a/web/nms.gathering.org/nms2/img/tg15-salkart-full.png b/web/nms.gathering.org/img/tg15-salkart-full.png Binary files differindex 9e22d40..9e22d40 100644 --- a/web/nms.gathering.org/nms2/img/tg15-salkart-full.png +++ b/web/nms.gathering.org/img/tg15-salkart-full.png diff --git a/web/nms.gathering.org/nms2/img/tg15-salkart.png b/web/nms.gathering.org/img/tg15-salkart.png Binary files differindex dce49b5..dce49b5 100644 --- a/web/nms.gathering.org/nms2/img/tg15-salkart.png +++ b/web/nms.gathering.org/img/tg15-salkart.png diff --git a/web/nms.gathering.org/index.html b/web/nms.gathering.org/index.html index 8043c7d..111dd52 100644 --- a/web/nms.gathering.org/index.html +++ b/web/nms.gathering.org/index.html @@ -1,115 +1,527 @@ -<html> +<!DOCTYPE html> +<html lang="en"> <head> - <title>snmp</title> - </head> - <body> - <p>tg light & magic. :-)</p> - - <ul> - <li><a href="nms2/">NMS 2 NG (Ping, Temp, Uplink, Trafikk, Info)</a> - <br /><i>Trykk på svitsjene (Work in progress)</i> - </li> - <br /> - <li><a href="dhcpkart.pl">DHCP-kart</a> - <br /><i>Oversikt over DHCP-lease etter switch</i> - </li> - - <br /> - - <li><a href="nettkart-text.pl">Nettkart</a> - <br /><i>Trafikkoversikt</i> - </li> - - <br /> -<!-- - - <li><a href="nettkart-telnet.pl">Nettkart</a> - <br /><i>Trafikkoversikt /m telnetlink</i> - </li> - - <br /> ---> -<!-- Kun moderat nyttig når vi har disablet alle webinterfacene... - <li><a href="nettkart-web.pl">Nettkart</a> - <br /><i>Trafikkoversikt /m weblink</i> - </li> - - <br /> ---> - <li><a href="portkart.pl">Nettkart, per port</a> - <br /><i>Trafikkoversikt per port</i> - </li> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" href="../../favicon.ico"> - <br /> - - <li><a href="uplinkkart.pl">Uplink-kart</a> - <br /><i>Hvilke switcher har ikke to uplinker</i> - </li> + <title>NMS2</title> - <br /> -<!-- - <li><a href="uplinktrafikkart.pl">Uplink-trafikkart</a> - <br /><i>Hvem burde hatt mer enn to uplinker</i> - </li> + <!-- Bootstrap core CSS --> + <link href="css/bootstrap.min.css" rel="stylesheet"> - <br /> ---> - <li><a href="stromkart.pl">Strømkart</a> - <br /><i>Hvilke switcher har færre enn fem tilkoblede klienter</i> - </li> + <!-- Custom styles for this template --> + <link href="css/navbar-static-top.css" rel="stylesheet"> - <br /> -<!-- - <li><a href="apkart.pl">Aksesspunkt-kart</a> - <br /><i>Hvilke aksesspunkter er plugget i</i> - </li> - - <br /> ---> - <!--<li><a href="overlay.pl">Overlay-nettkart</a> - <br /><i>Teh magic 3D!</i> - </li> - - <br /> --> - - <li><a href="smanagement.pl">Kommander switcher</a> - <br /><i>Konfigurer switchene</i> - </li> - - <br /> - - <li><a href="sshow.pl">Utførte og køede kommandoer</a> - <br /><i>Se og håndter kommandoer som er utført og fortsatt i køen</i> - </li> - - <br /> - - <li><a href="stempmap.pl">Temperaturkart</a> - <br /><i>Temperaturkart for switchene</i> - </li> -<!-- - <br /> - <li><a href="mbd-status.pl">MBD-status</a> - <br /><i>Hva spiller folk mest?</i> - </li> ---> - <br /> + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + <style type="text/css"> + canvas { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); /* mobile webkit */ + } + </style> + </head> - <li><a href="ping.html">Ping-kart</a> - <br /><i>Pinger alle bokser hvert sekund</i> - </li> + <body id="body"> + <nav class="navbar navbar-default navbar-static-top"> + <div class="container-fluid"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Menu + <span class="caret"></span> + </a> + <ul class="dropdown-menu" role="menu"> + <li><a href="#ping" onclick="setUpdater(handler_ping)">Ping map</a></li> + <li><a href="#uplink" onclick="setUpdater(handler_uplinks)">Uplink map</a></li> + <li><a href="#temp" onclick="setUpdater(handler_temp)">Temperature map</a></li> + <li><a href="#traffic" onclick="setUpdater(handler_traffic)">Traffic map</a></li> + <li><a href="#comment" onclick="setUpdater(handler_comment)">Comment spotter</a></li> + <li><a href="#traffictot" onclick="setUpdater(handler_traffic_tot)">Total switch traffic</a></li> + <li><a href="#disco" onclick="setUpdater(handler_disco)">DISCO</a></li> + <li class="divider"> </li> + <li><a href="#" onclick="toggleLayer('nowPickerBox');document.getElementById('nowPicker').focus();">Travel in time</a></li> + <li><a href="#" onclick="startReplay();" title="Replay from opening 120 minutes per second">Replay TG</a></li> + <li class="divider"> </li> + <li class="dropdown-header">View</li> + <li><a href="#" onclick="toggleNightMode()">Toggle Night Mode</a></li> + <li><a href="#" onclick="showBlurBox()">Tweak Night Mode blur</a></li> + <li><a href="#" onclick='showLayer("layerVisibility");'>Set layer visibility</a></li> + <li class="divider"> </li> + <li class="dropdown-header">Map scale</li> + <li><a href="#"><label id="scaler-text" for='scaler'></label><input type="range" id="scaler" name="points" min="0.2" max="3" step="0.01" onchange="scaleChange()" /></a></li> + <li class="divider"> </li> + <li class="dropdown-header">Help</li> + <li><a href="#" onclick="toggleLayer('aboutData');">About TG15 data</a></li> + <li><a href="#" onclick="toggleLayer('aboutBox');" >About NMS</a></li> + <li><a href="#" onclick="toggleLayer('aboutPerformance');" >About Performance</a></li> + <li><a href="#" onclick="toggleLayer('aboutKeybindings');" >Keyboard Shortcuts</a></li> + <li><a onclick="showTimerDebug(); hideSwitch();" style="cursor: pointer;" >Debug timers</a></li> + </ul> + </li> + <li><p id="updater_name" class="navbar-text"></p></li> + <div class="navbar-form navbar-left"> + <div class="form-group"> + <button class="btn btn-default btn-xs" id="legend-1"></button> + <button class="btn btn-default btn-xs" id="legend-2"></button> + <button class="btn btn-default btn-xs" id="legend-3"></button> + <button class="btn btn-default btn-xs" id="legend-4"></button> + <button class="btn btn-default btn-xs" id="legend-5"></button> + </div> + </div> + </li> + </ul> + <ul class="nav navbar-nav navbar-right"> + <li><p id="speed" class="navbar-text" title="Client port speed / Total port speed"></p></li> + </ul> + </div><!--/.nav-collapse --> + </div> + </nav> - <br /> + <div class="container-fluid"> - <li><a href="ping2.html">Realtime trafikkart</a> - <br /><i>Som nettkartet, men oppdateres hele tiden</i> - </li> + <div class="row-fluid"> + <div class="span12"> + <div id="aboutData" class="col-md-4" style="position: absolute; display:none; z-index: 130;"> + <div id="abotData" class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title">About the TG15 data + <button type="button" class="close" aria-label="Close" onclick="document.getElementById('aboutData').style.display = 'none';" style="float: right"> + <span aria-hidden="true">×</span> + </button> + </h3> + </div> + <div class="panel-body"> + <p>The data you see from The Gathering 2015 will seem + "broken up". This is not because we don't have data from + the first day, but because the backend was re-written on + day 1/2 and this web app only uses the new API.</p> + <p>NMS was set up on March 30th (Monday). Data started + pouring in on the same day. </p> + <p>Ping data is available for the entire event with 1 + second resolution. We "lost" data from the 30th because we + re-inserted the switches (We have the ping data, but not + the mapping between switch ID number and actual + switch).</p> + <p>DHCP data is available only for the last detected DHCP + ack (no history, except extensive text-based logs)</p> + <p>Uplink status is available for most of the event, but + not exposed here. We only expose traffic-based uplink state + here, which, again, is based on the new API.</p> + <p>Traffic status was temporarily bugged, but is available + from late on day 2.</p> + <p>Temperature data is available from day 2.</p> + <p>Plans are being made to ensure that we don't have gaps + like these in the future.</p> + <p>It is also worth mentioning that things like switch + positions are not logged historically, so you see the final + position on the map.</p> + </div> + </div> + </div> + <div id="aboutPerformance" class="col-md-4" style="position: absolute; display:none; z-index: 130;"> + <div class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title">Performance + <button type="button" class="close" aria-label="Close" onclick="document.getElementById('aboutPerformance').style.display = 'none';" style="float: right"> + <span aria-hidden="true">×</span> + </button> + </h3> + </div> + <table class="table"> + <tr> + <td>Outstanding AJAX requests</td> + <td id="outstandingAJAX"></td> + </tr> + <tr> + <td>Overflowed AJAX requests</td> + <td id="overflowAJAX"></td> + </tr> + </table> + <div class="panel-body"> + <p>NMS performance is surprisingly complex. It's split into + several parts and dealt with differently.</p> + <p>Poller performance is a matter of efficiently collecting + data and is mostly handled in the Perl code (and ensuring + we use sensible database schemas).</p> + <p>Backend performance for the GUI is mostly about not + killing the database server. We do NOT try to protect + against malicious clients directly, since this is a + management system not public-facing, but Varnish is used to + cache requests. To be able to do that properly, we need use + absolute time when reviewing past events (so "2015-04-02 + 17:30:00", not "2 hours ago"). We've also tried to minimize + the stupidity in the queries. There's still work to be done + here, though, as we need to split up a few large backend + requests (port-state.pl).</p> + <p>Front-end performance is mostly about drawing things + sensibly and not completely bombing the memory usage. And + about gracefully handling slow backends This will affect + you. For example, if you are reviewing past events and the + DB is struggling, we'll simply skip a backend request if we + have too many outstanding requests, that means you may jump + from "17:00" to "18:30" instead of going through + "17:30" and "18:00" too. This is working as intended. It + also means that you can happily spam the forward/backward + keyboard bindings to jump 18 hours forward: You'll overflow + the extra AJAX requests for individual requests, but you'll + land at the right time when you let go. But there could be + a 1 second delay (or more if the backend really struggles) + since you'll have to rely on the periodic backend requests + instead of the explicit ones triggered on hitting a + button.</p> + <p>Note that the counters on top are updated on a timer, + but this timer is set up at the same time as everything + else, which means that it's likely to update at the same + time as we fire off AJAX requests, so the 'outstanding ajax + requests' counter might either show almost constantly 3 or + 0 depending on what timer happens to fire first. This does + NOT mean that NMS has 3 requests all the time, just that + we're checking right after we fire off AJAX requests every + time.</p> + <p>NMS also tries to handle drawing OK, which is why things + are split into different HTML5 canvases. Blur and text are + particularly expensive, but there's no reason to re-paint + that all the time, etc).</p> + <p>The basic performance experiments are done on TG15 data + using a laptop and a VM with 6GB of memory, so it should + hold up quite well on "proper" hardware.</p> + </div> + </div> + </div> + <div id="aboutKeybindings" class="col-md-4" style="position: absolute; display:none; z-index: 130;"> + <div class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title">Keyboard Shortcuts + <button type="button" class="close" aria-label="Close" onclick="document.getElementById('aboutKeybindings').style.display = 'none';" style="float: right"> + <span aria-hidden="true">×</span> + </button> + </h3> + </div> + <table class="table table-condensed"> + <tr> + <th>Key</th> + <th>Description</th> + </tr> + <tr> + <td>?</td> + <td>Toggle navigation bar</td> + </tr> + <tr> + <td>n</td> + <td>Toggle night mode</td> + </tr> + <tr> + <td>1</td> + <td>View Ping map</td> + </tr> + <tr> + <td>2</td> + <td>View uplink map</td> + </tr> + <tr> + <td>3</td> + <td>View temperature map</td> + </tr> + <tr> + <td>4</td> + <td>View uplink traffic map</td> + </tr> + <tr> + <td>5</td> + <td>View comment spotter map</td> + </tr> + <tr> + <td>6</td> + <td>View total switch traffic map</td> + </tr> + <tr> + <td>7</td> + <td>View Disco map</td> + </tr> + <tr> + <td>h</td> + <td>Step 1 hour back in time</td> + </tr> + <tr> + <td>j</td> + <td>Step 5 minutes back in time</td> + </tr> + <tr> + <td>k</td> + <td>Step 5 minutes forward in time</td> + </tr> + <tr> + <td>l</td> + <td>Step 1 hour forward in time</td> + </tr> + <tr> + <td>p</td> + <td>Toggle playback (1 hour per second)</td> + </tr> + <tr> + <td>r</td> + <td>Return to real time</td> + </tr> + </table> + </div> + </div> + <div id="nowPickerBox" style="position: absolute; display: none; z-index: 130;" class="col-md-4"> + <div class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title">Time travel + <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('nowPickerBox').style.display = 'none';" style="float: right;"> + <span aria-hidden="true">×</span> + </button> + </h3> + </div> + <div class="panel-body"> + <p>Some features do not have time travel support (comment + spotting and DHCP map at the moment). We also lack + compatible SNMP data for the first day or so, so you'll + only have ping data for the first day of TG15.</p> + <p>It could take some time to load a specific point in time + for the first time. See "About performance" under the help + menu for more information.</p> + <p>You can also step backwards and forwards in time, stop + and start replay and go back to real time using keyboard + shortcuts. See the help menu for an overview of keyboard + shortcuts.</p> + <div class="input-group"> + <input type="text" class="form-control" placeholder="YYYY-MM-DDThh:mm:ss" id="nowPicker"> + <span class="input-group-btn"> + <button class="btn btn-default" onclick="changeNow();">Travel</button> + </span> + </div> + </div> + </div> + </div> + <div style="position: absolute; z-index: 120;" class="col-md-4"> + <div id="info-switch-parent" class="panel panel-default col-d-6" style="display: none; backgroun:silver; position: absolute; z-index: 120;"> + <div class="panel-heading"> + <h3 class="panel-title" id="info-switch-title"></h3> + </div> + <div id="info-switch-panel-body"> + <table class="table" id="info-switch-table"></table> + </div> + </div> + </div> + <div id="aboutBox" class="col-md-4" style="display: none; position: absolute; z-index: 100;"> + <div id="abotBox" class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title">Welcome to NMS + <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('aboutBox').style.display = 'none';" style="float: right;"> + <span aria-hidden="true">×</span> + </button> + </h3> + </div> + <div class="panel-body"> + <h3>Cool stuff:</h3> + <ul> + <li>Click a switch for more info</li> + <li>Rewind: You can check out state at a specific time or + replay from the beginning of the event. Only works for + data where we keep time-series (so not for + comments)</li> + <li>Press '?' to toggle the menu.</li> + <li>Auto-scaling the viewport/canvas</li> + <li>Total client speed (up right)</li> + <li>Generic(-ish) map handlers: provide a name, init-function + and an update-function and the nms lib does the rest as far as + integration goes.</li> + </ul> + <h3>Todo list front end:</h3> + <ul> + <li>Polish time travel UI (Allow playing from a given time at a given speed, play/pause buttons, etc)</li> + <li>Better "popup" boxes: It's growing out of control.</li> + <li>Toggle auto-scale on/off</li> + <li>Clean up various global variables</li> + <li>Create name spaces in nms.*: It's just barely better + than global stuff now.</li> + <li>Add DHCP map</li> + <li>More info on switches: Port state, possibly link time + trends</li> + <li>Moving switches around (like ping.html + edit)</li> + <li>Split nms.js into multiple components to unclutter the + code</li> + <li>Comments: Fix UTF8 garbligash caused by $dbh->quote()</li> + </ul> + <h3>Todo for backend:</h3> + <ul> + <li>IPv6 support</li> + <li>Provide public API's</li> + <li>Investigate a json tree filter/massager</li> + <li>Close SQL injections (IT'S WIDE OPEN BECAUSE WHY NOT THAT'S NEVER A PROBLEM)</li> + <li>Split port-state.pl into multiple appropriate pieces. Right + it mixes heavy time-critical data with less time-critical and + cheap computation.</li> + <li>Rip comments out of port-state.pl completely so it's not + bound by the same cache issues and can be reliably + refreshed.</li> + <li>Consider time log of DHCP (right now it just stores the + most recent timestamp, making time travel impossible)</li> + <li>Fix SNMP-fetcher so it gets ifXTable and at least + ifOperStatus from ifTable. Don't request the entire + ifXTable if we can avoid it. Possibly other + tweaks.</li> + <li>Support for adding switches through an API, not just pure SQL.</li> + <li>Integrate with FAP</li> + <li>Clean up old interfaces</li> + <li>Review various agents/tools</li> + <li>Improve cache headers</li> + <li>Cache invalidation of comments? (Probably not needed)</li> + <li>Re-test the SQL schema. It's been modified and works fine + on my laptop, but I need to dump it, commit it and test it.</li> + <li>Munin plugin for ports.</li> + </ul> + </div> + </div> + </div> + <div id="blurManic" class="panel panel-default" style="display: none; position: absolute; z-index: 100;"> + <div class="panel-heading"> + <h1 class="panel-title">Blur tweaks + <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('blurManic').style.display = 'none';" style="float: right;"> + <span aria-hidden="true">×</span> + </button> + </h1> + </div> + <div class="panel-body"> + <div class="form"> + <div class="form-group"> + <label for="shadowBlur">Blur strength</label> + <input type="number" id="shadowBlur" class="form-control"> + </div> + <div class="form-group"> + <label for="shadowColor">Blur color</label> + <input type="color" id="shadowColor" class="form-control"> + </div> + <button type="button" class="btn btn-default" onclick="applyBlur();">Apply</button> + </div> + </div> + </div> + </div> + <div id="debugTimers" class="panel panel-default" style="display: none; position: absolute; z-index: 100;"> + <div class="panel-heading"> + <h1 class="panel-title">Debug timers (e.g.: Break stuff! FAST!) + <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('debugTimers').style.display = 'none';" style="float: right;"> + <span aria-hidden="true">×</span> + </button> + </h1> + </div> + <div id="timerTableTop" class="panel-body"> + <p>These are internal timers for the NMS frontend. They are + provided mainly to debug the frontend. Setting AJAX-triggering + counters to ridiculous numbers is not advised (mainly because + it causes server load).</p> + </div> + <table id="timerTable"> </table> + </div> + <div id="layerVisibility" class="panel panel-default" style="display: none; position: absolute; z-index: 100;"> + <div class="panel-heading"> + <h1 class="panel-title">Set layer visibility + <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('layerVisibility').style.display = 'none';" style="float: right;"> + <span aria-hidden="true">×</span> + </button> + </h1> + </div> + <div class="panel-body"> + <table id="visibilityTable" class="table"> + <tr> + <td>Background</td> + <td> + <button onclick='hideLayer("bgCanvas");'>Hide</button> + <button onclick='showLayer("bgCanvas");'>Show</button> + </td> + </tr> + <tr> + <td>Linknets</td> + <td> + <button onclick='hideLayer("linkCanvas");'>Hide</button> + <button onclick='showLayer("linkCanvas");'>Show</button> + </td> + </tr> + <tr> + <td>Blur</td> + <td> + <button onclick='hideLayer("blurCanvas");'>Hide</button> + <button onclick='showLayer("blurCanvas");'>Show</button> + </td> + </tr> + <tr> + <td>Switches</td> + <td> + <button onclick='hideLayer("switchCanvas");'>Hide</button> + <button onclick='showLayer("switchCanvas");'>Show</button> + </td> + </tr> + <tr> + <td>Text</td> + <td> + <button onclick='hideLayer("textCanvas");'>Hide</button> + <button onclick='showLayer("textCanvas");'>Show</button> + </td> + </tr> + <tr> + <td>TextInfo</td> + <td> + <button onclick='hideLayer("textInfoCanvas");'>Hide</button> + <button onclick='showLayer("textInfoCanvas");'>Show</button> + </td> + </tr> + <tr> + <td>Timestamp</td> + <td> + <button onclick='hideLayer("topCanvas");'>Hide</button> + <button onclick='showLayer("topCanvas");'>Show</button> + </td> + </tr> + </table> + </div> + </div> - <br /> + <canvas id="bgCanvas" width="1920" height="1032" style="position: absolute; z-index: 1;"> </canvas> + <canvas id="linkCanvas" width="1920" height="1032" style="position: absolute; z-index: 10;"> </canvas> + <canvas id="blurCanvas" width="1920" height="1032" style="position: absolute; z-index: 20;"> </canvas> + <canvas id="switchCanvas" width="1920" height="1032" style="position: absolute; z-index: 30;"> </canvas> + <canvas id="textCanvas" width="1920" height="1032" style="position: absolute; z-index: 40;"> </canvas> + <canvas id="textInfoCanvas" width="1920" height="1032" style="position: absolute; z-index: 45;"> </canvas> + <canvas id="topCanvas" width="1920" height="1032" style="position: absolute; z-index: 50;"> </canvas> + <canvas id="inputCanvas" width="1920" height="1032" style="position: absolute; z-index: 60; cursor: pointer;" onclick="canvasClick(event)"> + </canvas> + <canvas id="hiddenCanvas" width="1000" height="10" style="display: none; position: absolute; z-index: 1000 "></canvas> - <li><a href="edit.html">Rediger kartet</a> - <br /><i>Dra rundt på switcher. Wheeee!</i> - </li> - </ul> + <div style="display:none;"><img id="source" src="img/tg15-salkart-clean-big.png" ></div> + </div> + </div><!--/.fluid-container--> + <script src="js/jquery.min.js" type="text/javascript"></script> + <script src="js/bootstrap.min.js" type="text/javascript"></script> + <script type="text/javascript" src="js/nms.js"></script> + <script type="text/javascript" src="js/nms-color-util.js"></script> + <script type="text/javascript" src="js/nms-map-handlers.js"></script> + <script type="text/javascript"> +initNMS(); + </script> </body> </html> diff --git a/web/nms.gathering.org/nms2/js/bootstrap.js b/web/nms.gathering.org/js/bootstrap.js index 1c88b71..1c88b71 100644 --- a/web/nms.gathering.org/nms2/js/bootstrap.js +++ b/web/nms.gathering.org/js/bootstrap.js diff --git a/web/nms.gathering.org/nms2/js/bootstrap.min.js b/web/nms.gathering.org/js/bootstrap.min.js index c8f82e5..c8f82e5 100644 --- a/web/nms.gathering.org/nms2/js/bootstrap.min.js +++ b/web/nms.gathering.org/js/bootstrap.min.js diff --git a/web/nms.gathering.org/nms2/js/jquery.min.js b/web/nms.gathering.org/js/jquery.min.js index e6a051d..e6a051d 100644 --- a/web/nms.gathering.org/nms2/js/jquery.min.js +++ b/web/nms.gathering.org/js/jquery.min.js diff --git a/web/nms.gathering.org/nms2/js/nms-color-util.js b/web/nms.gathering.org/js/nms-color-util.js index 72d6f61..72d6f61 100644 --- a/web/nms.gathering.org/nms2/js/nms-color-util.js +++ b/web/nms.gathering.org/js/nms-color-util.js diff --git a/web/nms.gathering.org/nms2/js/nms-map-handlers.js b/web/nms.gathering.org/js/nms-map-handlers.js index ddb50a1..ddb50a1 100644 --- a/web/nms.gathering.org/nms2/js/nms-map-handlers.js +++ b/web/nms.gathering.org/js/nms-map-handlers.js diff --git a/web/nms.gathering.org/nms2/js/nms.js b/web/nms.gathering.org/js/nms.js index 27e4684..90532e6 100644 --- a/web/nms.gathering.org/nms2/js/nms.js +++ b/web/nms.gathering.org/js/nms.js @@ -725,7 +725,7 @@ function updatePing() nms.outstandingAjaxRequests++; $.ajax({ type: "GET", - url: "/ping-json2.pl" + now, + url: "/ping.pl" + now, dataType: "text", success: function (data, textStatus, jqXHR) { nms.ping_data = JSON.parse(data); @@ -791,7 +791,7 @@ function addComment(sw,comment) }; $.ajax({ type: "POST", - url: "/switch-comment.pl", + url: "/comment-add.pl", dataType: "text", data:myData, success: function (data, textStatus, jqXHR) { @@ -839,12 +839,12 @@ function updatePorts() }); now=""; if (nms.now != false) - now = "&now=" + nms.now; + now = "?now=" + nms.now; nms.outstandingAjaxRequests++; updateAjaxInfo(); $.ajax({ type: "GET", - url: "/port-state.pl?time=5m" + now, + url: "/port-state.pl" + now, dataType: "text", success: function (data, textStatus, jqXHR) { var switchdata = JSON.parse(data); @@ -1688,7 +1688,12 @@ function saveSettings() function restoreSettings() { - var retrieve = JSON.parse(atob(getCookie("nms"))); + try { + var retrieve = JSON.parse(atob(getCookie("nms"))); + } catch(e) { + console.log("nothing saved"); + } + for (var v in retrieve) { nms[v] = retrieve[v]; } diff --git a/web/nms.gathering.org/nms2/js/npm.js b/web/nms.gathering.org/js/npm.js index bf6aa80..bf6aa80 100644 --- a/web/nms.gathering.org/nms2/js/npm.js +++ b/web/nms.gathering.org/js/npm.js diff --git a/web/nms.gathering.org/nms2/index.html b/web/nms.gathering.org/nms2/index.html deleted file mode 100644 index 111dd52..0000000 --- a/web/nms.gathering.org/nms2/index.html +++ /dev/null @@ -1,527 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> - <meta name="description" content=""> - <meta name="author" content=""> - <link rel="icon" href="../../favicon.ico"> - - <title>NMS2</title> - - <!-- Bootstrap core CSS --> - <link href="css/bootstrap.min.css" rel="stylesheet"> - - <!-- Custom styles for this template --> - <link href="css/navbar-static-top.css" rel="stylesheet"> - - <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> - <!--[if lt IE 9]> - <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> - <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> - <![endif]--> - <style type="text/css"> - canvas { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - outline: none; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); /* mobile webkit */ - } - </style> - </head> - - <body id="body"> - <nav class="navbar navbar-default navbar-static-top"> - <div class="container-fluid"> - <div class="navbar-header"> - <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> - <span class="sr-only">Toggle navigation</span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - </div> - <div id="navbar" class="navbar-collapse collapse"> - <ul class="nav navbar-nav"> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Menu - <span class="caret"></span> - </a> - <ul class="dropdown-menu" role="menu"> - <li><a href="#ping" onclick="setUpdater(handler_ping)">Ping map</a></li> - <li><a href="#uplink" onclick="setUpdater(handler_uplinks)">Uplink map</a></li> - <li><a href="#temp" onclick="setUpdater(handler_temp)">Temperature map</a></li> - <li><a href="#traffic" onclick="setUpdater(handler_traffic)">Traffic map</a></li> - <li><a href="#comment" onclick="setUpdater(handler_comment)">Comment spotter</a></li> - <li><a href="#traffictot" onclick="setUpdater(handler_traffic_tot)">Total switch traffic</a></li> - <li><a href="#disco" onclick="setUpdater(handler_disco)">DISCO</a></li> - <li class="divider"> </li> - <li><a href="#" onclick="toggleLayer('nowPickerBox');document.getElementById('nowPicker').focus();">Travel in time</a></li> - <li><a href="#" onclick="startReplay();" title="Replay from opening 120 minutes per second">Replay TG</a></li> - <li class="divider"> </li> - <li class="dropdown-header">View</li> - <li><a href="#" onclick="toggleNightMode()">Toggle Night Mode</a></li> - <li><a href="#" onclick="showBlurBox()">Tweak Night Mode blur</a></li> - <li><a href="#" onclick='showLayer("layerVisibility");'>Set layer visibility</a></li> - <li class="divider"> </li> - <li class="dropdown-header">Map scale</li> - <li><a href="#"><label id="scaler-text" for='scaler'></label><input type="range" id="scaler" name="points" min="0.2" max="3" step="0.01" onchange="scaleChange()" /></a></li> - <li class="divider"> </li> - <li class="dropdown-header">Help</li> - <li><a href="#" onclick="toggleLayer('aboutData');">About TG15 data</a></li> - <li><a href="#" onclick="toggleLayer('aboutBox');" >About NMS</a></li> - <li><a href="#" onclick="toggleLayer('aboutPerformance');" >About Performance</a></li> - <li><a href="#" onclick="toggleLayer('aboutKeybindings');" >Keyboard Shortcuts</a></li> - <li><a onclick="showTimerDebug(); hideSwitch();" style="cursor: pointer;" >Debug timers</a></li> - </ul> - </li> - <li><p id="updater_name" class="navbar-text"></p></li> - <div class="navbar-form navbar-left"> - <div class="form-group"> - <button class="btn btn-default btn-xs" id="legend-1"></button> - <button class="btn btn-default btn-xs" id="legend-2"></button> - <button class="btn btn-default btn-xs" id="legend-3"></button> - <button class="btn btn-default btn-xs" id="legend-4"></button> - <button class="btn btn-default btn-xs" id="legend-5"></button> - </div> - </div> - </li> - </ul> - <ul class="nav navbar-nav navbar-right"> - <li><p id="speed" class="navbar-text" title="Client port speed / Total port speed"></p></li> - </ul> - </div><!--/.nav-collapse --> - </div> - </nav> - - <div class="container-fluid"> - - <div class="row-fluid"> - <div class="span12"> - <div id="aboutData" class="col-md-4" style="position: absolute; display:none; z-index: 130;"> - <div id="abotData" class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">About the TG15 data - <button type="button" class="close" aria-label="Close" onclick="document.getElementById('aboutData').style.display = 'none';" style="float: right"> - <span aria-hidden="true">×</span> - </button> - </h3> - </div> - <div class="panel-body"> - <p>The data you see from The Gathering 2015 will seem - "broken up". This is not because we don't have data from - the first day, but because the backend was re-written on - day 1/2 and this web app only uses the new API.</p> - <p>NMS was set up on March 30th (Monday). Data started - pouring in on the same day. </p> - <p>Ping data is available for the entire event with 1 - second resolution. We "lost" data from the 30th because we - re-inserted the switches (We have the ping data, but not - the mapping between switch ID number and actual - switch).</p> - <p>DHCP data is available only for the last detected DHCP - ack (no history, except extensive text-based logs)</p> - <p>Uplink status is available for most of the event, but - not exposed here. We only expose traffic-based uplink state - here, which, again, is based on the new API.</p> - <p>Traffic status was temporarily bugged, but is available - from late on day 2.</p> - <p>Temperature data is available from day 2.</p> - <p>Plans are being made to ensure that we don't have gaps - like these in the future.</p> - <p>It is also worth mentioning that things like switch - positions are not logged historically, so you see the final - position on the map.</p> - </div> - </div> - </div> - <div id="aboutPerformance" class="col-md-4" style="position: absolute; display:none; z-index: 130;"> - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Performance - <button type="button" class="close" aria-label="Close" onclick="document.getElementById('aboutPerformance').style.display = 'none';" style="float: right"> - <span aria-hidden="true">×</span> - </button> - </h3> - </div> - <table class="table"> - <tr> - <td>Outstanding AJAX requests</td> - <td id="outstandingAJAX"></td> - </tr> - <tr> - <td>Overflowed AJAX requests</td> - <td id="overflowAJAX"></td> - </tr> - </table> - <div class="panel-body"> - <p>NMS performance is surprisingly complex. It's split into - several parts and dealt with differently.</p> - <p>Poller performance is a matter of efficiently collecting - data and is mostly handled in the Perl code (and ensuring - we use sensible database schemas).</p> - <p>Backend performance for the GUI is mostly about not - killing the database server. We do NOT try to protect - against malicious clients directly, since this is a - management system not public-facing, but Varnish is used to - cache requests. To be able to do that properly, we need use - absolute time when reviewing past events (so "2015-04-02 - 17:30:00", not "2 hours ago"). We've also tried to minimize - the stupidity in the queries. There's still work to be done - here, though, as we need to split up a few large backend - requests (port-state.pl).</p> - <p>Front-end performance is mostly about drawing things - sensibly and not completely bombing the memory usage. And - about gracefully handling slow backends This will affect - you. For example, if you are reviewing past events and the - DB is struggling, we'll simply skip a backend request if we - have too many outstanding requests, that means you may jump - from "17:00" to "18:30" instead of going through - "17:30" and "18:00" too. This is working as intended. It - also means that you can happily spam the forward/backward - keyboard bindings to jump 18 hours forward: You'll overflow - the extra AJAX requests for individual requests, but you'll - land at the right time when you let go. But there could be - a 1 second delay (or more if the backend really struggles) - since you'll have to rely on the periodic backend requests - instead of the explicit ones triggered on hitting a - button.</p> - <p>Note that the counters on top are updated on a timer, - but this timer is set up at the same time as everything - else, which means that it's likely to update at the same - time as we fire off AJAX requests, so the 'outstanding ajax - requests' counter might either show almost constantly 3 or - 0 depending on what timer happens to fire first. This does - NOT mean that NMS has 3 requests all the time, just that - we're checking right after we fire off AJAX requests every - time.</p> - <p>NMS also tries to handle drawing OK, which is why things - are split into different HTML5 canvases. Blur and text are - particularly expensive, but there's no reason to re-paint - that all the time, etc).</p> - <p>The basic performance experiments are done on TG15 data - using a laptop and a VM with 6GB of memory, so it should - hold up quite well on "proper" hardware.</p> - </div> - </div> - </div> - <div id="aboutKeybindings" class="col-md-4" style="position: absolute; display:none; z-index: 130;"> - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Keyboard Shortcuts - <button type="button" class="close" aria-label="Close" onclick="document.getElementById('aboutKeybindings').style.display = 'none';" style="float: right"> - <span aria-hidden="true">×</span> - </button> - </h3> - </div> - <table class="table table-condensed"> - <tr> - <th>Key</th> - <th>Description</th> - </tr> - <tr> - <td>?</td> - <td>Toggle navigation bar</td> - </tr> - <tr> - <td>n</td> - <td>Toggle night mode</td> - </tr> - <tr> - <td>1</td> - <td>View Ping map</td> - </tr> - <tr> - <td>2</td> - <td>View uplink map</td> - </tr> - <tr> - <td>3</td> - <td>View temperature map</td> - </tr> - <tr> - <td>4</td> - <td>View uplink traffic map</td> - </tr> - <tr> - <td>5</td> - <td>View comment spotter map</td> - </tr> - <tr> - <td>6</td> - <td>View total switch traffic map</td> - </tr> - <tr> - <td>7</td> - <td>View Disco map</td> - </tr> - <tr> - <td>h</td> - <td>Step 1 hour back in time</td> - </tr> - <tr> - <td>j</td> - <td>Step 5 minutes back in time</td> - </tr> - <tr> - <td>k</td> - <td>Step 5 minutes forward in time</td> - </tr> - <tr> - <td>l</td> - <td>Step 1 hour forward in time</td> - </tr> - <tr> - <td>p</td> - <td>Toggle playback (1 hour per second)</td> - </tr> - <tr> - <td>r</td> - <td>Return to real time</td> - </tr> - </table> - </div> - </div> - <div id="nowPickerBox" style="position: absolute; display: none; z-index: 130;" class="col-md-4"> - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Time travel - <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('nowPickerBox').style.display = 'none';" style="float: right;"> - <span aria-hidden="true">×</span> - </button> - </h3> - </div> - <div class="panel-body"> - <p>Some features do not have time travel support (comment - spotting and DHCP map at the moment). We also lack - compatible SNMP data for the first day or so, so you'll - only have ping data for the first day of TG15.</p> - <p>It could take some time to load a specific point in time - for the first time. See "About performance" under the help - menu for more information.</p> - <p>You can also step backwards and forwards in time, stop - and start replay and go back to real time using keyboard - shortcuts. See the help menu for an overview of keyboard - shortcuts.</p> - <div class="input-group"> - <input type="text" class="form-control" placeholder="YYYY-MM-DDThh:mm:ss" id="nowPicker"> - <span class="input-group-btn"> - <button class="btn btn-default" onclick="changeNow();">Travel</button> - </span> - </div> - </div> - </div> - </div> - <div style="position: absolute; z-index: 120;" class="col-md-4"> - <div id="info-switch-parent" class="panel panel-default col-d-6" style="display: none; backgroun:silver; position: absolute; z-index: 120;"> - <div class="panel-heading"> - <h3 class="panel-title" id="info-switch-title"></h3> - </div> - <div id="info-switch-panel-body"> - <table class="table" id="info-switch-table"></table> - </div> - </div> - </div> - <div id="aboutBox" class="col-md-4" style="display: none; position: absolute; z-index: 100;"> - <div id="abotBox" class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Welcome to NMS - <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('aboutBox').style.display = 'none';" style="float: right;"> - <span aria-hidden="true">×</span> - </button> - </h3> - </div> - <div class="panel-body"> - <h3>Cool stuff:</h3> - <ul> - <li>Click a switch for more info</li> - <li>Rewind: You can check out state at a specific time or - replay from the beginning of the event. Only works for - data where we keep time-series (so not for - comments)</li> - <li>Press '?' to toggle the menu.</li> - <li>Auto-scaling the viewport/canvas</li> - <li>Total client speed (up right)</li> - <li>Generic(-ish) map handlers: provide a name, init-function - and an update-function and the nms lib does the rest as far as - integration goes.</li> - </ul> - <h3>Todo list front end:</h3> - <ul> - <li>Polish time travel UI (Allow playing from a given time at a given speed, play/pause buttons, etc)</li> - <li>Better "popup" boxes: It's growing out of control.</li> - <li>Toggle auto-scale on/off</li> - <li>Clean up various global variables</li> - <li>Create name spaces in nms.*: It's just barely better - than global stuff now.</li> - <li>Add DHCP map</li> - <li>More info on switches: Port state, possibly link time - trends</li> - <li>Moving switches around (like ping.html + edit)</li> - <li>Split nms.js into multiple components to unclutter the - code</li> - <li>Comments: Fix UTF8 garbligash caused by $dbh->quote()</li> - </ul> - <h3>Todo for backend:</h3> - <ul> - <li>IPv6 support</li> - <li>Provide public API's</li> - <li>Investigate a json tree filter/massager</li> - <li>Close SQL injections (IT'S WIDE OPEN BECAUSE WHY NOT THAT'S NEVER A PROBLEM)</li> - <li>Split port-state.pl into multiple appropriate pieces. Right - it mixes heavy time-critical data with less time-critical and - cheap computation.</li> - <li>Rip comments out of port-state.pl completely so it's not - bound by the same cache issues and can be reliably - refreshed.</li> - <li>Consider time log of DHCP (right now it just stores the - most recent timestamp, making time travel impossible)</li> - <li>Fix SNMP-fetcher so it gets ifXTable and at least - ifOperStatus from ifTable. Don't request the entire - ifXTable if we can avoid it. Possibly other - tweaks.</li> - <li>Support for adding switches through an API, not just pure SQL.</li> - <li>Integrate with FAP</li> - <li>Clean up old interfaces</li> - <li>Review various agents/tools</li> - <li>Improve cache headers</li> - <li>Cache invalidation of comments? (Probably not needed)</li> - <li>Re-test the SQL schema. It's been modified and works fine - on my laptop, but I need to dump it, commit it and test it.</li> - <li>Munin plugin for ports.</li> - </ul> - </div> - </div> - </div> - <div id="blurManic" class="panel panel-default" style="display: none; position: absolute; z-index: 100;"> - <div class="panel-heading"> - <h1 class="panel-title">Blur tweaks - <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('blurManic').style.display = 'none';" style="float: right;"> - <span aria-hidden="true">×</span> - </button> - </h1> - </div> - <div class="panel-body"> - <div class="form"> - <div class="form-group"> - <label for="shadowBlur">Blur strength</label> - <input type="number" id="shadowBlur" class="form-control"> - </div> - <div class="form-group"> - <label for="shadowColor">Blur color</label> - <input type="color" id="shadowColor" class="form-control"> - </div> - <button type="button" class="btn btn-default" onclick="applyBlur();">Apply</button> - </div> - </div> - </div> - </div> - <div id="debugTimers" class="panel panel-default" style="display: none; position: absolute; z-index: 100;"> - <div class="panel-heading"> - <h1 class="panel-title">Debug timers (e.g.: Break stuff! FAST!) - <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('debugTimers').style.display = 'none';" style="float: right;"> - <span aria-hidden="true">×</span> - </button> - </h1> - </div> - <div id="timerTableTop" class="panel-body"> - <p>These are internal timers for the NMS frontend. They are - provided mainly to debug the frontend. Setting AJAX-triggering - counters to ridiculous numbers is not advised (mainly because - it causes server load).</p> - </div> - <table id="timerTable"> </table> - </div> - <div id="layerVisibility" class="panel panel-default" style="display: none; position: absolute; z-index: 100;"> - <div class="panel-heading"> - <h1 class="panel-title">Set layer visibility - <button type="button" class="close" aria-labe="Close" onclick="document.getElementById('layerVisibility').style.display = 'none';" style="float: right;"> - <span aria-hidden="true">×</span> - </button> - </h1> - </div> - <div class="panel-body"> - <table id="visibilityTable" class="table"> - <tr> - <td>Background</td> - <td> - <button onclick='hideLayer("bgCanvas");'>Hide</button> - <button onclick='showLayer("bgCanvas");'>Show</button> - </td> - </tr> - <tr> - <td>Linknets</td> - <td> - <button onclick='hideLayer("linkCanvas");'>Hide</button> - <button onclick='showLayer("linkCanvas");'>Show</button> - </td> - </tr> - <tr> - <td>Blur</td> - <td> - <button onclick='hideLayer("blurCanvas");'>Hide</button> - <button onclick='showLayer("blurCanvas");'>Show</button> - </td> - </tr> - <tr> - <td>Switches</td> - <td> - <button onclick='hideLayer("switchCanvas");'>Hide</button> - <button onclick='showLayer("switchCanvas");'>Show</button> - </td> - </tr> - <tr> - <td>Text</td> - <td> - <button onclick='hideLayer("textCanvas");'>Hide</button> - <button onclick='showLayer("textCanvas");'>Show</button> - </td> - </tr> - <tr> - <td>TextInfo</td> - <td> - <button onclick='hideLayer("textInfoCanvas");'>Hide</button> - <button onclick='showLayer("textInfoCanvas");'>Show</button> - </td> - </tr> - <tr> - <td>Timestamp</td> - <td> - <button onclick='hideLayer("topCanvas");'>Hide</button> - <button onclick='showLayer("topCanvas");'>Show</button> - </td> - </tr> - </table> - </div> - </div> - - <canvas id="bgCanvas" width="1920" height="1032" style="position: absolute; z-index: 1;"> </canvas> - <canvas id="linkCanvas" width="1920" height="1032" style="position: absolute; z-index: 10;"> </canvas> - <canvas id="blurCanvas" width="1920" height="1032" style="position: absolute; z-index: 20;"> </canvas> - <canvas id="switchCanvas" width="1920" height="1032" style="position: absolute; z-index: 30;"> </canvas> - <canvas id="textCanvas" width="1920" height="1032" style="position: absolute; z-index: 40;"> </canvas> - <canvas id="textInfoCanvas" width="1920" height="1032" style="position: absolute; z-index: 45;"> </canvas> - <canvas id="topCanvas" width="1920" height="1032" style="position: absolute; z-index: 50;"> </canvas> - <canvas id="inputCanvas" width="1920" height="1032" style="position: absolute; z-index: 60; cursor: pointer;" onclick="canvasClick(event)"> - </canvas> - <canvas id="hiddenCanvas" width="1000" height="10" style="display: none; position: absolute; z-index: 1000 "></canvas> - - <div style="display:none;"><img id="source" src="img/tg15-salkart-clean-big.png" ></div> - </div> - </div><!--/.fluid-container--> - <script src="js/jquery.min.js" type="text/javascript"></script> - <script src="js/bootstrap.min.js" type="text/javascript"></script> - <script type="text/javascript" src="js/nms.js"></script> - <script type="text/javascript" src="js/nms-color-util.js"></script> - <script type="text/javascript" src="js/nms-map-handlers.js"></script> - <script type="text/javascript"> -initNMS(); - </script> - </body> -</html> diff --git a/web/nms.gathering.org/change-switch-pos.pl b/web/nms.gathering.org/old/change-switch-pos.pl index 70d12f4..70d12f4 100755 --- a/web/nms.gathering.org/change-switch-pos.pl +++ b/web/nms.gathering.org/old/change-switch-pos.pl diff --git a/web/nms.gathering.org/dhcp-json.pl b/web/nms.gathering.org/old/dhcp-json.pl index 210c434..210c434 100755 --- a/web/nms.gathering.org/dhcp-json.pl +++ b/web/nms.gathering.org/old/dhcp-json.pl diff --git a/web/nms.gathering.org/dhcpkart.pl b/web/nms.gathering.org/old/dhcpkart.pl index ace4a4e..ace4a4e 100755 --- a/web/nms.gathering.org/dhcpkart.pl +++ b/web/nms.gathering.org/old/dhcpkart.pl diff --git a/web/nms.gathering.org/display-rack.html b/web/nms.gathering.org/old/display-rack.html index 694bf11..694bf11 100755 --- a/web/nms.gathering.org/display-rack.html +++ b/web/nms.gathering.org/old/display-rack.html diff --git a/web/nms.gathering.org/display.html b/web/nms.gathering.org/old/display.html index bb7c174..bb7c174 100755 --- a/web/nms.gathering.org/display.html +++ b/web/nms.gathering.org/old/display.html diff --git a/web/nms.gathering.org/edit.html b/web/nms.gathering.org/old/edit.html index dff76c7..dff76c7 100644 --- a/web/nms.gathering.org/edit.html +++ b/web/nms.gathering.org/old/edit.html diff --git a/web/nms.gathering.org/old/index.html b/web/nms.gathering.org/old/index.html new file mode 100644 index 0000000..8043c7d --- /dev/null +++ b/web/nms.gathering.org/old/index.html @@ -0,0 +1,115 @@ +<html> + <head> + <title>snmp</title> + </head> + <body> + <p>tg light & magic. :-)</p> + + <ul> + <li><a href="nms2/">NMS 2 NG (Ping, Temp, Uplink, Trafikk, Info)</a> + <br /><i>Trykk på svitsjene (Work in progress)</i> + </li> + <br /> + <li><a href="dhcpkart.pl">DHCP-kart</a> + <br /><i>Oversikt over DHCP-lease etter switch</i> + </li> + + <br /> + + <li><a href="nettkart-text.pl">Nettkart</a> + <br /><i>Trafikkoversikt</i> + </li> + + <br /> +<!-- + + <li><a href="nettkart-telnet.pl">Nettkart</a> + <br /><i>Trafikkoversikt /m telnetlink</i> + </li> + + <br /> +--> +<!-- Kun moderat nyttig når vi har disablet alle webinterfacene... + <li><a href="nettkart-web.pl">Nettkart</a> + <br /><i>Trafikkoversikt /m weblink</i> + </li> + + <br /> +--> + <li><a href="portkart.pl">Nettkart, per port</a> + <br /><i>Trafikkoversikt per port</i> + </li> + + <br /> + + <li><a href="uplinkkart.pl">Uplink-kart</a> + <br /><i>Hvilke switcher har ikke to uplinker</i> + </li> + + <br /> +<!-- + <li><a href="uplinktrafikkart.pl">Uplink-trafikkart</a> + <br /><i>Hvem burde hatt mer enn to uplinker</i> + </li> + + <br /> +--> + <li><a href="stromkart.pl">Strømkart</a> + <br /><i>Hvilke switcher har færre enn fem tilkoblede klienter</i> + </li> + + <br /> +<!-- + <li><a href="apkart.pl">Aksesspunkt-kart</a> + <br /><i>Hvilke aksesspunkter er plugget i</i> + </li> + + <br /> +--> + <!--<li><a href="overlay.pl">Overlay-nettkart</a> + <br /><i>Teh magic 3D!</i> + </li> + + <br /> --> + + <li><a href="smanagement.pl">Kommander switcher</a> + <br /><i>Konfigurer switchene</i> + </li> + + <br /> + + <li><a href="sshow.pl">Utførte og køede kommandoer</a> + <br /><i>Se og håndter kommandoer som er utført og fortsatt i køen</i> + </li> + + <br /> + + <li><a href="stempmap.pl">Temperaturkart</a> + <br /><i>Temperaturkart for switchene</i> + </li> +<!-- + <br /> + <li><a href="mbd-status.pl">MBD-status</a> + <br /><i>Hva spiller folk mest?</i> + </li> +--> + <br /> + + <li><a href="ping.html">Ping-kart</a> + <br /><i>Pinger alle bokser hvert sekund</i> + </li> + + <br /> + + <li><a href="ping2.html">Realtime trafikkart</a> + <br /><i>Som nettkartet, men oppdateres hele tiden</i> + </li> + + <br /> + + <li><a href="edit.html">Rediger kartet</a> + <br /><i>Dra rundt på switcher. Wheeee!</i> + </li> + </ul> + </body> +</html> diff --git a/web/nms.gathering.org/led.pl b/web/nms.gathering.org/old/led.pl index a05041d..a05041d 100755 --- a/web/nms.gathering.org/led.pl +++ b/web/nms.gathering.org/old/led.pl diff --git a/web/nms.gathering.org/mygraph.pl b/web/nms.gathering.org/old/mygraph.pl index 64104aa..64104aa 100755 --- a/web/nms.gathering.org/mygraph.pl +++ b/web/nms.gathering.org/old/mygraph.pl diff --git a/web/nms.gathering.org/nettkart-continuous.html b/web/nms.gathering.org/old/nettkart-continuous.html index e51eea0..e51eea0 100644 --- a/web/nms.gathering.org/nettkart-continuous.html +++ b/web/nms.gathering.org/old/nettkart-continuous.html diff --git a/web/nms.gathering.org/nettkart-json.pl b/web/nms.gathering.org/old/nettkart-json.pl index e95920e..e95920e 100755 --- a/web/nms.gathering.org/nettkart-json.pl +++ b/web/nms.gathering.org/old/nettkart-json.pl diff --git a/web/nms.gathering.org/nettkart-text.pl b/web/nms.gathering.org/old/nettkart-text.pl index 673ade5..673ade5 100755 --- a/web/nms.gathering.org/nettkart-text.pl +++ b/web/nms.gathering.org/old/nettkart-text.pl diff --git a/web/nms.gathering.org/nettkart-web.pl b/web/nms.gathering.org/old/nettkart-web.pl index ce76c35..ce76c35 100755 --- a/web/nms.gathering.org/nettkart-web.pl +++ b/web/nms.gathering.org/old/nettkart-web.pl diff --git a/web/nms.gathering.org/nettkart.pl b/web/nms.gathering.org/old/nettkart.pl index bf3bf74..bf3bf74 100755 --- a/web/nms.gathering.org/nettkart.pl +++ b/web/nms.gathering.org/old/nettkart.pl diff --git a/web/nms.gathering.org/observium.html b/web/nms.gathering.org/old/observium.html index a4acd16..a4acd16 100755 --- a/web/nms.gathering.org/observium.html +++ b/web/nms.gathering.org/old/observium.html diff --git a/web/nms.gathering.org/ping-json.pl b/web/nms.gathering.org/old/ping-json.pl index e661e8f..e661e8f 100755 --- a/web/nms.gathering.org/ping-json.pl +++ b/web/nms.gathering.org/old/ping-json.pl diff --git a/web/nms.gathering.org/ping.css b/web/nms.gathering.org/old/ping.css index 1045a4a..1045a4a 100644 --- a/web/nms.gathering.org/ping.css +++ b/web/nms.gathering.org/old/ping.css diff --git a/web/nms.gathering.org/ping.html b/web/nms.gathering.org/old/ping.html index 1c3c3e0..1c3c3e0 100644 --- a/web/nms.gathering.org/ping.html +++ b/web/nms.gathering.org/old/ping.html diff --git a/web/nms.gathering.org/ping.js b/web/nms.gathering.org/old/ping.js index 7c5de57..7c5de57 100644 --- a/web/nms.gathering.org/ping.js +++ b/web/nms.gathering.org/old/ping.js diff --git a/web/nms.gathering.org/ping2.html b/web/nms.gathering.org/old/ping2.html index 05ed129..05ed129 100644 --- a/web/nms.gathering.org/ping2.html +++ b/web/nms.gathering.org/old/ping2.html diff --git a/web/nms.gathering.org/portkart.pl b/web/nms.gathering.org/old/portkart.pl index ce7dcdd..ce7dcdd 100755 --- a/web/nms.gathering.org/portkart.pl +++ b/web/nms.gathering.org/old/portkart.pl diff --git a/web/nms.gathering.org/showswitch.pl b/web/nms.gathering.org/old/showswitch.pl index e585841..e585841 100755 --- a/web/nms.gathering.org/showswitch.pl +++ b/web/nms.gathering.org/old/showswitch.pl diff --git a/web/nms.gathering.org/slide.html b/web/nms.gathering.org/old/slide.html index 046020d..046020d 100644 --- a/web/nms.gathering.org/slide.html +++ b/web/nms.gathering.org/old/slide.html diff --git a/web/nms.gathering.org/smanagement.pl b/web/nms.gathering.org/old/smanagement.pl index 485e2b0..485e2b0 100755 --- a/web/nms.gathering.org/smanagement.pl +++ b/web/nms.gathering.org/old/smanagement.pl diff --git a/web/nms.gathering.org/sshow.pl b/web/nms.gathering.org/old/sshow.pl index 64663a2..64663a2 100755 --- a/web/nms.gathering.org/sshow.pl +++ b/web/nms.gathering.org/old/sshow.pl diff --git a/web/nms.gathering.org/stempmap.pl b/web/nms.gathering.org/old/stempmap.pl index ccd44fd..ccd44fd 100755 --- a/web/nms.gathering.org/stempmap.pl +++ b/web/nms.gathering.org/old/stempmap.pl diff --git a/web/nms.gathering.org/stromkart.pl b/web/nms.gathering.org/old/stromkart.pl index c0e4a3d..c0e4a3d 100755 --- a/web/nms.gathering.org/stromkart.pl +++ b/web/nms.gathering.org/old/stromkart.pl diff --git a/web/nms.gathering.org/switches-json.pl b/web/nms.gathering.org/old/switches-json.pl index 74f4e5f..74f4e5f 100755 --- a/web/nms.gathering.org/switches-json.pl +++ b/web/nms.gathering.org/old/switches-json.pl diff --git a/web/nms.gathering.org/uplinkkart-text.pl b/web/nms.gathering.org/old/uplinkkart-text.pl index c4b31a9..c4b31a9 100755 --- a/web/nms.gathering.org/uplinkkart-text.pl +++ b/web/nms.gathering.org/old/uplinkkart-text.pl diff --git a/web/nms.gathering.org/uplinkkart.pl b/web/nms.gathering.org/old/uplinkkart.pl index 052fe9c..052fe9c 100755 --- a/web/nms.gathering.org/uplinkkart.pl +++ b/web/nms.gathering.org/old/uplinkkart.pl diff --git a/web/nms.gathering.org/uplinktrafikkart.pl b/web/nms.gathering.org/old/uplinktrafikkart.pl index 97000cf..97000cf 100755 --- a/web/nms.gathering.org/uplinktrafikkart.pl +++ b/web/nms.gathering.org/old/uplinktrafikkart.pl diff --git a/web/nms.gathering.org/ping-json2.pl b/web/nms.gathering.org/ping.pl index 2ffe650..2ffe650 100755 --- a/web/nms.gathering.org/ping-json2.pl +++ b/web/nms.gathering.org/ping.pl |