Merge pull request #75 from dr-dolomite/QuecManager
QuecManager Home for RM551E
This commit is contained in:
268
www/about.html
Normal file
268
www/about.html
Normal file
@@ -0,0 +1,268 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
|
||||
<!-- Logo -->
|
||||
<link rel="logo" href="favicon.ico" />
|
||||
|
||||
<link rel="stylesheet" href="css/bulma/bulma.scss">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.css">
|
||||
<link rel="stylesheet" href="css/custom.css">
|
||||
|
||||
<!-- Font awesome icons -->
|
||||
<script src="https://kit.fontawesome.com/b0caedfab3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="js/styles/nav-burger.js"></script>
|
||||
<script src="js/styles/toggle-theme.js"></script>
|
||||
<script defer src="/js/auth/auth.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
const savedTheme = localStorage.getItem('theme') || 'theme-dark';
|
||||
document.documentElement.classList.add(savedTheme);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<title>QuecManager</title>
|
||||
</head>
|
||||
|
||||
<body class="body-margin">
|
||||
<nav class="navbar is-transparent">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img src="/assets/logo.png" alt="Logo" />
|
||||
<span class="title">QuecManager</span>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="navbar-burger"
|
||||
aria-label="menu"
|
||||
aria-expanded="false"
|
||||
data-target="navMenu"
|
||||
>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="navMenu" class="navbar-menu">
|
||||
<div class="navbar-start ml-6">
|
||||
<a class="navbar-item" href="/"> Home </a>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link"> Cellular </a>
|
||||
<div class="navbar-dropdown is-boxed">
|
||||
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
||||
<a class="navbar-item" href="/cell-locking.html">Cell Locking</a>
|
||||
<a class="navbar-item" href="/cell-scanner.html">Cell Scanner</a>
|
||||
<a class="navbar-item" href="/cell-settings.html"
|
||||
>Cell Settings</a
|
||||
>
|
||||
<a class="navbar-item" href="/cell-sms.html"> Cell SMS </a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="navbar-item" href="/advance-settings.html"> Advance </a>
|
||||
<a class="navbar-item has-text-weight-bold" href="/about.html"> About </a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item">
|
||||
<div class="buttons is-flex-direction-column-mobile">
|
||||
<p class="control is-expanded-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-link is-outlined is-fullwidth-mobile"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-arrows-rotate"></i>
|
||||
</span>
|
||||
<span>Restart Connection</span>
|
||||
</a>
|
||||
</p>
|
||||
<div class="is-flex is-mobile is-align-items-center">
|
||||
<p class="control">
|
||||
<a href="#" class="button is-warning is-outlined">
|
||||
<span class="icon">
|
||||
<i class="fas fa-power-off"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-sun"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
id="logoutButton"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-right-from-bracket"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="column-margin">
|
||||
<div class="fixed-grid has-2-cols has-1-cols-mobile">
|
||||
<div class="grid">
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
Device Information
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<table class="table is-fullwidth is-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Modem Manufacturer</td>
|
||||
<th>Quectel</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Modem Model Name</td>
|
||||
<th>RM520N-GL</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Firmware Version</td>
|
||||
<th>RM520NGLAA123</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Phone Number</td>
|
||||
<th>+639938931024</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IMSI</td>
|
||||
<th>123456789</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ICCID</td>
|
||||
<th>123456789</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IMEI</td>
|
||||
<th>
|
||||
<div class="field has-addons is-hidden-mobile">
|
||||
<div class="control">
|
||||
<input class="input has-text-weight-semibold" type="text"
|
||||
placeholder="IMEI Here">
|
||||
</div>
|
||||
<div class="control">
|
||||
<button class="button is-link">
|
||||
Change
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<span class="is-block-mobile is-hidden">
|
||||
123456789123
|
||||
</span>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>LAN GATEWAY</td>
|
||||
<th>192.168.225.1</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>WWAN IPv4</td>
|
||||
<th>38.0.101.76</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>WWAN IPv6</td>
|
||||
<th style="word-break: break-all;">
|
||||
5be8:dde9:7f0b:d5a7:bd01:b3be:9c69:573b
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
About Us
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="content">
|
||||
<p class="title">
|
||||
QuecManager
|
||||
</p>
|
||||
<p class="subtitle mt-2">
|
||||
Simple Admin began as part of the RGMII toolkit, offering users a basic GUI.
|
||||
However, with our fork and continued development, it has evolved to include more
|
||||
advanced features, making "simple" no longer an ideal name for the dashboard.
|
||||
Despite this shift, we remain committed to providing advanced functionality while
|
||||
maintaining an intuitive and user-friendly GUI.
|
||||
</p>
|
||||
|
||||
<p class="subtitle mt-6 has-text-weight-bold">
|
||||
Thanks to
|
||||
</p>
|
||||
<ul class="has-text-weight-semibold">
|
||||
<li>
|
||||
RGMII Toolkit and Documentation
|
||||
<a href="https://github.com/iamromulan" target="_blank">iamromulan</a>
|
||||
</li>
|
||||
<li>
|
||||
Simple Admin 2.0 and QuecManager
|
||||
<a href="https://github.com/dr-dolomite" target="_blank">dr-dolomite</a>
|
||||
</li>
|
||||
<li>
|
||||
SMS Feature
|
||||
<a href="https://github.com/snjzb" target="_blank">snjzb</a>
|
||||
</li>
|
||||
<li>
|
||||
Original Simple Admin
|
||||
<a href="https://github.com/aesthernr" target="_blank">aesthernr</a>
|
||||
</li>
|
||||
<li>
|
||||
Original Socat Bridge
|
||||
<a href="https://github.com/natecarlson" target="_blank">natecarlson</a>
|
||||
</li>
|
||||
<li>
|
||||
Initial Original Simple Admin Fixes
|
||||
<a href="https://github.com/rbflurry/" target="_blank">rbflurry</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="content has-text-centered">
|
||||
<p>
|
||||
<strong> <a href="https://github.com/iamromulan/quectel-rgmii-toolkit.git">QuecManager</a></strong>
|
||||
version 1.0. All rights reserved.
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -19,7 +19,7 @@
|
||||
crossorigin="anonymous"
|
||||
></script>
|
||||
|
||||
<script src="js/styles/nav-state.js"></script>
|
||||
<script src="js/styles/nav-burger.js"></script>
|
||||
<script src="js/styles/toggle-theme.js"></script>
|
||||
<script defer src="/js/auth/auth.js"></script>
|
||||
<script src="/js/handle-at-input.js"></script>
|
||||
@@ -41,79 +41,83 @@
|
||||
<img src="/assets/logo.png" alt="Logo" />
|
||||
<span class="title">QuecManager</span>
|
||||
</a>
|
||||
<div
|
||||
class="navbar-burger js-burger"
|
||||
data-target="navbarExampleTransparentExample"
|
||||
<a
|
||||
role="button"
|
||||
class="navbar-burger"
|
||||
aria-label="menu"
|
||||
aria-expanded="false"
|
||||
data-target="navMenu"
|
||||
>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="navbarExampleTransparentExample" class="navbar-menu">
|
||||
<div id="navMenu" class="navbar-menu">
|
||||
<div class="navbar-start ml-6">
|
||||
<a class="navbar-item" href="/"> Home </a>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link"> Cellular </a>
|
||||
<div class="navbar-dropdown is-boxed">
|
||||
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
||||
<a class="navbar-item" href="/cell-locking.html">
|
||||
Cell Locking
|
||||
</a>
|
||||
<a class="navbar-item" href="/cell-scanner.html">
|
||||
Cell Scanner
|
||||
</a>
|
||||
<a class="navbar-item" href="/cell-settings.html">
|
||||
Cell Settings
|
||||
</a>
|
||||
<a class="navbar-item" href="/cell-locking.html">Cell Locking</a>
|
||||
<a class="navbar-item" href="/cell-scanner.html">Cell Scanner</a>
|
||||
<a class="navbar-item" href="/cell-settings.html"
|
||||
>Cell Settings</a
|
||||
>
|
||||
<a class="navbar-item" href="/cell-sms.html"> Cell SMS </a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="navbar-item" href="/advance-settings.html"> Advance </a>
|
||||
<a class="navbar-item has-text-weight-bold" href="/advance-settings.html"> Advance </a>
|
||||
<a class="navbar-item" href="/about.html"> About </a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item">
|
||||
<div class="field is-grouped">
|
||||
<p class="control">
|
||||
<a href="#" class="button is-link is-outlined">
|
||||
<div class="buttons is-flex-direction-column-mobile">
|
||||
<p class="control is-expanded-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-link is-outlined is-fullwidth-mobile"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-arrows-rotate"></i>
|
||||
</span>
|
||||
<span>Restart Connection</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control">
|
||||
<a href="#" class="button is-warning is-outlined">
|
||||
<span class="icon">
|
||||
<i class="fas fa-power-off"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-sun"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
id="logoutButton"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-right-from-bracket"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<div class="is-flex is-mobile is-align-items-center">
|
||||
<p class="control">
|
||||
<a href="#" class="button is-warning is-outlined">
|
||||
<span class="icon">
|
||||
<i class="fas fa-power-off"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-sun"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
id="logoutButton"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-right-from-bracket"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
278
www/bandlock.html
Normal file
278
www/bandlock.html
Normal file
@@ -0,0 +1,278 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
|
||||
<!-- Logo -->
|
||||
<link rel="simpleadmin-logo" href="favicon.ico" />
|
||||
|
||||
<link rel="stylesheet" href="css/bulma/bulma.scss">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.css">
|
||||
<link rel="stylesheet" href="css/custom.css">
|
||||
|
||||
<!-- Font awesome icons -->
|
||||
<script src="https://kit.fontawesome.com/b0caedfab3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="js/styles/nav-burger.js"></script>
|
||||
<script src="js/styles/toggle-theme.js"></script>
|
||||
<script defer src="/js/auth/auth.js"></script>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
const savedTheme = localStorage.getItem('theme') || 'theme-dark';
|
||||
document.documentElement.classList.add(savedTheme);
|
||||
})();
|
||||
</script>
|
||||
<title>QuecManager</title>
|
||||
</head>
|
||||
|
||||
<body class="body-margin">
|
||||
<nav class="navbar is-transparent">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img src="/assets/logo.png" alt="Logo" />
|
||||
<span class="title">QuecManager</span>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="navbar-burger"
|
||||
aria-label="menu"
|
||||
aria-expanded="false"
|
||||
data-target="navMenu"
|
||||
>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="navMenu" class="navbar-menu">
|
||||
<div class="navbar-start ml-6">
|
||||
<a class="navbar-item" href="/"> Home </a>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link"> Cellular </a>
|
||||
<div class="navbar-dropdown is-boxed">
|
||||
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
||||
<a class="navbar-item" href="/cell-locking.html">Cell Locking</a>
|
||||
<a class="navbar-item" href="/cell-scanner.html">Cell Scanner</a>
|
||||
<a class="navbar-item" href="/cell-settings.html"
|
||||
>Cell Settings</a
|
||||
>
|
||||
<a class="navbar-item" href="/cell-sms.html"> Cell SMS </a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="navbar-item" href="/advance-settings.html"> Advance </a>
|
||||
<a class="navbar-item" href="/about.html"> About </a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item">
|
||||
<div class="buttons is-flex-direction-column-mobile">
|
||||
<p class="control is-expanded-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-link is-outlined is-fullwidth-mobile"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-arrows-rotate"></i>
|
||||
</span>
|
||||
<span>Restart Connection</span>
|
||||
</a>
|
||||
</p>
|
||||
<div class="is-flex is-mobile is-align-items-center">
|
||||
<p class="control">
|
||||
<a href="#" class="button is-warning is-outlined">
|
||||
<span class="icon">
|
||||
<i class="fas fa-power-off"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-sun"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
id="logoutButton"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-right-from-bracket"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="column-margin">
|
||||
<div class="fixed-grid has-2-cols has-1-cols-mobile">
|
||||
<div class="grid is-gap-5">
|
||||
<div class="cell is-col-span-2 is-col-span-1-mobile">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
4G LTE Band Locking
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-5-cols has-3-cols-mobile">
|
||||
<div class="grid" id="lte_bands">
|
||||
<!-- write each lte band cell here -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Lock LTE Bands
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Uncheck All
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
5G-NR NSA Band Locking
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-5-cols has-3-cols-mobile">
|
||||
<div class="grid" id="nsa_bands">
|
||||
<!-- write each nsa band cell here -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Lock NSA Bands
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Uncheck All
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
5G-NR SA Band Locking
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-5-cols has-3-cols-mobile">
|
||||
<div class="grid" id="sa_bands">
|
||||
<!-- write each SA band cell here -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Lock SA Bands
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Uncheck All
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="content">
|
||||
<div class="fixed-grid has-2-cols has-1-cols-mobile">
|
||||
<div class="grid">
|
||||
<div class="cell">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
If problem persists after locking bands, please reboot the modem.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Current Active Bands</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
Band 1 / Band 3 / NR Band 41
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
<script>
|
||||
var lte_bands = "1:2:3:4:5:7:8:12:13:14:18:19:20:25:26:28:29:30:32:34:38:39:40:41:42:43:46:48:66:71";
|
||||
var nsa_bands = "1:2:3:5:7:8:12:20:25:28:38:40:41:48:66:71:77:78:79";
|
||||
var sa_bands = "1:2:3:5:7:8:12:20:25:28:38:40:41:48:66:71:77:78:79";
|
||||
|
||||
function populateBands(bandsString, targetId) {
|
||||
var bandsArray = bandsString.split(":");
|
||||
var html = "";
|
||||
|
||||
for (var i = 0; i < bandsArray.length; i++) {
|
||||
html += '<div class="cell"><label class="checkbox"><input type="checkbox" /> B' + bandsArray[i] + '</label></div>';
|
||||
}
|
||||
|
||||
// Inject the generated HTML into the target element
|
||||
document.querySelector(targetId).innerHTML = html;
|
||||
}
|
||||
|
||||
// Populate the bands in their respective grids
|
||||
populateBands(lte_bands, '#lte_bands');
|
||||
populateBands(nsa_bands, '#nsa_bands');
|
||||
populateBands(sa_bands, '#sa_bands');
|
||||
|
||||
</script>
|
||||
|
||||
</html>
|
||||
356
www/cell-locking.html
Normal file
356
www/cell-locking.html
Normal file
@@ -0,0 +1,356 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
|
||||
<!-- Logo -->
|
||||
<link rel="simpleadmin-logo" href="favicon.ico" />
|
||||
|
||||
<link rel="stylesheet" href="css/bulma/bulma.scss">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.css">
|
||||
<link rel="stylesheet" href="css/custom.css">
|
||||
|
||||
<!-- Font awesome icons -->
|
||||
<script src="https://kit.fontawesome.com/b0caedfab3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="js/styles/nav-burger.js"></script>
|
||||
<script src="js/styles/toggle-theme.js"></script>
|
||||
<script defer src="/js/auth/auth.js"></script>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
const savedTheme = localStorage.getItem('theme') || 'theme-dark';
|
||||
document.documentElement.classList.add(savedTheme);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<title>QuecManager</title>
|
||||
</head>
|
||||
|
||||
<body class="body-margin">
|
||||
<nav class="navbar is-transparent">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img src="/assets/logo.png" alt="Logo" />
|
||||
<span class="title">QuecManager</span>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="navbar-burger"
|
||||
aria-label="menu"
|
||||
aria-expanded="false"
|
||||
data-target="navMenu"
|
||||
>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="navMenu" class="navbar-menu">
|
||||
<div class="navbar-start ml-6">
|
||||
<a class="navbar-item" href="/"> Home </a>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link"> Cellular </a>
|
||||
<div class="navbar-dropdown is-boxed">
|
||||
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
||||
<a class="navbar-item" href="/cell-locking.html">Cell Locking</a>
|
||||
<a class="navbar-item" href="/cell-scanner.html">Cell Scanner</a>
|
||||
<a class="navbar-item" href="/cell-settings.html"
|
||||
>Cell Settings</a
|
||||
>
|
||||
<a class="navbar-item" href="/cell-sms.html"> Cell SMS </a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="navbar-item" href="/advance-settings.html"> Advance </a>
|
||||
<a class="navbar-item" href="/about.html"> About </a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item">
|
||||
<div class="buttons is-flex-direction-column-mobile">
|
||||
<p class="control is-expanded-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-link is-outlined is-fullwidth-mobile"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-arrows-rotate"></i>
|
||||
</span>
|
||||
<span>Restart Connection</span>
|
||||
</a>
|
||||
</p>
|
||||
<div class="is-flex is-mobile is-align-items-center">
|
||||
<p class="control">
|
||||
<a href="#" class="button is-warning is-outlined">
|
||||
<span class="icon">
|
||||
<i class="fas fa-power-off"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-sun"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
id="logoutButton"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-right-from-bracket"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="column-margin">
|
||||
<div class="fixed-grid has-2-cols has-1-cols-mobile">
|
||||
<div class="grid is-gap-5">
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
4G LTE Cell Locking
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-2-cols">
|
||||
<div class="grid">
|
||||
<!-- Entry 1 Start -->
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">EARFCN 1</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="EARFCN">
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-bolt"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">PCI 1</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="PCI">
|
||||
<span class="icon is-left">
|
||||
<i class="fa-solid fa-signal"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Entry 1 End -->
|
||||
|
||||
<!-- Entry 2 Start -->
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">EARFCN 2</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="EARFCN">
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-bolt"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">PCI 2</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="PCI">
|
||||
<span class="icon is-left">
|
||||
<i class="fa-solid fa-signal"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Entry 2 End -->
|
||||
|
||||
<!-- Entry 3 Start -->
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">EARFCN 3</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="EARFCN">
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-bolt"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">PCI 3</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="PCI">
|
||||
<span class="icon is-left">
|
||||
<i class="fa-solid fa-signal"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Entry 3 End -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Lock LTE Cells
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
5G-NR SA Cell Locking
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-2-cols">
|
||||
<div class="grid">
|
||||
<!-- Entry 1 Start -->
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">NR ARFCN</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="NR-ARFCN">
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-bolt"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">NR PCI</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="NR PCI">
|
||||
<span class="icon is-left">
|
||||
<i class="fa-solid fa-signal"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Entry 1 End -->
|
||||
|
||||
<!-- Entry 2 Start -->
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">SCS</label>
|
||||
<div class="control has-icons-left">
|
||||
<span class="select">
|
||||
<select>
|
||||
<option selected>Select SCS</option>
|
||||
<option>15 kHz</option>
|
||||
<option>30 kHz</option>
|
||||
<option>60 kHz</option>
|
||||
<option>120 kHz</option>
|
||||
<option>240 kHz</option>
|
||||
</select>
|
||||
</span>
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-bolt"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">NR Band</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="email" placeholder="NR Band">
|
||||
<span class="icon is-left">
|
||||
<i class="fa-solid fa-signal"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Entry 2 End -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Lock SA Cells
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="content">
|
||||
<div class="fixed-grid has-2-cols has-1-cols-mobile">
|
||||
<div class="grid">
|
||||
<div class="cell">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
Cell locking is an advance feature and may cause network interruptions. <br />
|
||||
Cell locking will also only work with the main band (PCC) if you are using carrier
|
||||
aggregation.
|
||||
<br />
|
||||
Proceed with caution.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Current Active Locked Cells</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
150/69, 1350/70, 1350/71
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
486
www/cell-scanner.html
Normal file
486
www/cell-scanner.html
Normal file
@@ -0,0 +1,486 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
|
||||
<!-- Logo -->
|
||||
<link rel="simpleadmin-logo" href="favicon.ico" />
|
||||
|
||||
<link rel="stylesheet" href="css/bulma/bulma.scss">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.css">
|
||||
<link rel="stylesheet" href="css/custom.css">
|
||||
|
||||
<!-- Font awesome icons -->
|
||||
<script src="https://kit.fontawesome.com/b0caedfab3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="js/styles/nav-burger.js"></script>
|
||||
<script src="js/styles/toggle-theme.js"></script>
|
||||
<script defer src="/js/auth/auth.js"></script>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
const savedTheme = localStorage.getItem('theme') || 'theme-dark';
|
||||
document.documentElement.classList.add(savedTheme);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<title>QuecManager</title>
|
||||
</head>
|
||||
|
||||
<body class="body-margin">
|
||||
<nav class="navbar is-transparent">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img src="/assets/logo.png" alt="Logo" />
|
||||
<span class="title">QuecManager</span>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="navbar-burger"
|
||||
aria-label="menu"
|
||||
aria-expanded="false"
|
||||
data-target="navMenu"
|
||||
>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="navMenu" class="navbar-menu">
|
||||
<div class="navbar-start ml-6">
|
||||
<a class="navbar-item" href="/"> Home </a>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link"> Cellular </a>
|
||||
<div class="navbar-dropdown is-boxed">
|
||||
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
||||
<a class="navbar-item" href="/cell-locking.html">Cell Locking</a>
|
||||
<a class="navbar-item" href="/cell-scanner.html">Cell Scanner</a>
|
||||
<a class="navbar-item" href="/cell-settings.html"
|
||||
>Cell Settings</a
|
||||
>
|
||||
<a class="navbar-item" href="/cell-sms.html"> Cell SMS </a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="navbar-item" href="/advance-settings.html"> Advance </a>
|
||||
<a class="navbar-item" href="/about.html"> About </a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item">
|
||||
<div class="buttons is-flex-direction-column-mobile">
|
||||
<p class="control is-expanded-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-link is-outlined is-fullwidth-mobile"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-arrows-rotate"></i>
|
||||
</span>
|
||||
<span>Restart Connection</span>
|
||||
</a>
|
||||
</p>
|
||||
<div class="is-flex is-mobile is-align-items-center">
|
||||
<p class="control">
|
||||
<a href="#" class="button is-warning is-outlined">
|
||||
<span class="icon">
|
||||
<i class="fas fa-power-off"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-sun"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
id="logoutButton"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-right-from-bracket"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="column-margin">
|
||||
<div class="fixed-grid has-1-cols">
|
||||
<div class="grid is-gap-5">
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<p class="card-header-title">
|
||||
Full Network Provider Cell Scanner
|
||||
</p>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<table class="table is-fullwidth">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
Network Provider
|
||||
</th>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th>
|
||||
EARFCN
|
||||
</th>
|
||||
<th>
|
||||
Bandwidth
|
||||
</th>
|
||||
<th>
|
||||
Physical ID
|
||||
</th>
|
||||
<th class="is-hidden-mobile">
|
||||
RSRP
|
||||
</th>
|
||||
<th class="is-hidden-mobile">
|
||||
RSRQ
|
||||
</th>
|
||||
<th class="is-hidden-mobile">
|
||||
SINR
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
Smart
|
||||
</td>
|
||||
<td>
|
||||
B1
|
||||
</td>
|
||||
<td>
|
||||
150
|
||||
</td>
|
||||
<td>
|
||||
10
|
||||
</td>
|
||||
<td>
|
||||
623
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -103 </span>
|
||||
<span class="tag is-danger is-size-6 has-text-white"> Poor </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -103 </span>
|
||||
<span class="tag is-danger is-size-6 has-text-white"> Poor </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -5 </span>
|
||||
<span class="tag is-danger is-size-6 has-text-white"> Poor </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
DITO
|
||||
</td>
|
||||
<td>
|
||||
B2
|
||||
</td>
|
||||
<td>
|
||||
150
|
||||
</td>
|
||||
<td>
|
||||
10
|
||||
</td>
|
||||
<td>
|
||||
623
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -90 </span>
|
||||
<span class="tag is-warning is-size-6 has-text-white"> Medium </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -90 </span>
|
||||
<span class="tag is-warning is-size-6 has-text-white"> Medium </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> 10 </span>
|
||||
<span class="tag is-warning is-size-6 has-text-white"> Medium </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
Globe
|
||||
</td>
|
||||
<td>
|
||||
B3
|
||||
</td>
|
||||
<td>
|
||||
150
|
||||
</td>
|
||||
<td>
|
||||
10
|
||||
</td>
|
||||
<td>
|
||||
623
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -65 </span>
|
||||
<span class="tag is-success is-size-6 has-text-white"> Strong </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -65 </span>
|
||||
<span class="tag is-success is-size-6 has-text-white"> Strong </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> 30 </span>
|
||||
<span class="tag is-success is-size-6 has-text-white"> Strong </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Start Full Scan
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
Full Neighbour Cell Scanner
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<table class="table is-fullwidth">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th>
|
||||
EARFCN
|
||||
</th>
|
||||
<th>
|
||||
Bandwidth
|
||||
</th>
|
||||
<th>
|
||||
Physical ID
|
||||
</th>
|
||||
<th class="is-hidden-mobile">
|
||||
RSRP
|
||||
</th>
|
||||
<th class="is-hidden-mobile">
|
||||
RSRQ
|
||||
</th>
|
||||
<th class="is-hidden-mobile">
|
||||
SINR
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
B1
|
||||
</td>
|
||||
<td>
|
||||
150
|
||||
</td>
|
||||
<td>
|
||||
10
|
||||
</td>
|
||||
<td>
|
||||
623
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -103 </span>
|
||||
<span class="tag is-danger is-size-6 has-text-white"> Poor </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -103 </span>
|
||||
<span class="tag is-danger is-size-6 has-text-white"> Poor </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -5 </span>
|
||||
<span class="tag is-danger is-size-6 has-text-white"> Poor </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
B2
|
||||
</td>
|
||||
<td>
|
||||
150
|
||||
</td>
|
||||
<td>
|
||||
10
|
||||
</td>
|
||||
<td>
|
||||
623
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -90 </span>
|
||||
<span class="tag is-warning is-size-6 has-text-white"> Medium </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -90 </span>
|
||||
<span class="tag is-warning is-size-6 has-text-white"> Medium </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> 10 </span>
|
||||
<span class="tag is-warning is-size-6 has-text-white"> Medium </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
B3
|
||||
</td>
|
||||
<td>
|
||||
150
|
||||
</td>
|
||||
<td>
|
||||
10
|
||||
</td>
|
||||
<td>
|
||||
623
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -65 </span>
|
||||
<span class="tag is-success is-size-6 has-text-white"> Strong </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> -65 </span>
|
||||
<span class="tag is-success is-size-6 has-text-white"> Strong </span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="is-hidden-mobile">
|
||||
<div class="tags has-addons">
|
||||
<span class="tag is-size-6"> 30 </span>
|
||||
<span class="tag is-success is-size-6 has-text-white"> Strong </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Start Neighbourcell Scan
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="content">
|
||||
<div class="fixed-grid has-2-cols has-1-cols-mobile">
|
||||
<div class="grid">
|
||||
<div class="cell">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
Full Network Provider Cell Scanner will scan all of the cells in your area even from other
|
||||
network providers.
|
||||
<br />
|
||||
The NR-5G scan will only display SA bands available in your area.
|
||||
<br />
|
||||
Scanning will take a few minutes so please wait patiently.
|
||||
<br />
|
||||
If problem persists after scanning, please reboot the modem.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
Full Neighbour Cell Scanner will only scan the bands of your active network provider.
|
||||
<br />
|
||||
The NR-5G scan result is based on your current active 5G network mode.
|
||||
<br />
|
||||
If problem persists after scanning, please reboot the modem.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
378
www/cell-settings.html
Normal file
378
www/cell-settings.html
Normal file
@@ -0,0 +1,378 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
|
||||
<!-- Logo -->
|
||||
<link rel="simpleadmin-logo" href="favicon.ico" />
|
||||
|
||||
<link rel="stylesheet" href="css/bulma/bulma.scss">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.css">
|
||||
<link rel="stylesheet" href="css/custom.css">
|
||||
|
||||
<!-- Font awesome icons -->
|
||||
<script src="https://kit.fontawesome.com/b0caedfab3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="js/styles/nav-burger.js"></script>
|
||||
<script src="js/styles/toggle-theme.js"></script>
|
||||
<script defer src="/js/auth/auth.js"></script>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
const savedTheme = localStorage.getItem('theme') || 'theme-dark';
|
||||
document.documentElement.classList.add(savedTheme);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<title>QuecManager</title>
|
||||
</head>
|
||||
|
||||
<body class="body-margin">
|
||||
<nav class="navbar is-transparent">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img src="/assets/logo.png" alt="Logo" />
|
||||
<span class="title">QuecManager</span>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="navbar-burger"
|
||||
aria-label="menu"
|
||||
aria-expanded="false"
|
||||
data-target="navMenu"
|
||||
>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="navMenu" class="navbar-menu">
|
||||
<div class="navbar-start ml-6">
|
||||
<a class="navbar-item" href="/"> Home </a>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link"> Cellular </a>
|
||||
<div class="navbar-dropdown is-boxed">
|
||||
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
||||
<a class="navbar-item" href="/cell-locking.html">Cell Locking</a>
|
||||
<a class="navbar-item" href="/cell-scanner.html">Cell Scanner</a>
|
||||
<a class="navbar-item" href="/cell-settings.html"
|
||||
>Cell Settings</a
|
||||
>
|
||||
<a class="navbar-item" href="/cell-sms.html"> Cell SMS </a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="navbar-item" href="/advance-settings.html"> Advance </a>
|
||||
<a class="navbar-item" href="/about.html"> About </a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item">
|
||||
<div class="buttons is-flex-direction-column-mobile">
|
||||
<p class="control is-expanded-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-link is-outlined is-fullwidth-mobile"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-arrows-rotate"></i>
|
||||
</span>
|
||||
<span>Restart Connection</span>
|
||||
</a>
|
||||
</p>
|
||||
<div class="is-flex is-mobile is-align-items-center">
|
||||
<p class="control">
|
||||
<a href="#" class="button is-warning is-outlined">
|
||||
<span class="icon">
|
||||
<i class="fas fa-power-off"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-sun"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
id="logoutButton"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-right-from-bracket"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="column-margin">
|
||||
<div class="fixed-grid has-2-cols has-1-cols-mobile">
|
||||
<div class="grid">
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
Basic Cellular Settings
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-2-cols">
|
||||
<div class="grid is-gap-5">
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">Current APN</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" placeholder="Current APN Here">
|
||||
</div>
|
||||
<p class="help">Changing this will disable automatic APN.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">APN PDP Type</label>
|
||||
<p class="control has-icons-left">
|
||||
<span class="select">
|
||||
<select>
|
||||
<option selected>Select APN PDP Type</option>
|
||||
<option>IPv4 Only</option>
|
||||
<option>IPv6 Only</option>
|
||||
<option>IPv4 and IPv6</option>
|
||||
<option>P2P Protocol</option>
|
||||
</select>
|
||||
</span>
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-globe"></i>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">Preferred Network Mode</label>
|
||||
<p class="control has-icons-left">
|
||||
<span class="select">
|
||||
<select>
|
||||
<option selected>Select Preferred Network Mode</option>
|
||||
<option>Automatic</option>
|
||||
<option>LTE Only</option>
|
||||
<option>5G SA Only</option>
|
||||
<option>5G NSA Only</option>
|
||||
</select>
|
||||
</span>
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-signal"></i>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">NR5G Mode Control</label>
|
||||
<p class="control has-icons-left">
|
||||
<span class="select">
|
||||
<select>
|
||||
<option selected>Select NR5G Mode Control</option>
|
||||
<option>Enable NR5G SA and NSA</option>
|
||||
<option>Enable SA Only</option>
|
||||
<option>Enable NSA Only</option>
|
||||
</select>
|
||||
</span>
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-podcast"></i>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Save
|
||||
</a>
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
APN and ICCID Based Locking
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-1-cols">
|
||||
<div class="grid is-gap-5">
|
||||
<div class="cell">
|
||||
<div class="fixed-grid has-2-cols">
|
||||
<div class="grid is-gap-3">
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">APN Profile 1</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" placeholder="APN Here">
|
||||
</div>
|
||||
<p class="help">This will override the current APN.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">APN PDP Type</label>
|
||||
<p class="control has-icons-left">
|
||||
<span class="select">
|
||||
<select>
|
||||
<option selected>Select APN PDP Type</option>
|
||||
<option>IPv4 Only</option>
|
||||
<option>IPv6 Only</option>
|
||||
<option>IPv4 and IPv6</option>
|
||||
<option>P2P Protocol</option>
|
||||
</select>
|
||||
</span>
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-globe"></i>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell is-col-span-2">
|
||||
<div class="field">
|
||||
<label class="label">ICCID Profile 1</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" placeholder="ICCID Here">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="fixed-grid has-2-cols">
|
||||
<div class="grid is-gap-3">
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">APN Profile 2</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" placeholder="APN Here">
|
||||
</div>
|
||||
<p class="help">This will override the current APN.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="field">
|
||||
<label class="label">APN PDP Type</label>
|
||||
<p class="control has-icons-left">
|
||||
<span class="select">
|
||||
<select>
|
||||
<option selected>Select APN PDP Type</option>
|
||||
<option>IPv4 Only</option>
|
||||
<option>IPv6 Only</option>
|
||||
<option>IPv4 and IPv6</option>
|
||||
<option>P2P Protocol</option>
|
||||
</select>
|
||||
</span>
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-globe"></i>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell is-col-span-2">
|
||||
<div class="field">
|
||||
<label class="label">ICCID Profile 2</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" placeholder="ICCID Here">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Save
|
||||
</a>
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="content">
|
||||
<div class="fixed-grid has-2-cols has-1-cols-mobile">
|
||||
<div class="grid">
|
||||
<div class="cell">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
Changing APN disconnects and reconnects the network automatically.
|
||||
<br />
|
||||
If problem persists after changing settings, please reboot the modem.
|
||||
<br />
|
||||
Please use the settings with caution.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
APN and ICCID Based Locking will use a stored APN profile based on the current SIM's ICCID.
|
||||
<br />
|
||||
Currently experimental.
|
||||
<br />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
364
www/cell-sms.html
Normal file
364
www/cell-sms.html
Normal file
@@ -0,0 +1,364 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
|
||||
<!-- Logo -->
|
||||
<link rel="simpleadmin-logo" href="favicon.ico" />
|
||||
|
||||
<link rel="stylesheet" href="css/bulma/bulma.scss">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="css/bulma/css/bulma.css">
|
||||
<link rel="stylesheet" href="css/custom.css">
|
||||
|
||||
<!-- Font awesome icons -->
|
||||
<script src="https://kit.fontawesome.com/b0caedfab3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="js/styles/nav-burger.js"></script>
|
||||
<script src="js/styles/toggle-theme.js"></script>
|
||||
<script defer src="/js/auth/auth.js"></script>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
const savedTheme = localStorage.getItem('theme') || 'theme-dark';
|
||||
document.documentElement.classList.add(savedTheme);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<title>QuecManager</title>
|
||||
</head>
|
||||
|
||||
<body class="body-margin">
|
||||
<nav class="navbar is-transparent">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img src="/assets/logo.png" alt="Logo" />
|
||||
<span class="title">QuecManager</span>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="navbar-burger"
|
||||
aria-label="menu"
|
||||
aria-expanded="false"
|
||||
data-target="navMenu"
|
||||
>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="navMenu" class="navbar-menu">
|
||||
<div class="navbar-start ml-6">
|
||||
<a class="navbar-item" href="/"> Home </a>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link has-text-weight-bold"> Cellular </a>
|
||||
<div class="navbar-dropdown is-boxed">
|
||||
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
||||
<a class="navbar-item" href="/cell-locking.html">Cell Locking</a>
|
||||
<a class="navbar-item" href="/cell-scanner.html">Cell Scanner</a>
|
||||
<a class="navbar-item" href="/cell-settings.html"
|
||||
>Cell Settings</a
|
||||
>
|
||||
<a class="navbar-item" href="/cell-sms.html"> Cell SMS </a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="navbar-item" href="/advance-settings.html"> Advance </a>
|
||||
<a class="navbar-item" href="/about.html"> About </a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item">
|
||||
<div class="buttons is-flex-direction-column-mobile">
|
||||
<p class="control is-expanded-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-link is-outlined is-fullwidth-mobile"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-arrows-rotate"></i>
|
||||
</span>
|
||||
<span>Restart Connection</span>
|
||||
</a>
|
||||
</p>
|
||||
<div class="is-flex is-mobile is-align-items-center">
|
||||
<p class="control">
|
||||
<a href="#" class="button is-warning is-outlined">
|
||||
<span class="icon">
|
||||
<i class="fas fa-power-off"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-sun"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="control ml-2 is-mobile">
|
||||
<a
|
||||
href="#"
|
||||
class="button is-warning is-outlined js-theme-toggle"
|
||||
id="logoutButton"
|
||||
>
|
||||
<span class="icon">
|
||||
<i class="fas fa-right-from-bracket"></i>
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="column-margin">
|
||||
<div class="fixed-grid has-1-cols">
|
||||
<div class="grid is-gap-5">
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
SMS Inbox
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-1-cols" style="height: 450px; overflow-y: scroll;">
|
||||
<div class="grid is-gap-4 is-fullwidth">
|
||||
<div class="cell">
|
||||
<div class="is-flex is-align-items-center">
|
||||
<div class="checkbox mr-6">
|
||||
<input type="checkbox">
|
||||
</div>
|
||||
<div class="is-flex is-flex-direction-column is-align-items-start">
|
||||
<p class="has-text-weight-semibold">
|
||||
Senders Name Here
|
||||
</p>
|
||||
<p>
|
||||
2022-11-20 13:30:00
|
||||
</p>
|
||||
<p>
|
||||
Message content here. Lorem ipsum dolor sit amet consectetur
|
||||
adipisicing elit. Corrupti doloremque voluptatum velit repellendus
|
||||
ipsum delectus blanditiis quis dolores. Maxime labore esse
|
||||
laboriosam inventore error molestiae consequuntur quo, deleniti ea
|
||||
nihil.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="is-flex is-align-items-center">
|
||||
<div class="checkbox mr-6">
|
||||
<input type="checkbox">
|
||||
</div>
|
||||
<div class="is-flex is-flex-direction-column is-align-items-start">
|
||||
<p class="has-text-weight-semibold">
|
||||
Senders Name Here
|
||||
</p>
|
||||
<p>
|
||||
2022-11-20 13:30:00
|
||||
</p>
|
||||
<p>
|
||||
Message content here. Lorem ipsum dolor sit amet consectetur
|
||||
adipisicing elit. Corrupti doloremque voluptatum velit repellendus
|
||||
ipsum delectus blanditiis quis dolores. Maxime labore esse
|
||||
laboriosam inventore error molestiae consequuntur quo, deleniti ea
|
||||
nihil.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="is-flex is-align-items-center">
|
||||
<div class="checkbox mr-6">
|
||||
<input type="checkbox">
|
||||
</div>
|
||||
<div class="is-flex is-flex-direction-column is-align-items-start">
|
||||
<p class="has-text-weight-semibold">
|
||||
Senders Name Here
|
||||
</p>
|
||||
<p>
|
||||
2022-11-20 13:30:00
|
||||
</p>
|
||||
<p>
|
||||
Message content here. Lorem ipsum dolor sit amet consectetur
|
||||
adipisicing elit. Corrupti doloremque voluptatum velit repellendus
|
||||
ipsum delectus blanditiis quis dolores. Maxime labore esse
|
||||
laboriosam inventore error molestiae consequuntur quo, deleniti ea
|
||||
nihil.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="is-flex is-align-items-center">
|
||||
<div class="checkbox mr-6">
|
||||
<input type="checkbox">
|
||||
</div>
|
||||
<div class="is-flex is-flex-direction-column is-align-items-start">
|
||||
<p class="has-text-weight-semibold">
|
||||
Senders Name Here
|
||||
</p>
|
||||
<p>
|
||||
2022-11-20 13:30:00
|
||||
</p>
|
||||
<p>
|
||||
Message content here. Lorem ipsum dolor sit amet consectetur
|
||||
adipisicing elit. Corrupti doloremque voluptatum velit repellendus
|
||||
ipsum delectus blanditiis quis dolores. Maxime labore esse
|
||||
laboriosam inventore error molestiae consequuntur quo, deleniti ea
|
||||
nihil.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="is-flex is-align-items-center">
|
||||
<div class="checkbox mr-6">
|
||||
<input type="checkbox">
|
||||
</div>
|
||||
<div class="is-flex is-flex-direction-column is-align-items-start">
|
||||
<p class="has-text-weight-semibold">
|
||||
Senders Name Here
|
||||
</p>
|
||||
<p>
|
||||
2022-11-20 13:30:00
|
||||
</p>
|
||||
<p>
|
||||
Message content here. Lorem ipsum dolor sit amet consectetur
|
||||
adipisicing elit. Corrupti doloremque voluptatum velit repellendus
|
||||
ipsum delectus blanditiis quis dolores. Maxime labore esse
|
||||
laboriosam inventore error molestiae consequuntur quo, deleniti ea
|
||||
nihil.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="is-flex is-align-items-center">
|
||||
<div class="checkbox mr-6">
|
||||
<input type="checkbox">
|
||||
</div>
|
||||
<div class="is-flex is-flex-direction-column is-align-items-start">
|
||||
<p class="has-text-weight-semibold">
|
||||
Senders Name Here
|
||||
</p>
|
||||
<p>
|
||||
2022-11-20 13:30:00
|
||||
</p>
|
||||
<p>
|
||||
Message content here. Lorem ipsum dolor sit amet consectetur
|
||||
adipisicing elit. Corrupti doloremque voluptatum velit repellendus
|
||||
ipsum delectus blanditiis quis dolores. Maxime labore esse
|
||||
laboriosam inventore error molestiae consequuntur quo, deleniti ea
|
||||
nihil.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Refresh
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Delete Selected
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title">
|
||||
Send SMS
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="fixed-grid has-5-cols has-1-cols-mobile">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-1">
|
||||
<div class="field">
|
||||
<label class="label">Receipient's Phone Number</label>
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" type="text" placeholder="Input Phone Number">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell is-col-span-5 is-col-span-1-mobile">
|
||||
<div class="field">
|
||||
<label class="label">Message</label>
|
||||
<div class="control">
|
||||
<textarea class="textarea" placeholder="Textarea"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Send SMS
|
||||
</a>
|
||||
|
||||
<a href="#" class="card-footer-item has-text-link has-text-weight-semibold has-text-white">
|
||||
Reset
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="content">
|
||||
<div class="is-flex is-flex-direction-column is-align-items-center ">
|
||||
<div class="has-text-centered">
|
||||
<div class="icon-text">
|
||||
<span class="icon has-text-info">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
<p class="block has-text-weight-semibold">
|
||||
This is an experimental feature and may cause an error in some cases.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -19,19 +19,25 @@ RAW_COMMAND=$(echo "$INPUT_DATA" | sed 's/command=//g')
|
||||
# URL-decode the command
|
||||
COMMAND=$(urldecode "$RAW_COMMAND")
|
||||
|
||||
# Save the command input to at_input.txt
|
||||
echo "$COMMAND" > /tmp/at_input.txt
|
||||
# Save the command input to a unique at_input file
|
||||
AT_INPUT_FILE="/tmp/at_input_$$.txt"
|
||||
echo "$COMMAND" > "$AT_INPUT_FILE"
|
||||
|
||||
# Define the input/output files and AT port
|
||||
INPUT_FILE="/tmp/input.txt"
|
||||
OUTPUT_FILE="/tmp/output.txt"
|
||||
# Define unique input/output files and AT port
|
||||
INPUT_FILE="/tmp/input_$$.txt"
|
||||
OUTPUT_FILE="/tmp/output_$$.txt"
|
||||
AT_PORT="/dev/smd11"
|
||||
|
||||
# Copy the user input to the input file
|
||||
cp /tmp/at_input.txt "$INPUT_FILE"
|
||||
# Ensure exclusive access to the AT port to avoid overloading smd11
|
||||
(
|
||||
flock -x 200
|
||||
|
||||
# Run the command using atinout
|
||||
atinout "$INPUT_FILE" "$AT_PORT" "$OUTPUT_FILE"
|
||||
# Copy the user input to the input file
|
||||
cp "$AT_INPUT_FILE" "$INPUT_FILE"
|
||||
|
||||
# Run the command using atinout
|
||||
atinout "$INPUT_FILE" "$AT_PORT" "$OUTPUT_FILE"
|
||||
) 200>/tmp/atinout.lock
|
||||
|
||||
# Read the output from output.txt
|
||||
OUTPUT=$(cat "$OUTPUT_FILE")
|
||||
@@ -49,4 +55,7 @@ JSON_RESPONSE=$(printf "{\"command\":\"%s\",\"output\":\"%s\"}" "$ESCAPED_COMMAN
|
||||
echo "$JSON_RESPONSE" >> /tmp/cgi_debug.log
|
||||
|
||||
# Return the output as a valid JSON response
|
||||
echo "$JSON_RESPONSE"
|
||||
echo "$JSON_RESPONSE"
|
||||
|
||||
# Clean up temporary files
|
||||
rm "$AT_INPUT_FILE" "$INPUT_FILE" "$OUTPUT_FILE"
|
||||
|
||||
45
www/cgi-bin/auth.sh
Normal file
45
www/cgi-bin/auth.sh
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set Content-Type for CGI script
|
||||
echo "Content-type: application/json"
|
||||
echo ""
|
||||
|
||||
# Read POST data
|
||||
read POST_DATA
|
||||
|
||||
# Extract the password from POST data (URL encoded)
|
||||
USER="root"
|
||||
INPUT_PASSWORD=$(echo "$POST_DATA" | sed -n 's/^.*password=\([^&]*\).*$/\1/p')
|
||||
|
||||
# URL-decode the password (replace + with space and decode %XX)
|
||||
INPUT_PASSWORD=$(echo "$INPUT_PASSWORD" | sed 's/+/ /g;s/%\(..\)/\\x\1/g' | xargs -0 printf "%b")
|
||||
|
||||
# Log received password for debugging (remove in production)
|
||||
echo "Received password: $INPUT_PASSWORD" >&2
|
||||
|
||||
# Extract the hashed password from /etc/shadow for the specified user
|
||||
USER_SHADOW_ENTRY=$(grep "^$USER:" /etc/shadow)
|
||||
|
||||
if [ -z "$USER_SHADOW_ENTRY" ]; then
|
||||
echo '{"state":"failed", "message":"User not found"}'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract the password hash (it's the second field, colon-separated)
|
||||
USER_HASH=$(echo "$USER_SHADOW_ENTRY" | cut -d: -f2)
|
||||
|
||||
# Extract the salt (MD5 uses the $1$ prefix followed by the salt)
|
||||
SALT=$(echo "$USER_HASH" | cut -d'$' -f3)
|
||||
|
||||
# Generate a hash from the input password using the same salt
|
||||
GENERATED_HASH=$(echo "$INPUT_PASSWORD" | openssl passwd -1 -salt "$SALT" -stdin)
|
||||
|
||||
# Log generated hash for debugging
|
||||
echo "Generated hash: $GENERATED_HASH" >&2
|
||||
|
||||
# Compare the generated hash with the one in the shadow file
|
||||
if [ "$GENERATED_HASH" = "$USER_HASH" ]; then
|
||||
echo '{"state":"success", "hashed_password":"'"$GENERATED_HASH"'"}'
|
||||
else
|
||||
echo '{"state":"failed", "hashed_password":"'"$GENERATED_HASH"'"}'
|
||||
fi
|
||||
14
www/cgi-bin/check_net.sh
Normal file
14
www/cgi-bin/check_net.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set the content type to JSON
|
||||
echo "Content-Type: application/json"
|
||||
echo ""
|
||||
|
||||
# Ping 8.8.8.8 and capture the result
|
||||
if ping -c 1 8.8.8.8 > /dev/null 2>&1; then
|
||||
# Ping was successful
|
||||
echo '{"connection": "ACTIVE"}'
|
||||
else
|
||||
# Ping failed
|
||||
echo '{"connection": "INACTIVE"}'
|
||||
fi
|
||||
66
www/cgi-bin/home_data.sh
Normal file
66
www/cgi-bin/home_data.sh
Normal file
@@ -0,0 +1,66 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set content-type for JSON response
|
||||
echo "Content-type: application/json"
|
||||
echo ""
|
||||
|
||||
# Define the lock file
|
||||
LOCK_FILE="/tmp/home_data.lock"
|
||||
|
||||
# Acquire the lock (wait if needed)
|
||||
exec 200>$LOCK_FILE
|
||||
flock -x 200
|
||||
|
||||
# Temporary files for input/output and AT port
|
||||
INPUT_FILE="/tmp/input_$$.txt"
|
||||
OUTPUT_FILE="/tmp/output_$$.txt"
|
||||
AT_PORT="/dev/smd11"
|
||||
|
||||
# Debug file path
|
||||
DEBUG_FILE="/tmp/debug-json-result.txt"
|
||||
|
||||
# Function to escape JSON strings (handling quotes and newlines)
|
||||
escape_json() {
|
||||
# Escape newlines and double quotes
|
||||
echo "$1" | sed ':a;N;$!ba;s/\n/\\n/g; s/"/\\"/g'
|
||||
}
|
||||
|
||||
# Initialize JSON response array
|
||||
JSON_RESPONSE="["
|
||||
|
||||
# List of AT commands to run, one by one
|
||||
for COMMAND in "AT+QUIMSLOT?" "AT+CNUM" "AT+COPS?" "AT+CIMI" "AT+ICCID" "AT+CGSN" "AT+CPIN?" "AT+CGCONTRDP" "AT+CREG?" "AT+CFUN?" "AT+QENG=\"servingcell\"" "AT+QTEMP" "AT+CGCONTRDP" "AT+QCAINFO" "AT+QRSRP" 'AT+QMAP="WWAN"'; do
|
||||
# Write the command to the input file
|
||||
echo "$COMMAND" > "$INPUT_FILE"
|
||||
|
||||
# Run the command using atinout
|
||||
atinout "$INPUT_FILE" "$AT_PORT" "$OUTPUT_FILE"
|
||||
|
||||
# Read the output from the output file
|
||||
OUTPUT=$(cat "$OUTPUT_FILE")
|
||||
|
||||
# Escape special characters for JSON (escape only output)
|
||||
ESCAPED_OUTPUT=$(escape_json "$OUTPUT")
|
||||
|
||||
# Append the response as an object to the JSON response array
|
||||
JSON_RESPONSE="${JSON_RESPONSE}{\"response\":\"$ESCAPED_OUTPUT\"},"
|
||||
done
|
||||
|
||||
# Remove the trailing comma and close the JSON array
|
||||
if [ "${JSON_RESPONSE: -1}" = "," ]; then
|
||||
JSON_RESPONSE="${JSON_RESPONSE%,}]"
|
||||
else
|
||||
JSON_RESPONSE="${JSON_RESPONSE}]"
|
||||
fi
|
||||
|
||||
# Write the JSON response to the debug file for troubleshooting
|
||||
echo "$JSON_RESPONSE" > "$DEBUG_FILE"
|
||||
|
||||
# Return the output as a valid JSON response
|
||||
echo "$JSON_RESPONSE"
|
||||
|
||||
# Clean up temporary files
|
||||
rm "$INPUT_FILE" "$OUTPUT_FILE"
|
||||
|
||||
# Release the lock
|
||||
flock -u 200
|
||||
16
www/cgi-bin/traffic_stats.sh
Normal file
16
www/cgi-bin/traffic_stats.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
echo "Content-type: application/json"
|
||||
echo ""
|
||||
|
||||
# Get RX and TX bytes from ifconfig eth0
|
||||
data=$(ifconfig eth0 | grep "RX bytes")
|
||||
|
||||
# Extract download (RX) and upload (TX) values using awk
|
||||
download=$(echo $data | awk '{print $2}' | cut -d':' -f2)
|
||||
upload=$(echo $data | awk '{print $6}' | cut -d':' -f2)
|
||||
|
||||
# Return JSON response
|
||||
echo "{"
|
||||
echo " \"download\": \"$download\","
|
||||
echo " \"upload\": \"$upload\""
|
||||
echo "}"
|
||||
@@ -1,5 +1,13 @@
|
||||
/* */
|
||||
|
||||
/* import Poppins font */
|
||||
@import url('https://fonts.googleapis.com/css2?family=Euclid+Flex:wght@400;500;600;700&display=swap');
|
||||
|
||||
/* use Poppins everywhere */
|
||||
* {
|
||||
font-family: 'Poppins', sans-serif;
|
||||
}
|
||||
|
||||
html {
|
||||
visibility: hidden;
|
||||
}
|
||||
@@ -27,12 +35,33 @@ html.theme-light {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/* .font-is-semibold {
|
||||
font-weight: 600;
|
||||
} */
|
||||
.cell {
|
||||
display: grid;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* .content-end {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
} */
|
||||
#handleRefreshClickButton {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#handleRefreshClickButton:disabled {
|
||||
cursor: wait;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.fa-spin {
|
||||
animation: fa-spin 2s infinite linear;
|
||||
}
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
#dataConnState .tag {
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
BIN
www/favicon.ico
Normal file
BIN
www/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
993
www/home.html
993
www/home.html
File diff suppressed because it is too large
Load Diff
@@ -1,93 +1,108 @@
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Function to generate a random token
|
||||
function generateAuthToken(length = 32) {
|
||||
const charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||||
let token = '';
|
||||
for (let i = 0; i < length; i++) {
|
||||
const randomIndex = Math.floor(Math.random() * charset.length);
|
||||
token += charset[randomIndex];
|
||||
}
|
||||
return token;
|
||||
const charset =
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||
let token = "";
|
||||
for (let i = 0; i < length; i++) {
|
||||
const randomIndex = Math.floor(Math.random() * charset.length);
|
||||
token += charset[randomIndex];
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
// Initially hide the body to prevent content from flashing
|
||||
document.body.style.display = 'none';
|
||||
|
||||
document.body.style.display = "none";
|
||||
|
||||
// Check if the user is already logged in
|
||||
const authToken = localStorage.getItem('authToken');
|
||||
|
||||
const authToken = localStorage.getItem("authToken");
|
||||
|
||||
// Define which pages should be protected
|
||||
const protectedPages = [
|
||||
'/home.html',
|
||||
'advance-settings.html',
|
||||
'/bandlock.html',
|
||||
'/cell-locking.html',
|
||||
'/cell-scanner.html',
|
||||
'/cell-settings.html',
|
||||
'/cell-sms.html',
|
||||
'/about.html', // Add all the protected HTML pages here
|
||||
"/home.html",
|
||||
"advance-settings.html",
|
||||
"/bandlock.html",
|
||||
"/cell-locking.html",
|
||||
"/cell-scanner.html",
|
||||
"/cell-settings.html",
|
||||
"/cell-sms.html",
|
||||
"/about.html", // Add all the protected HTML pages here
|
||||
];
|
||||
|
||||
|
||||
const currentPage = window.location.pathname;
|
||||
|
||||
|
||||
// If the user is not logged in and tries to access a protected page, redirect to login
|
||||
if (!authToken && protectedPages.includes(currentPage)) {
|
||||
window.location.href = 'index.html';
|
||||
window.location.href = "index.html";
|
||||
} else {
|
||||
// Show the page if authentication is successful or not required
|
||||
document.body.style.display = '';
|
||||
// Show the page if authentication is successful or not required
|
||||
document.body.style.display = "";
|
||||
}
|
||||
|
||||
|
||||
// If the user is logged in and tries to access the login page, redirect to home
|
||||
if (authToken && currentPage.includes('index.html')) {
|
||||
window.location.href = 'home.html';
|
||||
if (authToken && currentPage.includes("index.html")) {
|
||||
window.location.href = "home.html";
|
||||
}
|
||||
|
||||
|
||||
// Login form logic (only for login page)
|
||||
const loginForm = document.getElementById('loginForm');
|
||||
const loginForm = document.getElementById("loginForm");
|
||||
if (loginForm) {
|
||||
loginForm.addEventListener('submit', (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
const username = document.getElementById('username').value;
|
||||
const password = document.getElementById('password').value;
|
||||
const errorElement = document.getElementById('error');
|
||||
|
||||
const validUsername = 'admin'; // Hardcoded credentials for demo purposes
|
||||
const validPassword = 'password123';
|
||||
|
||||
// Authenticate user
|
||||
if (username === validUsername && password === validPassword) {
|
||||
// Generate a random token
|
||||
const newToken = generateAuthToken();
|
||||
localStorage.setItem('authToken', newToken); // Store the generated token
|
||||
|
||||
// Redirect to home after successful login
|
||||
window.location.href = 'home.html';
|
||||
} else {
|
||||
errorElement.textContent = 'Invalid username or password';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Logout button logic (only for pages that have the logout button)
|
||||
const logoutButton = document.getElementById('logoutButton');
|
||||
if (logoutButton) {
|
||||
logoutButton.addEventListener('click', () => {
|
||||
localStorage.removeItem('authToken'); // Remove token
|
||||
window.location.href = 'index.html'; // Redirect to login
|
||||
});
|
||||
}
|
||||
|
||||
// Fix for the issue of being redirected to login every time the Home button is clicked
|
||||
document.querySelectorAll('.navbar-item').forEach(el => {
|
||||
if (el.textContent.includes('Home')) {
|
||||
el.addEventListener('click', e => {
|
||||
if (localStorage.getItem('authToken')) {
|
||||
e.preventDefault();
|
||||
window.location.href = 'home.html';
|
||||
}
|
||||
});
|
||||
loginForm.addEventListener("submit", async (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
const username = document.getElementById("username").value;
|
||||
const password = document.getElementById("password").value;
|
||||
const errorElement = document.getElementById("error");
|
||||
|
||||
try {
|
||||
const formData = new URLSearchParams();
|
||||
formData.append("username", username);
|
||||
formData.append("password", encodeURIComponent(password)); // URL-encode the password
|
||||
|
||||
const response = await fetch("/cgi-bin/auth.sh", {
|
||||
method: "POST",
|
||||
body: formData,
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
},
|
||||
});
|
||||
|
||||
const result = await response.json(); // Parse JSON response
|
||||
|
||||
if (result.state === "success") {
|
||||
const newToken = generateAuthToken();
|
||||
localStorage.setItem("authToken", newToken); // Store the token
|
||||
window.location.href = "home.html"; // Redirect on success
|
||||
} else {
|
||||
document.getElementById("error").textContent =
|
||||
"Invalid username or password";
|
||||
console.log("Invalid username or password");
|
||||
}
|
||||
} catch (error) {
|
||||
// Handle any errors (e.g., network issues)
|
||||
errorElement.textContent = "An error occurred. Please try again later.";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Logout button logic (only for pages that have the logout button)
|
||||
const logoutButton = document.getElementById("logoutButton");
|
||||
if (logoutButton) {
|
||||
logoutButton.addEventListener("click", () => {
|
||||
localStorage.removeItem("authToken"); // Remove token
|
||||
window.location.href = "index.html"; // Redirect to login
|
||||
});
|
||||
}
|
||||
|
||||
// Fix for the issue of being redirected to login every time the Home button is clicked
|
||||
document.querySelectorAll(".navbar-item").forEach((el) => {
|
||||
if (el.textContent.includes("Home")) {
|
||||
el.addEventListener("click", (e) => {
|
||||
if (localStorage.getItem("authToken")) {
|
||||
e.preventDefault();
|
||||
window.location.href = "home.html";
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
1047
www/js/home/main.js
Normal file
1047
www/js/home/main.js
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,20 +1,17 @@
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Get all "navbar-burger" elements
|
||||
const $navbarBurgers = Array.prototype.slice.call(
|
||||
document.querySelectorAll(".navbar-burger"),
|
||||
0
|
||||
);
|
||||
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
|
||||
|
||||
// Add a click event on each of them
|
||||
$navbarBurgers.forEach((el) => {
|
||||
el.addEventListener("click", () => {
|
||||
$navbarBurgers.forEach(el => {
|
||||
el.addEventListener('click', () => {
|
||||
// Get the target from the "data-target" attribute
|
||||
const target = el.dataset.target;
|
||||
const $target = document.getElementById(target);
|
||||
|
||||
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
|
||||
el.classList.toggle("is-active");
|
||||
$target.classList.toggle("is-active");
|
||||
el.classList.toggle('is-active');
|
||||
$target.classList.toggle('is-active');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user