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"
|
crossorigin="anonymous"
|
||||||
></script>
|
></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 src="js/styles/toggle-theme.js"></script>
|
||||||
<script defer src="/js/auth/auth.js"></script>
|
<script defer src="/js/auth/auth.js"></script>
|
||||||
<script src="/js/handle-at-input.js"></script>
|
<script src="/js/handle-at-input.js"></script>
|
||||||
@@ -41,79 +41,83 @@
|
|||||||
<img src="/assets/logo.png" alt="Logo" />
|
<img src="/assets/logo.png" alt="Logo" />
|
||||||
<span class="title">QuecManager</span>
|
<span class="title">QuecManager</span>
|
||||||
</a>
|
</a>
|
||||||
<div
|
<a
|
||||||
class="navbar-burger js-burger"
|
role="button"
|
||||||
data-target="navbarExampleTransparentExample"
|
class="navbar-burger"
|
||||||
|
aria-label="menu"
|
||||||
|
aria-expanded="false"
|
||||||
|
data-target="navMenu"
|
||||||
>
|
>
|
||||||
<span></span>
|
<span aria-hidden="true"></span>
|
||||||
<span></span>
|
<span aria-hidden="true"></span>
|
||||||
<span></span>
|
<span aria-hidden="true"></span>
|
||||||
<span></span>
|
<span aria-hidden="true"></span>
|
||||||
</div>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="navbarExampleTransparentExample" class="navbar-menu">
|
<div id="navMenu" class="navbar-menu">
|
||||||
<div class="navbar-start ml-6">
|
<div class="navbar-start ml-6">
|
||||||
<a class="navbar-item" href="/"> Home </a>
|
<a class="navbar-item" href="/"> Home </a>
|
||||||
<div class="navbar-item has-dropdown is-hoverable">
|
<div class="navbar-item has-dropdown is-hoverable">
|
||||||
<a class="navbar-link"> Cellular </a>
|
<a class="navbar-link"> Cellular </a>
|
||||||
<div class="navbar-dropdown is-boxed">
|
<div class="navbar-dropdown is-boxed">
|
||||||
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
<a class="navbar-item" href="/bandlock.html"> Band Locking </a>
|
||||||
<a class="navbar-item" href="/cell-locking.html">
|
<a class="navbar-item" href="/cell-locking.html">Cell Locking</a>
|
||||||
Cell Locking
|
<a class="navbar-item" href="/cell-scanner.html">Cell Scanner</a>
|
||||||
</a>
|
<a class="navbar-item" href="/cell-settings.html"
|
||||||
<a class="navbar-item" href="/cell-scanner.html">
|
>Cell Settings</a
|
||||||
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>
|
<a class="navbar-item" href="/cell-sms.html"> Cell SMS </a>
|
||||||
</div>
|
</div>
|
||||||
</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>
|
<a class="navbar-item" href="/about.html"> About </a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navbar-end">
|
<div class="navbar-end">
|
||||||
<div class="navbar-item">
|
<div class="navbar-item">
|
||||||
<div class="field is-grouped">
|
<div class="buttons is-flex-direction-column-mobile">
|
||||||
<p class="control">
|
<p class="control is-expanded-mobile">
|
||||||
<a href="#" class="button is-link is-outlined">
|
<a
|
||||||
|
href="#"
|
||||||
|
class="button is-link is-outlined is-fullwidth-mobile"
|
||||||
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="fas fa-arrows-rotate"></i>
|
<i class="fas fa-arrows-rotate"></i>
|
||||||
</span>
|
</span>
|
||||||
<span>Restart Connection</span>
|
<span>Restart Connection</span>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
<p class="control">
|
<div class="is-flex is-mobile is-align-items-center">
|
||||||
<a href="#" class="button is-warning is-outlined">
|
<p class="control">
|
||||||
<span class="icon">
|
<a href="#" class="button is-warning is-outlined">
|
||||||
<i class="fas fa-power-off"></i>
|
<span class="icon">
|
||||||
</span>
|
<i class="fas fa-power-off"></i>
|
||||||
</a>
|
</span>
|
||||||
</p>
|
</a>
|
||||||
<p class="control">
|
</p>
|
||||||
<a
|
<p class="control ml-2 is-mobile">
|
||||||
href="#"
|
<a
|
||||||
class="button is-warning is-outlined js-theme-toggle"
|
href="#"
|
||||||
>
|
class="button is-warning is-outlined js-theme-toggle"
|
||||||
<span class="icon">
|
>
|
||||||
<i class="fas fa-sun"></i>
|
<span class="icon">
|
||||||
</span>
|
<i class="fas fa-sun"></i>
|
||||||
</a>
|
</span>
|
||||||
</p>
|
</a>
|
||||||
<p class="control">
|
</p>
|
||||||
<a
|
<p class="control ml-2 is-mobile">
|
||||||
href="#"
|
<a
|
||||||
class="button is-warning is-outlined js-theme-toggle"
|
href="#"
|
||||||
id="logoutButton"
|
class="button is-warning is-outlined js-theme-toggle"
|
||||||
>
|
id="logoutButton"
|
||||||
<span class="icon">
|
>
|
||||||
<i class="fas fa-right-from-bracket"></i>
|
<span class="icon">
|
||||||
</span>
|
<i class="fas fa-right-from-bracket"></i>
|
||||||
</a>
|
</span>
|
||||||
</p>
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</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
|
# URL-decode the command
|
||||||
COMMAND=$(urldecode "$RAW_COMMAND")
|
COMMAND=$(urldecode "$RAW_COMMAND")
|
||||||
|
|
||||||
# Save the command input to at_input.txt
|
# Save the command input to a unique at_input file
|
||||||
echo "$COMMAND" > /tmp/at_input.txt
|
AT_INPUT_FILE="/tmp/at_input_$$.txt"
|
||||||
|
echo "$COMMAND" > "$AT_INPUT_FILE"
|
||||||
|
|
||||||
# Define the input/output files and AT port
|
# Define unique input/output files and AT port
|
||||||
INPUT_FILE="/tmp/input.txt"
|
INPUT_FILE="/tmp/input_$$.txt"
|
||||||
OUTPUT_FILE="/tmp/output.txt"
|
OUTPUT_FILE="/tmp/output_$$.txt"
|
||||||
AT_PORT="/dev/smd11"
|
AT_PORT="/dev/smd11"
|
||||||
|
|
||||||
# Copy the user input to the input file
|
# Ensure exclusive access to the AT port to avoid overloading smd11
|
||||||
cp /tmp/at_input.txt "$INPUT_FILE"
|
(
|
||||||
|
flock -x 200
|
||||||
|
|
||||||
# Run the command using atinout
|
# Copy the user input to the input file
|
||||||
atinout "$INPUT_FILE" "$AT_PORT" "$OUTPUT_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
|
# Read the output from output.txt
|
||||||
OUTPUT=$(cat "$OUTPUT_FILE")
|
OUTPUT=$(cat "$OUTPUT_FILE")
|
||||||
@@ -49,4 +55,7 @@ JSON_RESPONSE=$(printf "{\"command\":\"%s\",\"output\":\"%s\"}" "$ESCAPED_COMMAN
|
|||||||
echo "$JSON_RESPONSE" >> /tmp/cgi_debug.log
|
echo "$JSON_RESPONSE" >> /tmp/cgi_debug.log
|
||||||
|
|
||||||
# Return the output as a valid JSON response
|
# 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 {
|
html {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
@@ -27,12 +35,33 @@ html.theme-light {
|
|||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* .font-is-semibold {
|
.cell {
|
||||||
font-weight: 600;
|
display: grid;
|
||||||
} */
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
/* .content-end {
|
#handleRefreshClickButton {
|
||||||
display: flex;
|
cursor: pointer;
|
||||||
justify-content: flex-end;
|
}
|
||||||
align-items: center;
|
|
||||||
} */
|
#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 to generate a random token
|
||||||
function generateAuthToken(length = 32) {
|
function generateAuthToken(length = 32) {
|
||||||
const charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
const charset =
|
||||||
let token = '';
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||||
for (let i = 0; i < length; i++) {
|
let token = "";
|
||||||
const randomIndex = Math.floor(Math.random() * charset.length);
|
for (let i = 0; i < length; i++) {
|
||||||
token += charset[randomIndex];
|
const randomIndex = Math.floor(Math.random() * charset.length);
|
||||||
}
|
token += charset[randomIndex];
|
||||||
return token;
|
}
|
||||||
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initially hide the body to prevent content from flashing
|
// 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
|
// Check if the user is already logged in
|
||||||
const authToken = localStorage.getItem('authToken');
|
const authToken = localStorage.getItem("authToken");
|
||||||
|
|
||||||
// Define which pages should be protected
|
// Define which pages should be protected
|
||||||
const protectedPages = [
|
const protectedPages = [
|
||||||
'/home.html',
|
"/home.html",
|
||||||
'advance-settings.html',
|
"advance-settings.html",
|
||||||
'/bandlock.html',
|
"/bandlock.html",
|
||||||
'/cell-locking.html',
|
"/cell-locking.html",
|
||||||
'/cell-scanner.html',
|
"/cell-scanner.html",
|
||||||
'/cell-settings.html',
|
"/cell-settings.html",
|
||||||
'/cell-sms.html',
|
"/cell-sms.html",
|
||||||
'/about.html', // Add all the protected HTML pages here
|
"/about.html", // Add all the protected HTML pages here
|
||||||
];
|
];
|
||||||
|
|
||||||
const currentPage = window.location.pathname;
|
const currentPage = window.location.pathname;
|
||||||
|
|
||||||
// If the user is not logged in and tries to access a protected page, redirect to login
|
// If the user is not logged in and tries to access a protected page, redirect to login
|
||||||
if (!authToken && protectedPages.includes(currentPage)) {
|
if (!authToken && protectedPages.includes(currentPage)) {
|
||||||
window.location.href = 'index.html';
|
window.location.href = "index.html";
|
||||||
} else {
|
} else {
|
||||||
// Show the page if authentication is successful or not required
|
// Show the page if authentication is successful or not required
|
||||||
document.body.style.display = '';
|
document.body.style.display = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the user is logged in and tries to access the login page, redirect to home
|
// If the user is logged in and tries to access the login page, redirect to home
|
||||||
if (authToken && currentPage.includes('index.html')) {
|
if (authToken && currentPage.includes("index.html")) {
|
||||||
window.location.href = 'home.html';
|
window.location.href = "home.html";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Login form logic (only for login page)
|
// Login form logic (only for login page)
|
||||||
const loginForm = document.getElementById('loginForm');
|
const loginForm = document.getElementById("loginForm");
|
||||||
if (loginForm) {
|
if (loginForm) {
|
||||||
loginForm.addEventListener('submit', (e) => {
|
loginForm.addEventListener("submit", async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const username = document.getElementById('username').value;
|
const username = document.getElementById("username").value;
|
||||||
const password = document.getElementById('password').value;
|
const password = document.getElementById("password").value;
|
||||||
const errorElement = document.getElementById('error');
|
const errorElement = document.getElementById("error");
|
||||||
|
|
||||||
const validUsername = 'admin'; // Hardcoded credentials for demo purposes
|
try {
|
||||||
const validPassword = 'password123';
|
const formData = new URLSearchParams();
|
||||||
|
formData.append("username", username);
|
||||||
// Authenticate user
|
formData.append("password", encodeURIComponent(password)); // URL-encode the password
|
||||||
if (username === validUsername && password === validPassword) {
|
|
||||||
// Generate a random token
|
const response = await fetch("/cgi-bin/auth.sh", {
|
||||||
const newToken = generateAuthToken();
|
method: "POST",
|
||||||
localStorage.setItem('authToken', newToken); // Store the generated token
|
body: formData,
|
||||||
|
headers: {
|
||||||
// Redirect to home after successful login
|
"Content-Type": "application/x-www-form-urlencoded",
|
||||||
window.location.href = 'home.html';
|
},
|
||||||
} else {
|
});
|
||||||
errorElement.textContent = 'Invalid username or password';
|
|
||||||
}
|
const result = await response.json(); // Parse JSON response
|
||||||
});
|
|
||||||
}
|
if (result.state === "success") {
|
||||||
|
const newToken = generateAuthToken();
|
||||||
// Logout button logic (only for pages that have the logout button)
|
localStorage.setItem("authToken", newToken); // Store the token
|
||||||
const logoutButton = document.getElementById('logoutButton');
|
window.location.href = "home.html"; // Redirect on success
|
||||||
if (logoutButton) {
|
} else {
|
||||||
logoutButton.addEventListener('click', () => {
|
document.getElementById("error").textContent =
|
||||||
localStorage.removeItem('authToken'); // Remove token
|
"Invalid username or password";
|
||||||
window.location.href = 'index.html'; // Redirect to login
|
console.log("Invalid username or password");
|
||||||
});
|
}
|
||||||
}
|
} catch (error) {
|
||||||
|
// Handle any errors (e.g., network issues)
|
||||||
// Fix for the issue of being redirected to login every time the Home button is clicked
|
errorElement.textContent = "An error occurred. Please try again later.";
|
||||||
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';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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
|
// Get all "navbar-burger" elements
|
||||||
const $navbarBurgers = Array.prototype.slice.call(
|
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
|
||||||
document.querySelectorAll(".navbar-burger"),
|
|
||||||
0
|
|
||||||
);
|
|
||||||
|
|
||||||
// Add a click event on each of them
|
// Add a click event on each of them
|
||||||
$navbarBurgers.forEach((el) => {
|
$navbarBurgers.forEach(el => {
|
||||||
el.addEventListener("click", () => {
|
el.addEventListener('click', () => {
|
||||||
// Get the target from the "data-target" attribute
|
// Get the target from the "data-target" attribute
|
||||||
const target = el.dataset.target;
|
const target = el.dataset.target;
|
||||||
const $target = document.getElementById(target);
|
const $target = document.getElementById(target);
|
||||||
|
|
||||||
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
|
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
|
||||||
el.classList.toggle("is-active");
|
el.classList.toggle('is-active');
|
||||||
$target.classList.toggle("is-active");
|
$target.classList.toggle('is-active');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user