diff --git a/pages/loader.html b/pages/loader.html
deleted file mode 100644
index 50cde36..0000000
--- a/pages/loader.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
- Loading...
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/uv_404.html b/pages/uv_404.html
new file mode 100644
index 0000000..6058a7a
--- /dev/null
+++ b/pages/uv_404.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server/index.js b/server/index.js
index a097973..b09bbf7 100644
--- a/server/index.js
+++ b/server/index.js
@@ -67,7 +67,10 @@ app.get('/asset/:token', async (req, res, next) => {
}
});
-app.get('/uv/*', (req, res) => res.setHeader('Service-Worker-Allowed', 'true'));
+app.get('/uv/service*', async (req, res) => {
+ res.end(await rewriter.html(fs.readFileSync(path.join(__dirname, './pages/uv_404.html'))));
+ res.setHeader('Service-Worker-Allowed', 'true');
+});
app.use(async (req, res, next) => {
const {
diff --git a/server/utils/rewriter.js b/server/utils/rewriter.js
index 130ca02..31e2fbc 100644
--- a/server/utils/rewriter.js
+++ b/server/utils/rewriter.js
@@ -13,11 +13,9 @@ import fs from 'node:fs';
const mode = (process.argv[2] === 'prod' || process.argv[2] === 'dev' ? process.argv[2] : (process.argv[3] === 'prod' || process.argv[3] === 'dev' ? process.argv[3] : (config.mode === 'prod' || config.mode === 'dev' ? config.mode : 'prod')));
const __dirname = url.fileURLToPath(new URL('../', import.meta.url));
-const html = (data) => {
- return new Promise((resolve, reject) => {
- var html = String(data);
-
- const templates = html.split('')) return data.split('\n')[0].trim().replace('-->', '');
else return undefined;
@@ -36,13 +34,21 @@ const html = (data) => {
.map(data => {
return {
name: data,
- file: fs.readFileSync(path.join(__dirname, '../templates', (data ? (data.startsWith('{{') && data.split(':')[data.split(':').length - 2].endsWith('}}') ? data.split(':')[data.split(':').length - 1] : data) : undefined) + '.html'))
+ file: fs.readFileSync(path.join(__dirname, '../templates', (data ? (data.startsWith('{{') && data.split(':')[data.split(':').length - 2].endsWith('}}') ? data.split(':')[data.split(':').length - 1] : data) : undefined) + '.html').toString())
};
- });
+ }));
+ });
+};
- templates.forEach(template => html = html.replace(``, template.file.toString()));
+const html = (data) => {
+ return new Promise(async (resolve, reject) => {
+ var htmlData = String(data);
- const dom = new JSDOM(html);
+ const templates = await templateParser(data);
+
+ templates.forEach(template => htmlData = htmlData.replace(``, template.file));
+
+ const dom = new JSDOM(htmlData);
if (config.assetScrambling) {
for (let i = 0; i < dom.window.document.documentElement.querySelectorAll('script').length; i++) {
@@ -100,13 +106,11 @@ const javascript = (data) => {
let javascript = String(data);
- if (config.assetScrambling) {
- for (let i = 0; i < imports.length; i++) {
- javascript = javascript.replace(imports[i], '/asset/' + TokenManager.generate('asset', 20000, {
- asset: path.join(__dirname, '../static', imports[i]),
- type: 'text/javascript'
- }).token);
- }
+ if (config.assetScrambling) for (let i = 0; i < imports.length; i++) {
+ javascript = javascript.replace(imports[i], '/asset/' + TokenManager.generate('asset', 20000, {
+ asset: path.join(__dirname, '../static', imports[i]),
+ type: 'text/javascript'
+ }).token);
}
if (config.minify) resolve(JavaScriptObfuscator.obfuscate(javascript,
@@ -154,13 +158,11 @@ const css = (data) => {
let css = String(data);
- if (config.assetScrambling) {
- for (let i = 0; i < imports.length; i++) {
- css = css.replace(imports[i], '/asset/' + TokenManager.generate('asset', 20000, {
- asset: path.join(__dirname, '../static', imports[i]),
- type: mime.getType(path.join(__dirname, '../static', imports[i]))
- }).token);
- }
+ if (config.assetScrambling) for (let i = 0; i < imports.length; i++) {
+ css = css.replace(imports[i], '/asset/' + TokenManager.generate('asset', 20000, {
+ asset: path.join(__dirname, '../static', imports[i]),
+ type: mime.getType(path.join(__dirname, '../static', imports[i]))
+ }).token);
}
if (config.minify) resolve(css.replace(/(\r\n|\n|\r)/gm, '').replaceAll(' ', ' '));
diff --git a/static/assets/css/view.css b/static/assets/css/view.css
index 1c5b695..b5c15a6 100644
--- a/static/assets/css/view.css
+++ b/static/assets/css/view.css
@@ -15,7 +15,7 @@
}
.gamebar .logo {
- width: 8vh;
+ width: 6vh;
border-radius: 1.5vh;
display: inline-flex;
}
@@ -25,22 +25,5 @@
text-align: center;
font-size: 40px;
width: calc(100% - 20px);
- margin-top: calc(calc(calc(8vh - 10px) - 40px) / 2);
-}
-
-.gamebar .menu {
- cursor: pointer;
- position: absolute;
- right: 10px;
- border-radius: 1.5vh;
- padding: 1vh;
-}
-
-.gamebar .menu:hover {
- background: var(--solid);
-}
-
-.gamebar .menu i {
- color: var(--text);
- font-size: 5vh;
+ margin-top: calc(calc(calc(6vh - 10px) - 40px) / 2);
}
\ No newline at end of file
diff --git a/static/cheats.html b/static/cheats.html
index 05f9d82..298a9c9 100644
--- a/static/cheats.html
+++ b/static/cheats.html
@@ -25,16 +25,6 @@
-