add code of connect page

This commit is contained in:
FullGreaM 2025-02-06 17:14:52 +03:00
parent 941db4aa36
commit 643ea3efa5
4 changed files with 77 additions and 3 deletions

View File

@ -1,5 +1,18 @@
module.exports = function (req, res) { module.exports = function (req, res) {
console.log(123);
const serverAddress = req.query.server; const serverAddress = req.query.server;
const encryption = req.query.encrypted === "true";
if (req.query.encrypted === undefined || req.query.server === undefined)
return res.status(400).send(`<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<meta charset="utf-8">
</head>
<body class="bg text-white">
<h1>[400] Error</h1><hr/><p>unuse required params</p>
</body>
</html>`);
res.send(`<!DOCTYPE html> res.send(`<!DOCTYPE html>
<html> <html>
<head> <head>
@ -14,6 +27,8 @@ module.exports = function (req, res) {
<script> <script>
document.getElementById("js-required").innerHTML = "<p>Loading...</p>"; document.getElementById("js-required").innerHTML = "<p>Loading...</p>";
</script> </script>
<script src="/bootstrap/bootstrap.bundle.min.js" defer></script>
<script src="/js/connect/main.js" type="module" defer></script>
</body> </body>
</html>`); </html>`);
} }

View File

@ -0,0 +1,58 @@
// load styles
document.head.innerHTML += '\\n <link href="/bootstrap/bootstrap.min.css" rel="stylesheet">';
document.head.innerHTML += '\\n <link href="/css/main.css" rel="stylesheet">';
document.head.innerHTML += '\\n <link href="/font-awesome/css/all.css" rel="stylesheet">';
document.head.innerHTML += '\\n <link rel="icon" href="/favicon.png">'
// load main page
document.body.innerHTML = `<nav id="navbar-main" class="navbar navbar-dark bg-dark navbar-expand-lg noselect" style="background-color: #e3f2fd;">
<a style="padding-left:10px" class="navbar-brand linked-btn" onclick="fl.go('/');">
Подключение...
</a>
<div class="collapse navbar-collapse noselect" id="navbarNav"><ul class="navbar-nav"><ul class="navbar-nav">
<div class="vr"></div>
<li class="nav-item">
<a class="nav-link translate linked-btn noselect" aria-current="page" onclick="fl.go('/');" id="nav-home-btn"><i class="fas fa-home"></i> Главная</a>
</li>
<li class="nav-item">
<a class="nav-link translate linked-btn noselect" aria-current="page" onclick="fl.go('/blog');" id="nav-docs-btn"><i class="fab fa-microblog"></i> Мой блог</a>
</li>
<li class="nav-item">
<a class="nav-link translate linked-btn noselect" aria-current="page" onclick="fl.go('/contacts');" id="nav-docs-btn"><i class="fas fa-address-book"></i> Контакты</a>
</li>
<li class="nav-item">
<a class="nav-link translate linked-btn noselect" aria-current="page" onclick="fl.go('/projects');" id="nav-docs-btn"><i class="fas fa-folder-open"></i> Проекты</a>
</li>
<li class="nav-item">
<a class="nav-link translate linked-btn noselect" aria-current="page" onclick="fl.go('/knowledge-base');" id="nav-docs-btn"><i class="fas fa-book"></i> База знаний</a>
</li>
<li class="nav-item">
<a class="nav-link translate linked-btn noselect" aria-current="page" onclick="fl.goToLocation('https://git.fullgream.tech/fullgream?tab=activity');" id="nav-docs-btn"><i class="fab fa-git-alt"></i> Мой git</a>
</li>
<li class="nav-item">
<a class="nav-link translate linked-btn noselect" aria-current="page" onclick="fl.go('/price');" id="nav-docs-btn"><i class="fas fa-coins"></i> Услуги</a>
</li>
<li class="nav-item">
<a class="nav-link translate linked-btn noselect" aria-current="page" onclick="fl.go('/dnd');" id="nav-docs-btn"><i class="fas fa-dice-d20"></i> D&D</a>
</li>
</ul></div>
<div class="vr" style="margin-right:5px"></div>
<div class="d-flex" style="margin-right:10px" id="navbar-user-menu">
<div id="fp-condition-div">
<button id="fp-condition" class="btn btn-outline-secondary" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><i class="fas fa-fingerprint"></i></button>
</div>
<div class="vr" style="margin-right:5px; margin-left: 5px"></div>
<button onclick="fl.go('/auth');" class="btn btn-outline-secondary" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><i class="fas fa-key"></i> Авторизация</button>
</div>
</nav>
<div id="fl.area">
<div style='margin-top: 30vh'>
<center>
<h1>Connection to server...</h1>
<h3 class="rotate"><i class="fas fa-sync-alt fa-spin"></i></h3>
</center>
</div>
</div>`;
//document <i class="fas fa-sync-alt"></i>

View File

@ -147,7 +147,7 @@ fl.bindLoad("/connect", () => {
document.getElementById(btn.itemID).onclick = () => { document.getElementById(btn.itemID).onclick = () => {
checkContentWarning(() => { checkContentWarning(() => {
const serverInfo = serversByItemID[btn.itemID].serverItem; const serverInfo = serversByItemID[btn.itemID].serverItem;
window.open(`/connect-area?server=${serverInfo.address}:${serverInfo.port}`); window.open(`/connect-area?server=${serverInfo.address}:${serverInfo.port}&encrypted=${serverInfo.secureMode ? "true" : "false"}`);
}); });
}; };
}); });

View File

@ -16,10 +16,11 @@ class PacketParseResult {
} }
module.exports = async (bytes) => { module.exports = async (bytes) => {
// console.log("((('", bytes.toString("utf8"), "')))"); console.log("((('", bytes.toString("utf8"), "')))");
const packet = bytes.toString("utf8"); const packet = bytes.toString("utf8");
const isHTTP = packet.match(/(GET|POST|PUT|DELETE|OPTIONS|HEAD|PATCH|TRACE|CONNECT)\s{1,}\/[a-zA-Z0-9_\-\.\/?=&%]{0,}\s{1,}HTTP(S|)\/(1\.0|1\.1|2\.0)(\n|\r)/gmu)?.length > 0 ?? false; const isHTTP = packet.match(/(GET|POST|PUT|DELETE|OPTIONS|HEAD|PATCH|TRACE|CONNECT)\s{1,}\/[a-zA-Z0-9_\-\.\/?=&%:]{0,}\s{1,}HTTP(S|)\/(1\.0|1\.1|2\.0)(\n|\r)/gmu)?.length > 0 ?? false;
console.log({ isHTTP });
let isWebSocket = false; let isWebSocket = false;
if (isHTTP) { if (isHTTP) {
const headers = simpleParseHeaders(packet); const headers = simpleParseHeaders(packet);