Advertisement
ansun

Untitled

Oct 29th, 2024
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 11.76 KB | Software | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.     <head>
  4.         <style type="text/css">
  5.             .hidden { display:none; }
  6.         </style>
  7.         <script src="./js/jquery.min.js"></script>
  8.         <script type="text/javascript">
  9.             $('html').addClass('hidden');
  10.         </script>
  11.         <meta charset="utf-8">
  12.         <meta http-equiv="X-UA-Compatible" content="IE=edge">
  13.         <meta name="viewport" content="width=device-width, initial-scale=1">
  14.         <link rel="icon" href="./images/favicon.ico">
  15.         <title>Home: GeoSync</title>
  16.         <link href="./bootstrap/css/bootstrap.min.css" rel="stylesheet">
  17.         <link href="./css/offcanvas.css" rel="stylesheet">
  18.         <link href="./css/style.css" rel="stylesheet">
  19.                     <link href="./css/checkbox.css" rel="stylesheet">
  20.                     </head>
  21.     <body>
  22.         <script src="./bootstrap/js/bootstrap.min.js"></script>
  23.         <script src="./js/common.js"></script>
  24.         <div class="modal" id="popUpModal" tabindex="-1" role="dialog" style="display:none;">
  25.     <div class="modal-dialog" role="document">
  26.         <div class="modal-content">
  27.             <div class="modal-header">
  28.                 <h4 class="modal-title" id="popUpModalTitle">Pop-Up Thingie</h4>
  29.             </div>
  30.             <div class="modal-body" id="popUpModalBody"></div>
  31.             <div class="modal-footer">
  32.                 <button type="button" class="btn btn-default" id="popUpModalCloseButton">Close</button>
  33.                 <button type="button" class="btn btn-primary" id="popUpModalActionButton" hidden>Submit</button>
  34.             </div>
  35.         </div>
  36.     </div>
  37. </div>
  38. <nav class="navbar navbar-default navbar-fixed-top">
  39.     <div class="container">
  40.         <div class="navbar-header">
  41.             <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
  42.                 <span class="sr-only">Sidebar</span>
  43.                 <span class="icon-bar"></span>
  44.                 <span class="icon-bar"></span>
  45.                 <span class="icon-bar"></span>
  46.             </button>
  47.             <a class="navbar-brand" href="./">🌐</a>
  48.         </div>
  49.         <div id="navbar" class="collapse navbar-collapse">
  50.             <ul class="nav navbar-nav">
  51.                                 <li>
  52.                                             <a class="dropdown-item" href="./?page=000-home.xjs">
  53.                                                 Home                        </a>
  54.                 </li>
  55.                 <li>
  56.                                             <a class="dropdown-item" href="./?page=001-forum.ssjs">
  57.                                                 Forum                        </a>
  58.                 </li>
  59.                 <li>
  60.                                             <a class="dropdown-item" href="./?page=002-files.xjs">
  61.                                                 Files                        </a>
  62.                 </li>
  63.             </ul>
  64.             <ul class="nav navbar-nav navbar-right">
  65.                
  66.                 <li class="nav-item dark-switch">
  67.                     <div class="form-group">
  68.                         <div class="checkbox checbox-switch darkswitchbox">
  69.                             <label>
  70.                                 <input type="checkbox" id="darkSwitch"  />Dark
  71.                                 <span></span>
  72.                             </label>
  73.                         </div>
  74.                     </div>
  75.                 </li>
  76.                
  77.                                                             <li>
  78.                             <a href="./?page=000-register.xjs">Register</a>
  79.                         </li>
  80.                                         <li class="nav-item dropdown">
  81.                         <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
  82.                             Log in                            <span class="caret"></span>
  83.                         </a>
  84.                         <div id="login-form" class="dropdown-menu" style="padding:15px; padding-bottom:0px;">
  85.                             <form id="form-login">
  86.                                 <label for="input-username" class="sr-only">Username</label>
  87.                                 <input id="input-username" title="Username" type="text" class="dropdown form-control" placeholder="Username">
  88.                                 <label for="input-password" class="sr-only">Password</label>
  89.                                 <input id="input-password" title="Password" type="password" class="dropdown form-control" placeholder="Password">
  90.                                 <input id="button-login" class="dropdown btn btn-primary" type="submit" value="Log in">
  91.                             </form>
  92.                         </div>
  93.                     </li>
  94.                             </ul>
  95.         </div>
  96.     </div>
  97. </nav>
  98.         <div class="container">
  99.             <div class="row row-offcanvas row-offcanvas-right">
  100.                                 <div class="col-xs-12 col-sm-9">
  101.                     <div style="clear:both;">
  102.                     <p class="pull-right visible-xs">
  103.                         <button title="Toggle sidebar" type="button" class="btn btn-primary btn-xs" data-toggle="offcanvas">
  104.                             <span class="glyphicon glyphicon-tasks"></span>Sidebar                      </button>
  105.                     </p>
  106.                     </div>
  107.                     <!--Home-->
  108. <!-- fTelnet -->
  109.         <div id="fTelnetContainer" class="fTelnetContainer"></div>
  110.                     <style>.fTelnetStatusBar { display : none; }</style>
  111.             <div class="row">
  112.                 <div class="center-block" style="width:200px;margin-bottom:1em;margin-top:1em;">
  113.                     <button id="ftelnet-connect" class="btn btn-primary">
  114.                         Connect via Telnet                    </button>
  115.                 </div>
  116.             </div>
  117.                 <script id="fTelnetScript" src="//embed-v2.ftelnet.ca/ftelnet/ftelnet.norip.noxfer.min.js?v=2024-08-24"></script>
  118.         <script>
  119.             window.addEventListener('load', (event) => {
  120.                 var wsp = 1123;
  121.                 var wssp = 11235;
  122.                 var Options = new fTelnetOptions();
  123.                 Options.BareLFtoCRLF = false;
  124.                 Options.BitsPerSecond = 57600;
  125.                 Options.ButtonBarVisible = true;
  126.                 Options.ConnectionType = 'telnet';
  127.                 Options.Emulation = 'ansi-bbs';
  128.                 Options.Enter = '\r';
  129.                 Options.Font = 'CP437';
  130.                 Options.ForceWss = false;
  131.                 Options.Hostname = '127.0.0.1';
  132.                 Options.LocalEcho = false;
  133.                 Options.Port = location.protocol == 'https:' ? wssp : wsp;
  134.                 Options.ScreenColumns = 80;
  135.                 Options.ScreenRows = 25;
  136.                 Options.SplashScreen = 'ICAgICAgICAgICAgICAgICAgICAgX18gICAgIF9fICBfX19fICAgIF9fXyAgICAgL3wgICAgICAgICAgX18gDQogICAgICAgICAgICAgICAgICAgIC8gICAgICAvICAgfCAgIC98ICAvICAgIHwgIC8gfFwgICB8ICAgIC8gICANCiAgICAgICAgICAgICAgICAgICAvIF9fICAgL19fICB8ICAvIHwgL19fX18gfCAvICB8IFwgIHwgICAvICAgIA0KICAgICAgICAgICAgICAgICAgLyAgIHwgIC8gICAgIHwgLyAgfCAgICAgLyB8LyAgIHwgIFwgfCAgLyAgICAgDQogICAgICAgICAgICAgICAgIC9fX19ffCAvX19fX18gfC9fX198IF9fXy8gIHwgICAgICAgIFx8IC9fX19fXyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwNCg0KICAgICAgICAgICAgICAgICAgICAgICAgQ09NTVVOSUNBVEUgLyBDT09SRElOQVRFIC8gQUNUDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUxDT01FIFRPIEdFT1NZTkMhDQoNCkNyZWF0ZSBhbiBhY2NvdW50IGF0IGdlby5zeW5jaHJvLm5ldCBhbmQgZ2V0IGEgZnJlZSBkaWdpdGFsbHktc2VjdXJlIGVtYWlsDQphZGRyZXNzLiBZb3UnbGwgYWxzbyBnZXQgYWNjZXNzIHRvIG91ciBtYW55IGRpc2N1c3Npb24gZ3JvdXBzLCBmaWxlcyBzZWN0aW9uDQphbmQgbW9yZSENCg0KQ2hlY2sgb3V0IG91ciBsaXZlIHN0cmVhbSBjaGFubmVsIGF0IGh0dHBzOi8vdmF1Z2huLmxpdmUvdGhlb3JhY2xlY2hhbm5lbA0KDQpJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zLCB0aGVuIGVtYWlsIHVzIGF0IHN5c29wQGdlby5zeW5jaHJvLm5ldCENCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVQgU1lOQ0hFRCE=';
  137.                 var fTelnet = new fTelnetClient('fTelnetContainer', Options);
  138.                 fTelnet.ButtonBarVisible = true;
  139.                 if ($('#ftelnet-connect').length) {
  140.                     $('#ftelnet-connect').click(function() {
  141.                         fTelnet.Connect();
  142.                     });
  143.                 }
  144.             });
  145.         </script>
  146. <!-- end fTelnet -->
  147.                 </div>
  148.                             <div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar"><ul class="list-group"><li class="list-group-item sidebar"><h4>
  149.     Who's Online</h4>
  150. <div id="sbbs-nodelist"></div>
  151. <script type="text/javascript">
  152.     const anl = true;
  153.     const nch = 'Via';
  154.     const nll = 4;
  155.     var niu = 0;
  156.     function _sb_nodelist(evt) {
  157.         const data = JSON.parse(evt.data);
  158.         $('#sbbs-nodelist').parent().addClass('hidden');
  159.         $('#sbbs-nodelist').addClass('hidden');
  160.         $('#sbbs-nodelist').html(
  161.             '<table id="sbbs-nodelist-table" class="table table-condensed table-responsive table-striped">' +
  162.             '<thead><tr>' +
  163.             '<th>' + nch + '</th>' +
  164.             '<th>Status</th>' +
  165.             '</tr></thead>' +
  166.             '<tbody></tbody>' +
  167.             '</table>'
  168.         );
  169.         niu = 0;
  170.         var ns = data.reduce((a, c) => {
  171.             if (anl && (c.action === null || c.user === null)) return a;
  172.             $('#sbbs-nodelist-table').append(
  173.                 '<tr>' +
  174.                     '<th scope="row">' +
  175.                         (anl ? c.connection : (typeof c.node == 'number' ? c.node : c.connection)) +
  176.                     '</th>' +
  177.                     `<td id="nodelist-${c.node}">` +
  178.                         (c.user ? `<strong>${c.user}</strong> ${c.action}` : c.status) +
  179.                     '</td>' +
  180.                 '</tr>'
  181.             );
  182.             if (c.user && false) {
  183.                 $(`#nodelist-${c.node}`).attr('title', 'Send a telegram');
  184.                 $(`#nodelist-${c.node}`).css('cursor', 'pointer');
  185.                 $(`#nodelist-${c.node}`).click(() => sendTelegram(c.user));
  186.             }
  187.             if (typeof c.node == 'number' && c.user != '') niu++;
  188.             return a + 1;
  189.         }, 0);
  190.         if (ns) {
  191.             $('#sbbs-nodelist').parent().removeClass('hidden');
  192.             $('#sbbs-nodelist').removeClass('hidden');
  193.         }
  194.         // Spans with these classes are used in the 'system stats' sidebar module.
  195.         // Update the nodes in use / available counters there.
  196.         $('#sidebar').find('.sb-nodes-in-use').text(niu);
  197.         $('#sidebar').find('.sb-nodes-available').text(nll - niu);
  198.     }
  199.     registerEventListener('nodelist', _sb_nodelist);
  200. </script>
  201. </li><li class="list-group-item sidebar"></li><li class="list-group-item sidebar"><h4>System Info</h4>
  202. <table class="table table-condensed table-responsive table-striped">
  203.     <tbody>
  204.         <tr>
  205.             <th scope="row">Sysop:</th>
  206.             <td>SYS64738</td>
  207.         </tr>
  208.         <tr>
  209.             <th scope="row">Location:</th>
  210.             <td>USA</td>
  211.         </tr>
  212.         <tr>
  213.             <th scope="row">Users:</th>
  214.             <td>3</td>
  215.         </tr>
  216.         <tr>
  217.             <th scope="row">Nodes:</th>
  218.       <td>
  219.         4        (<span title="In use" class="text-danger sb-nodes-in-use">0</span>
  220.          /
  221.          <span title="Available" class="text-success sb-nodes-available">4</span>)
  222.       </td>
  223.         </tr>
  224.         <tr>
  225.             <th scope="row">Uptime:</th>
  226.             <td>01:40:27</td>
  227.         </tr>
  228.         <tr>
  229.             <th scope="row">Calls:</th>
  230.             <td>0</td>
  231.         </tr>
  232.                 <tr>
  233.             <th scope="row">Files:</th>
  234.             <td>885</td>
  235.         </tr>
  236.                         <tr>
  237.             <th scope="row">Messages:</th>
  238.             <td>9,512</td>
  239.         </tr>
  240.             </tbody>
  241. </table>
  242. </li></ul></div>
  243.             </div>
  244.             <hr>
  245.             <footer>
  246.                 <p>&copy; GeoSync, 2024</p>
  247.             </footer>
  248.         </div>
  249.         <script src="./js/offcanvas.js"></script>
  250.         <script>
  251.             $('.dropdown-menu a.dropdown-toggle').on('click', function (e) {
  252.                 if (!$(this).next().hasClass('show')) {
  253.                     $(this).parents('.dropdown-menu').first().find('.show').removeClass("show");
  254.                 }
  255.                 var $subMenu = $(this).next(".dropdown-menu");
  256.                 $subMenu.toggleClass('show');
  257.                 $(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function (e) {
  258.                     $('.dropdown-submenu .show').removeClass("show");
  259.                 });
  260.                 return false;
  261.             });
  262.         </script>
  263.     </body>
  264. </html>
  265.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement