redo a ton
This commit is contained in:
+2
-1
@@ -1 +1,2 @@
|
||||
/node_modules
|
||||
**/node_modules
|
||||
**/package-lock.json
|
||||
@@ -1,64 +1,69 @@
|
||||
import { createBareServer } from "@tomphttp/bare-server-node";
|
||||
import http from "node:http";
|
||||
import { createBareServer } from '@tomphttp/bare-server-node';
|
||||
import http from 'node:http';
|
||||
import express from 'express';
|
||||
import path from 'node:path';
|
||||
import mime from 'mime';
|
||||
import cors from 'cors';
|
||||
import url from 'url';
|
||||
import fs from 'node:fs';
|
||||
|
||||
const app = express();
|
||||
const server = http.createServer();
|
||||
const bareServer = createBareServer("/bare/");
|
||||
const bareServer = createBareServer('/bare/');
|
||||
|
||||
const port = process.env.PORT || process.argv[2] || 8080;
|
||||
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
||||
|
||||
app.use(express.static(path.join(__dirname, '/static'), { extensions: ['html'] }));
|
||||
let navbar = fs.readFileSync('./templates/navbar.html', 'utf-8');
|
||||
|
||||
app.get('/cdn/*', cors({ origin: false }), async (req, res, next) => {
|
||||
|
||||
fs.readdirSync('./pages').forEach(file => {
|
||||
let fileData = fs.readFileSync('./pages/' + file, 'utf-8');
|
||||
fileData = fileData.replace('<body>', '<body> ' + navbar);
|
||||
app.get(`/${file.split('.')[0] === 'index' ? '' : file.split('.')[0]}`, (req, res) => res.status(200).send(fileData));
|
||||
});
|
||||
|
||||
app.use(express.static(path.join(__dirname, '/static')));
|
||||
|
||||
app.get('/cdn/*', cors({
|
||||
origin: false
|
||||
}), async (req, res, next) => {
|
||||
let reqTarget = `https://raw.githubusercontent.com/Skoolgq/Polaris-Assets/main/${req.path.replace('/cdn/', '')}`;
|
||||
|
||||
|
||||
const asset = await fetch(reqTarget);
|
||||
if (asset.status == 200) {
|
||||
var data = Buffer.from(await asset.arrayBuffer());
|
||||
|
||||
|
||||
const noRewrite = ['.unityweb'];
|
||||
if (!noRewrite.includes(mime.getExtension(reqTarget))) res.writeHead(200, {
|
||||
'content-type': mime.getType(reqTarget)
|
||||
});
|
||||
|
||||
if (mime.getType(reqTarget) === 'text/html') data = data + '<script src="/assets/js/cdn_inject.js" preload="true"></script>';
|
||||
if (mime.getType(reqTarget) === 'text/html') data = data + '<script src=\'/assets/js/cdn_inject.js\' preload=\'true\'></script>';
|
||||
|
||||
res.end(data);
|
||||
} else next();
|
||||
});
|
||||
|
||||
app.use((req, res, next) => {
|
||||
res.status(404).sendFile(path.join(__dirname, './static/', '404.html'));
|
||||
let notFoundFile = fs.readFileSync('./pages/404.html', 'utf-8');
|
||||
notFoundFile = notFoundFile.replace('<body>', '<body> ' + navbar);
|
||||
app.use((req, res, next) => res.status(404).send(notFoundFile));
|
||||
|
||||
server.on('request', (req, res) => {
|
||||
if (bareServer.shouldRoute(req)) bareServer.routeRequest(req, res);
|
||||
else app(req, res);
|
||||
});
|
||||
|
||||
server.on("request", (req, res) => {
|
||||
if (bareServer.shouldRoute(req)) {
|
||||
bareServer.routeRequest(req, res);
|
||||
} else {
|
||||
app(req, res);
|
||||
}
|
||||
});
|
||||
|
||||
server.on("upgrade", (req, socket, head) => {
|
||||
if (bareServer.shouldRoute(req)) {
|
||||
bareServer.routeUpgrade(req, socket, head);
|
||||
} else {
|
||||
socket.end();
|
||||
}
|
||||
server.on('upgrade', (req, socket, head) => {
|
||||
if (bareServer.shouldRoute(req)) bareServer.routeUpgrade(req, socket, head);
|
||||
else socket.end();
|
||||
});
|
||||
|
||||
|
||||
server.on("listening", () => {
|
||||
// plastics you can modify this urself
|
||||
console.log(`Polaris running at localhost:${port}`);
|
||||
server.on('listening', () => {
|
||||
console.log(`Polaris started! http://localhost:${port}`);
|
||||
});
|
||||
|
||||
server.listen({
|
||||
port: port
|
||||
});
|
||||
//darian was here
|
||||
port
|
||||
});
|
||||
+13
-16
@@ -5,27 +5,24 @@
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"start": "node index.js"
|
||||
"start": "node index.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/polarisdevs/Polaris.git"
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/polarisdevs/Polaris.git"
|
||||
},
|
||||
"keywords": [
|
||||
"games",
|
||||
"unblocked",
|
||||
"proxy"
|
||||
"games",
|
||||
"unblocked",
|
||||
"proxy"
|
||||
],
|
||||
"author": "Polaris Development Group",
|
||||
"license": "ISC",
|
||||
"bugs": {
|
||||
"url": "https://github.com/polarisdevs/Polaris/issues"
|
||||
},
|
||||
"author": "Polaris Developments",
|
||||
"license": "GNU-3.0-or-later",
|
||||
"homepage": "https://github.com/polarisdevs/Polaris#readme",
|
||||
"dependencies": {
|
||||
"@tomphttp/bare-server-node": "*",
|
||||
"cors": "*",
|
||||
"express": "*",
|
||||
"mime": "*"
|
||||
"@tomphttp/bare-server-node": "*",
|
||||
"cors": "*",
|
||||
"express": "*",
|
||||
"mime": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>404 Error | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content box">
|
||||
<h1 style="font-size: 50px;">404</h1>
|
||||
<p>Looks you found a page that does not exist! Try checking your url for spelling mistakes.<br><br>Or, you can report it in our <a href="//dsc.gg/skoolworld">discord server</a>.</p>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>Apps | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<h1>Apps</h1>
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key': 'e5492073c242a1fe121f0a648fa2617f',
|
||||
'format': 'iframe',
|
||||
'height': 90,
|
||||
'width': 728,
|
||||
'params': {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e5492073c242a1fe121f0a648fa2617f/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
<br>
|
||||
|
||||
<div class="apps"></div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>Cheats | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<h1>Cheats</h1>
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key': 'e5492073c242a1fe121f0a648fa2617f',
|
||||
'format': 'iframe',
|
||||
'height': 90,
|
||||
'width': 728,
|
||||
'params': {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e5492073c242a1fe121f0a648fa2617f/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
<br>
|
||||
|
||||
<div class="games"></div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>Games | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<h1 style="font-size: 5vh;">Games</h1>
|
||||
<input type="text" id="searchInput" class="settings-input" placeholder="Search Games...">
|
||||
<br>
|
||||
<div style="padding-bottom: 2vh;">
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key': 'e5492073c242a1fe121f0a648fa2617f',
|
||||
'format': 'iframe',
|
||||
'height': 90,
|
||||
'width': 728,
|
||||
'params': {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e5492073c242a1fe121f0a648fa2617f/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
<br>
|
||||
<div class="games">
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
<meta name="6f9c120da628a61af2a67d51a1785baa69240b33" content="6f9c120da628a61af2a67d51a1785baa69240b33" />
|
||||
<title>Home | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="center-content">
|
||||
<div class="mainpageimage">
|
||||
<div class="featuredcontainer">
|
||||
<div class="featuredtopbar">
|
||||
<b>
|
||||
<p>Featured Game</p>
|
||||
</b>
|
||||
</div>
|
||||
<div>
|
||||
<img class="featuredimg" loading="eager" data-link="true" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mainpage-text">
|
||||
<h1>Polaris</h1>
|
||||
<p>By Skool</p>
|
||||
<br>
|
||||
<a href="https://discord.gg/skool"><button>Join our Discord</button></a>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>Search | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<div class="proxycontainer">
|
||||
<h1 style="font-size: 6vh;">Proxy</h1>
|
||||
|
||||
<form id="wpf">
|
||||
<input class="proxyinput" type="text" id="query" placeholder="URL or Search Query" />
|
||||
</form>
|
||||
</div>
|
||||
<div style="bottom: 0; margin-top: 30vh;">
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key': 'e5492073c242a1fe121f0a648fa2617f',
|
||||
'format': 'iframe',
|
||||
'height': 90,
|
||||
'width': 728,
|
||||
'params': {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e5492073c242a1fe121f0a648fa2617f/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>View | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div style="float: left; position: absolute;">
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key': 'e7cee1bad8f584684778a0308af26f96',
|
||||
'format': 'iframe',
|
||||
'height': 300,
|
||||
'width': 160,
|
||||
'params': {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e7cee1bad8f584684778a0308af26f96/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
<br>
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key': 'e7cee1bad8f584684778a0308af26f96',
|
||||
'format': 'iframe',
|
||||
'height': 300,
|
||||
'width': 160,
|
||||
'params': {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e7cee1bad8f584684778a0308af26f96/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
</div>
|
||||
<div>
|
||||
<iframe class="frame" scrolling="no" frameborder="no" sandbox="allow-scripts allow-forms allow-pointer-lock allow-same-origin"></iframe>
|
||||
|
||||
<div class="gamebar">
|
||||
<img src="https://via.placeholder.com/20x20?text=img" id="gameicon" />
|
||||
<p id="gametitle">Loading...</p>
|
||||
<i class="fa-solid fa-expand" id="fullscreen"></i>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>404 Error | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content box">
|
||||
<h1 style="font-size: 50px;">404</h1>
|
||||
<p>Looks you found a page that does not exist! Try checking your url for spelling mistakes.<br><br>Or, you can report it in our <a href="//dsc.gg/skoolworld">discord server</a>.</p>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,31 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>AnuraOS | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div>
|
||||
<iframe class="frame" scrolling="no" frameborder="no" sandbox="allow-scripts allow-forms allow-pointer-lock allow-same-origin"></iframe>
|
||||
|
||||
<div class="gamebar">
|
||||
<img src="/assets/img/chromebook.jpg" id="gameicon"/>
|
||||
<p id="gametitle">AnuraOS</p>
|
||||
<i class="fa-solid fa-expand" id="fullscreen"></i>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
const iframe = document.querySelector('.frame');
|
||||
iframe.src = "//anura.mercurywork.shop";
|
||||
</script>
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,88 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>App | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div style="float: left; position: absolute;">
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key' : 'e7cee1bad8f584684778a0308af26f96',
|
||||
'format' : 'iframe',
|
||||
'height' : 300,
|
||||
'width' : 160,
|
||||
'params' : {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e7cee1bad8f584684778a0308af26f96/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
<br>
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key' : 'e7cee1bad8f584684778a0308af26f96',
|
||||
'format' : 'iframe',
|
||||
'height' : 300,
|
||||
'width' : 160,
|
||||
'params' : {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e7cee1bad8f584684778a0308af26f96/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
</div>
|
||||
<div>
|
||||
<iframe style="" class="frame" scrolling="yes" frameborder="no" sandbox="allow-scripts allow-forms allow-pointer-lock allow-same-origin"></iframe>
|
||||
|
||||
<div class="gamebar">
|
||||
<img src="https://via.placeholder.com/20x20?text=img" id="gameicon"/>
|
||||
<p id="gametitle">Loading...</p>
|
||||
<i class="fa-solid fa-expand" id="fullscreen"></i>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'f') {
|
||||
const iframe = document.querySelector('.frame');
|
||||
|
||||
if (iframe.requestFullscreen) iframe.requestFullscreen();
|
||||
else if (iframe.webkitRequestFullscreen) iframe.webkitRequestFullscreen();
|
||||
else if (iframe.mozRequestFullScreen) iframe.mozRequestFullScreen();
|
||||
else if (iframe.msRequestFullscreen) iframe.msRequestFullscreen();
|
||||
}
|
||||
});
|
||||
|
||||
fetch('/assets/JSON/apps.json')
|
||||
.then(res => res.json())
|
||||
.then(games => {
|
||||
const game = games[Number(new URLSearchParams(location.search).get('id'))];
|
||||
|
||||
if (game) {
|
||||
const iframe = document.querySelector('.frame');
|
||||
|
||||
iframe.src = game.source;
|
||||
document.querySelector('#gameicon').src = game.image;
|
||||
document.querySelector('#gametitle').textContent = game.name;
|
||||
} else {
|
||||
document.querySelector('#gametitle').textContent = 'Failed to load App';
|
||||
}
|
||||
});
|
||||
|
||||
document.querySelector('#fullscreen').addEventListener('click', () => {
|
||||
const iframe = document.querySelector('.frame');
|
||||
|
||||
if (iframe.requestFullscreen) iframe.requestFullscreen();
|
||||
else if (iframe.webkitRequestFullscreen) iframe.webkitRequestFullscreen();
|
||||
else if (iframe.mozRequestFullScreen) iframe.mozRequestFullScreen();
|
||||
else if (iframe.msRequestFullscreen) iframe.msRequestFullscreen();
|
||||
});
|
||||
</script>
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
||||
@@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>Apps | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<h1>Apps</h1>
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key' : 'e5492073c242a1fe121f0a648fa2617f',
|
||||
'format' : 'iframe',
|
||||
'height' : 90,
|
||||
'width' : 728,
|
||||
'params' : {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e5492073c242a1fe121f0a648fa2617f/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
<br>
|
||||
|
||||
<div class="apps"></div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,50 +1,42 @@
|
||||
[
|
||||
{
|
||||
"name": "Discord",
|
||||
"image": "/assets/img/discord.png",
|
||||
"source": "/service/hvtrs8%2F-dksaopd%2Ccmm-lmgkn",
|
||||
"quickname": "discord"
|
||||
},
|
||||
{
|
||||
"name": "Reddit",
|
||||
"image": "/assets/img/reddit.png",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Crgdfiv.aoo%2F%3Drft%3F40003",
|
||||
"quickname": "reddit"
|
||||
},
|
||||
{
|
||||
"name": "Tiktok",
|
||||
"image": "/assets/img/tiktok.png",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Ctkkvoi.aoo%2Fgn-",
|
||||
"quickname": "tiktok"
|
||||
},
|
||||
{
|
||||
"name": "Twitch",
|
||||
"image": "/assets/img/twitch.png",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Ctuivcj.vv-",
|
||||
"quickname": "twitch"
|
||||
},
|
||||
{
|
||||
"name": "Twitter",
|
||||
"image": "/assets/img/twitter.png",
|
||||
"source": "/service/hvtrs8%2F-tuivtgr%2Ccmm-",
|
||||
"quickname": "twitter"
|
||||
},
|
||||
{
|
||||
"name": "Youtube",
|
||||
"image": "/assets/img/youtube.png",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Cymuvu%60e%2Ccmm-",
|
||||
"quickname": "youtube"
|
||||
},
|
||||
{
|
||||
"name": "Spotify",
|
||||
"image": "/assets/img/spotify.png",
|
||||
"source": "/service/hvtrs8%2F-orel.qpmtkf%7B.aoo%2F",
|
||||
"quickname": "spotify"
|
||||
},
|
||||
{
|
||||
"name": "GeForce Now",
|
||||
"image": "/assets/img/gnow.png",
|
||||
"source": "/service/hvtrs8%2F-pna%7B.eedopcgnmw%2Ccmm-mcln%2F#/layout/games",
|
||||
"quickname": "geforcenow"
|
||||
}
|
||||
]
|
||||
{
|
||||
"name": "Discord",
|
||||
"image": "/assets/img/discord.png",
|
||||
"source": "/service/hvtrs8%2F-dksaopd%2Ccmm-lmgkn"
|
||||
},
|
||||
{
|
||||
"name": "Reddit",
|
||||
"image": "/assets/img/reddit.png",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Crgdfiv.aoo%2F%3Drft%3F40003"
|
||||
},
|
||||
{
|
||||
"name": "Tiktok",
|
||||
"image": "/assets/img/tiktok.png",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Ctkkvoi.aoo%2Fgn-"
|
||||
},
|
||||
{
|
||||
"name": "Twitch",
|
||||
"image": "/assets/img/twitch.png",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Ctuivcj.vv-"
|
||||
},
|
||||
{
|
||||
"name": "Twitter",
|
||||
"image": "/assets/img/twitter.png",
|
||||
"source": "/service/hvtrs8%2F-tuivtgr%2Ccmm-"
|
||||
},
|
||||
{
|
||||
"name": "Youtube",
|
||||
"image": "/assets/img/youtube.png",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Cymuvu%60e%2Ccmm-"
|
||||
},
|
||||
{
|
||||
"name": "Spotify",
|
||||
"image": "/assets/img/spotify.png",
|
||||
"source": "/service/hvtrs8%2F-orel.qpmtkf%7B.aoo%2F"
|
||||
},
|
||||
{
|
||||
"name": "GeForce Now",
|
||||
"image": "/assets/img/gnow.png",
|
||||
"source": "/service/hvtrs8%2F-pna%7B.eedopcgnmw%2Ccmm-mcln%2F#/layout/games"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,37 @@
|
||||
[
|
||||
{
|
||||
"name": "Kahoot",
|
||||
"source": "/service/hvtrs8%2F-kchmov.alwb-pna%7B%2F",
|
||||
"image": "https://images.crunchbase.com/image/upload/c_lpad,f_auto,q_auto:eco,dpr_1/bscfnl23chnan1yyilrn"
|
||||
},
|
||||
{
|
||||
"name": "Prodigy",
|
||||
"source": "/service/hvtrs8%2F-wuw%2Cppofieyz.mre%2Fknqtclnilg-",
|
||||
"image": "https://webcdn.prodigygame.com/common/images/socialshare.png"
|
||||
},
|
||||
{
|
||||
"name": "Blooket",
|
||||
"source": "/service/hvtrs8%2F-07kmnx.eivhwb%2Cim%2F%40lmoiev-Ahgavs-",
|
||||
"image": "https://media.discordapp.net/attachments/1118495479802630174/1158062820097802331/latest.png?ex=651ae18c&is=6519900c&hm=544b7a8eb56236327b7bcabfce4b688428d59a63c8e07bcb2aab3ff81c916286&="
|
||||
},
|
||||
{
|
||||
"name": "EdPuzzle",
|
||||
"source": "/service/hvtrs8%2F-efpwzxlg.js%2Cva%2F",
|
||||
"image": "https://edpuzzle.imgix.net/edpuzzle-logos/vertical-logo.png"
|
||||
},
|
||||
{
|
||||
"name": "Gimkit",
|
||||
"source": "/service/hvtrs8%2F-gktju%60.aoo%2FVhgLcz%7BSsukd-GkmiivCject",
|
||||
"image": "https://images.crunchbase.com/image/upload/c_lpad,f_auto,q_auto:eco,dpr_1/iin53jlbkmdjjdpjbcde"
|
||||
},
|
||||
{
|
||||
"name": "Quizizz",
|
||||
"source": "/service/hvtrs8%2F-qwixiv.mnnile-sgrtiaeq%2Fsukzkzx%2F",
|
||||
"image": "https://media.discordapp.net/attachments/1118495479802630174/1158062649792286720/Screen_Shot_2023-10-01_at_11.27.24_AM.png?ex=651ae163&is=65198fe3&hm=d9b86e146ddc9e98690822155ccdc2c239d776f1a42fa16447d820e8e34a826b&="
|
||||
},
|
||||
{
|
||||
"name": "Quizlet",
|
||||
"source": "/service/hvtrs8%2F-qwixiv.mnnile-sgrtiaeq%2Fsukznev%2F",
|
||||
"image": "https://assets.quizlet.com/a/j/dist/app/i/brandmark/1024.38e7be0a829de8f.png"
|
||||
}
|
||||
]
|
||||
+285
-342
File diff suppressed because one or more lines are too long
@@ -1,31 +0,0 @@
|
||||
const load = () => {
|
||||
|
||||
|
||||
fetch('/assets/JSON/apps.json')
|
||||
.then(res => res.json())
|
||||
.then(games => {
|
||||
console.log(games)
|
||||
const game = games.filter(a => a.quickname === new URLSearchParams(location.search).get('id'))[0];
|
||||
|
||||
if (game) {
|
||||
const iframe = document.querySelector('.frame');
|
||||
|
||||
iframe.src = game.source;
|
||||
document.querySelector('#gameicon').src = game.image;
|
||||
document.querySelector('#gametitle').textContent = game.name;
|
||||
} else {
|
||||
document.querySelector('#gametitle').textContent = 'Failed to load App';
|
||||
}
|
||||
});
|
||||
|
||||
document.querySelector('#fullscreen').addEventListener('click', () => {
|
||||
const iframe = document.querySelector('.frame');
|
||||
|
||||
if (iframe.requestFullscreen) iframe.requestFullscreen();
|
||||
else if (iframe.webkitRequestFullscreen) iframe.webkitRequestFullscreen();
|
||||
else if (iframe.mozRequestFullScreen) iframe.mozRequestFullScreen();
|
||||
else if (iframe.msRequestFullscreen) iframe.msRequestFullscreen();
|
||||
});
|
||||
};
|
||||
|
||||
export default { load };
|
||||
+49
-46
@@ -1,70 +1,73 @@
|
||||
import PolarisError from './error.js';
|
||||
|
||||
const tiltEffectSettings = {
|
||||
max: 8, // max tilt rotation (degrees (deg))
|
||||
perspective: 1000, // transform perspective, the lower the more extreme the tilt gets (pixels (px))
|
||||
scale: 1.05, // transform scale - 2 = 200%, 1.5 = 150%, etc..
|
||||
speed: 800, // speed (transition-duration) of the enter/exit transition (milliseconds (ms))
|
||||
easing: 'cubic-bezier(.03,.98,.52,.99)' // easing (transition-timing-function) of the enter/exit transition
|
||||
max: 8, // max tilt rotation (degrees (deg))
|
||||
perspective: 1000, // transform perspective, the lower the more extreme the tilt gets (pixels (px))
|
||||
scale: 1.05, // transform scale - 2 = 200%, 1.5 = 150%, etc..
|
||||
speed: 800, // speed (transition-duration) of the enter/exit transition (milliseconds (ms))
|
||||
easing: 'cubic-bezier(.03,.98,.52,.99)' // easing (transition-timing-function) of the enter/exit transition
|
||||
};
|
||||
|
||||
const load = () => {
|
||||
fetch('/assets/JSON/apps.json')
|
||||
.then(res => res.json())
|
||||
.then(apps => {
|
||||
apps.forEach(app => {
|
||||
const el = document.createElement('div');
|
||||
el.classList = 'app';
|
||||
el.innerHTML = `<img src="${app.image}"><h3>${app.name}</h3>`;
|
||||
document.querySelector('.apps').appendChild(el);
|
||||
fetch('/assets/JSON/apps.json').then(res => res.json()).then(apps => {
|
||||
apps.forEach(app => {
|
||||
const el = document.createElement('div');
|
||||
el.classList = 'app';
|
||||
el.innerHTML = `<img src="${app.image}"><h3>${app.name}</h3>`;
|
||||
document.querySelector('.apps').appendChild(el);
|
||||
|
||||
el.addEventListener('click', () => {
|
||||
location.href = `/appplayer?id=${app.quickname}`;
|
||||
el.addEventListener('click', () => {
|
||||
localStorage.setItem('frameData', JSON.stringify({
|
||||
type: 'app',
|
||||
app
|
||||
}));
|
||||
location.href = '/view';
|
||||
});
|
||||
|
||||
el.addEventListener('mouseenter', appMouseEnter);
|
||||
el.addEventListener('mousemove', appMouseMove);
|
||||
el.addEventListener('mouseleave', appMouseLeave);
|
||||
});
|
||||
|
||||
el.addEventListener('mouseenter', appMouseEnter);
|
||||
el.addEventListener('mousemove', appMouseMove);
|
||||
el.addEventListener('mouseleave', appMouseLeave);
|
||||
});
|
||||
})
|
||||
.catch(e => new PolarisError('Failed to load Apps'));
|
||||
}).catch(e => new PolarisError('Failed to load Apps'));
|
||||
};
|
||||
|
||||
function appMouseEnter(event) {
|
||||
setTransition(event);
|
||||
setTransition(event);
|
||||
}
|
||||
|
||||
function appMouseMove(event) {
|
||||
const app = event.currentTarget;
|
||||
const appWidth = app.offsetWidth;
|
||||
const appHeight = app.offsetHeight;
|
||||
const centerX = app.offsetLeft + appWidth / 2;
|
||||
const centerY = app.offsetTop + appHeight / 2;
|
||||
const mouseX = event.clientX - centerX;
|
||||
const mouseY = event.clientY - centerY;
|
||||
const rotateXUncapped = (+1) * tiltEffectSettings.max * mouseY / (appHeight / 2);
|
||||
const rotateYUncapped = (-1) * tiltEffectSettings.max * mouseX / (appWidth / 2);
|
||||
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
|
||||
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
|
||||
const app = event.currentTarget;
|
||||
const appWidth = app.offsetWidth;
|
||||
const appHeight = app.offsetHeight;
|
||||
const centerX = app.offsetLeft + appWidth / 2;
|
||||
const centerY = app.offsetTop + appHeight / 2;
|
||||
const mouseX = event.clientX - centerX;
|
||||
const mouseY = event.clientY - centerY;
|
||||
const rotateXUncapped = (+1) * tiltEffectSettings.max * mouseY / (appHeight / 2);
|
||||
const rotateYUncapped = (-1) * tiltEffectSettings.max * mouseX / (appWidth / 2);
|
||||
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
|
||||
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
|
||||
|
||||
app.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)
|
||||
app.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)
|
||||
scale3d(${tiltEffectSettings.scale}, ${tiltEffectSettings.scale}, ${tiltEffectSettings.scale})`;
|
||||
}
|
||||
|
||||
function appMouseLeave(event) {
|
||||
event.currentTarget.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`;
|
||||
setTransition(event);
|
||||
event.currentTarget.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`;
|
||||
setTransition(event);
|
||||
}
|
||||
|
||||
function setTransition(event) {
|
||||
const app = event.currentTarget;
|
||||
clearTimeout(app.transitionTimeoutId);
|
||||
app.style.transition = `transform ${tiltEffectSettings.speed}ms ${tiltEffectSettings.easing}`;
|
||||
app.transitionTimeoutId = setTimeout(() => {
|
||||
app.style.transition = '';
|
||||
}, tiltEffectSettings.speed);
|
||||
const app = event.currentTarget;
|
||||
clearTimeout(app.transitionTimeoutId);
|
||||
app.style.transition = `transform ${tiltEffectSettings.speed}ms ${tiltEffectSettings.easing}`;
|
||||
app.transitionTimeoutId = setTimeout(() => {
|
||||
app.style.transition = '';
|
||||
}, tiltEffectSettings.speed);
|
||||
}
|
||||
|
||||
export default { load };
|
||||
export default {
|
||||
load
|
||||
};
|
||||
+49
-49
@@ -1,73 +1,73 @@
|
||||
import PolarisError from './error.js';
|
||||
import frame from './frame.js';
|
||||
|
||||
const tiltEffectSettings = {
|
||||
max: 8, // max tilt rotation (degrees (deg))
|
||||
perspective: 1000, // transform perspective, the lower the more extreme the tilt gets (pixels (px))
|
||||
scale: 1.05, // transform scale - 2 = 200%, 1.5 = 150%, etc..
|
||||
speed: 800, // speed (transition-duration) of the enter/exit transition (milliseconds (ms))
|
||||
easing: 'cubic-bezier(.03,.98,.52,.99)' // easing (transition-timing-function) of the enter/exit transition
|
||||
max: 8, // max tilt rotation (degrees (deg))
|
||||
perspective: 1000, // transform perspective, the lower the more extreme the tilt gets (pixels (px))
|
||||
scale: 1.05, // transform scale - 2 = 200%, 1.5 = 150%, etc..
|
||||
speed: 800, // speed (transition-duration) of the enter/exit transition (milliseconds (ms))
|
||||
easing: 'cubic-bezier(.03,.98,.52,.99)' // easing (transition-timing-function) of the enter/exit transition
|
||||
};
|
||||
|
||||
const load = () => {
|
||||
fetch('/assets/JSON/cheats.json')
|
||||
.then(res => res.json())
|
||||
.then(games => {
|
||||
games.forEach(game => {
|
||||
const el = document.createElement('div');
|
||||
el.classList = 'game';
|
||||
el.innerHTML = `<img src="${game.image}"><h3>${game.name}</h3>`;
|
||||
document.querySelector('.games').appendChild(el);
|
||||
fetch('/assets/JSON/cheats.json').then(res => res.json()).then(cheats => {
|
||||
cheats.forEach(cheat => {
|
||||
const el = document.createElement('div');
|
||||
el.classList = 'game';
|
||||
el.innerHTML = `<img src="${cheat.image}"><h3>${cheat.name}</h3>`;
|
||||
document.querySelector('.games').appendChild(el);
|
||||
|
||||
el.addEventListener('click', () => {
|
||||
window.location.href = `/play?id=${game.id}`;
|
||||
el.addEventListener('click', () => {
|
||||
localStorage.setItem('frameData', JSON.stringify({
|
||||
type: 'cheat',
|
||||
cheat
|
||||
}));
|
||||
location.href = '/view';
|
||||
});
|
||||
|
||||
el.addEventListener('mouseenter', gameMouseEnter);
|
||||
el.addEventListener('mousemove', gameMouseMove);
|
||||
el.addEventListener('mouseleave', gameMouseLeave);
|
||||
});
|
||||
|
||||
el.addEventListener('mouseenter', gameMouseEnter);
|
||||
el.addEventListener('mousemove', gameMouseMove);
|
||||
el.addEventListener('mouseleave', gameMouseLeave);
|
||||
});
|
||||
})
|
||||
.catch(e => {
|
||||
new PolarisError('Failed to load games');
|
||||
});
|
||||
}).catch(e => new PolarisError('Failed to load cheats.'));
|
||||
};
|
||||
|
||||
function gameMouseEnter(event) {
|
||||
setTransition(event);
|
||||
setTransition(event);
|
||||
}
|
||||
|
||||
function gameMouseMove(event) {
|
||||
const game = event.currentTarget;
|
||||
const gameWidth = game.offsetWidth;
|
||||
const gameHeight = game.offsetHeight;
|
||||
const centerX = game.offsetLeft + gameWidth / 2;
|
||||
const centerY = game.offsetTop + gameHeight / 2;
|
||||
const mouseX = event.clientX - centerX;
|
||||
const mouseY = event.clientY - centerY;
|
||||
const rotateXUncapped = (+1) * tiltEffectSettings.max * mouseY / (gameHeight / 2);
|
||||
const rotateYUncapped = (-1) * tiltEffectSettings.max * mouseX / (gameWidth / 2);
|
||||
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
|
||||
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
|
||||
const game = event.currentTarget;
|
||||
const gameWidth = game.offsetWidth;
|
||||
const gameHeight = game.offsetHeight;
|
||||
const centerX = game.offsetLeft + gameWidth / 2;
|
||||
const centerY = game.offsetTop + gameHeight / 2;
|
||||
const mouseX = event.clientX - centerX;
|
||||
const mouseY = event.clientY - centerY;
|
||||
const rotateXUncapped = (+1) * tiltEffectSettings.max * mouseY / (gameHeight / 2);
|
||||
const rotateYUncapped = (-1) * tiltEffectSettings.max * mouseX / (gameWidth / 2);
|
||||
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
|
||||
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
|
||||
|
||||
game.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)
|
||||
game.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)
|
||||
scale3d(${tiltEffectSettings.scale}, ${tiltEffectSettings.scale}, ${tiltEffectSettings.scale})`;
|
||||
}
|
||||
|
||||
function gameMouseLeave(event) {
|
||||
event.currentTarget.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`;
|
||||
setTransition(event);
|
||||
event.currentTarget.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`;
|
||||
setTransition(event);
|
||||
}
|
||||
|
||||
function setTransition(event) {
|
||||
const game = event.currentTarget;
|
||||
clearTimeout(game.transitionTimeoutId);
|
||||
game.style.transition = `transform ${tiltEffectSettings.speed}ms ${tiltEffectSettings.easing}`;
|
||||
game.transitionTimeoutId = setTimeout(() => {
|
||||
game.style.transition = '';
|
||||
}, tiltEffectSettings.speed);
|
||||
const game = event.currentTarget;
|
||||
clearTimeout(game.transitionTimeoutId);
|
||||
game.style.transition = `transform ${tiltEffectSettings.speed}ms ${tiltEffectSettings.easing}`;
|
||||
game.transitionTimeoutId = setTimeout(() => {
|
||||
game.style.transition = '';
|
||||
}, tiltEffectSettings.speed);
|
||||
}
|
||||
|
||||
export default { load };
|
||||
export default {
|
||||
load
|
||||
};
|
||||
@@ -1,35 +0,0 @@
|
||||
let xor = {
|
||||
encode: (str, key = 2) => {
|
||||
if (!str) return str;
|
||||
|
||||
return encodeURIComponent(str.split('').map((e, i) => i % key ? String.fromCharCode(e.charCodeAt(0) ^ key) : e).join(''));
|
||||
},
|
||||
decode: (str, key = 2) => {
|
||||
if (!str) return str;
|
||||
|
||||
return decodeURIComponent(str).split('').map((e, i) => i % key ? String.fromCharCode(e.charCodeAt(0) ^ key) : e).join('');
|
||||
}
|
||||
};
|
||||
|
||||
let workerLoaded;
|
||||
|
||||
const worker = async () => await navigator.serviceWorker.register('./sw.js', {
|
||||
scope: '/service/',
|
||||
});
|
||||
|
||||
document.addEventListener('DOMContentLoaded', async () => {
|
||||
await worker();
|
||||
workerLoaded = true;
|
||||
});
|
||||
|
||||
const dynamicRedirect = async (link) => {
|
||||
if (!workerLoaded) await worker();
|
||||
|
||||
const url = /^(http(s)?:\/\/)?([\w-]+\.)+[\w]{2,}(\/.*)?$/.test(link) ?
|
||||
((!link.startsWith('http://') && !link.startsWith('https://')) ? 'https://' + link : link) :
|
||||
'https://www.google.com/search?q=' + encodeURIComponent(link);
|
||||
|
||||
location.href = `/service/${xor.encode(url)}`;
|
||||
};
|
||||
|
||||
export { dynamicRedirect, worker, workerLoaded };
|
||||
+24
-13
@@ -1,23 +1,34 @@
|
||||
const load = () => {
|
||||
fetch('/assets/JSON/games.json')
|
||||
.then(res => res.json())
|
||||
.then(games => {
|
||||
const game = games[Number(new URLSearchParams(location.search).get('id'))];
|
||||
let frameData = JSON.parse(localStorage.getItem('frameData'));
|
||||
if (!frameData) location.href = '/';
|
||||
|
||||
if (game) {
|
||||
const iframe = document.querySelector('.frame');
|
||||
const iframe = document.querySelector('.frame');
|
||||
|
||||
iframe.src = game.source;
|
||||
document.querySelector('#gameicon').src = game.image;
|
||||
document.querySelector('#gametitle').textContent = game.name;
|
||||
} else {
|
||||
document.querySelector('#gametitle').textContent = 'Failed to load Game';
|
||||
}
|
||||
});
|
||||
if (frameData.type === 'game') {
|
||||
if (frameData.game) {
|
||||
iframe.src = frameData.game.source;
|
||||
document.querySelector('#gameicon').src = frameData.game.image;
|
||||
document.querySelector('#gametitle').textContent = frameData.game.name;
|
||||
} else document.querySelector('#gametitle').textContent = 'Failed to load game.';
|
||||
} else if (frameData.type === 'app') {
|
||||
if (frameData.app) {
|
||||
iframe.src = frameData.app.source;
|
||||
document.querySelector('#gameicon').src = frameData.app.image;
|
||||
document.querySelector('#gametitle').textContent = frameData.app.name;
|
||||
} else document.querySelector('#gametitle').textContent = 'Failed to load app.';
|
||||
} else if (frameData.type === 'cheat') {
|
||||
if (frameData.cheat) {
|
||||
iframe.src = frameData.cheat.source;
|
||||
document.querySelector('#gameicon').src = frameData.cheat.image;
|
||||
document.querySelector('#gametitle').textContent = frameData.cheat.name;
|
||||
} else document.querySelector('#gametitle').textContent = 'Failed to load cheat.';
|
||||
} else location.href = '/';
|
||||
|
||||
document.querySelector('#fullscreen').addEventListener('click', () => {
|
||||
const iframe = document.querySelector('.frame');
|
||||
|
||||
iframe.style.borderRadius = '0px';
|
||||
|
||||
if (iframe.requestFullscreen) iframe.requestFullscreen();
|
||||
else if (iframe.webkitRequestFullscreen) iframe.webkitRequestFullscreen();
|
||||
else if (iframe.mozRequestFullScreen) iframe.mozRequestFullScreen();
|
||||
|
||||
+64
-58
@@ -1,95 +1,101 @@
|
||||
import PolarisError from './error.js';
|
||||
|
||||
const tiltEffectSettings = {
|
||||
max: 8, // max tilt rotation (degrees (deg))
|
||||
perspective: 1000, // transform perspective, the lower the more extreme the tilt gets (pixels (px))
|
||||
scale: 1.05, // transform scale - 2 = 200%, 1.5 = 150%, etc..
|
||||
speed: 800, // speed (transition-duration) of the enter/exit transition (milliseconds (ms))
|
||||
easing: 'cubic-bezier(.03,.98,.52,.99)' // easing (transition-timing-function) of the enter/exit transition
|
||||
max: 8, // max tilt rotation (degrees (deg))
|
||||
perspective: 1000, // transform perspective, the lower the more extreme the tilt gets (pixels (px))
|
||||
scale: 1.05, // transform scale - 2 = 200%, 1.5 = 150%, etc..
|
||||
speed: 800, // speed (transition-duration) of the enter/exit transition (milliseconds (ms))
|
||||
easing: 'cubic-bezier(.03,.98,.52,.99)' // easing (transition-timing-function) of the enter/exit transition
|
||||
};
|
||||
|
||||
let games = []; // store all games
|
||||
let filteredGames = []; // store filtered games
|
||||
|
||||
const load = () => {
|
||||
fetch('/assets/JSON/games.json')
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
games = data;
|
||||
filteredGames = games; // initialize filtered games with all games
|
||||
fetch('/assets/JSON/games.json').then(res => res.json()).then(data => {
|
||||
games = data;
|
||||
filteredGames = games; // initialize filtered games with all games
|
||||
|
||||
renderGames(filteredGames); // render games initially
|
||||
renderGames(filteredGames); // render games initially
|
||||
|
||||
// Add event listener to search input
|
||||
const searchInput = document.getElementById('searchInput');
|
||||
searchInput.addEventListener('input', filterGames);
|
||||
})
|
||||
.catch(e => {
|
||||
new PolarisError('Failed to load games');
|
||||
});
|
||||
// Add event listener to search input
|
||||
const searchInput = document.getElementById('searchInput');
|
||||
searchInput.addEventListener('input', filterGames);
|
||||
})
|
||||
.catch(e => {
|
||||
new PolarisError('Failed to load games');
|
||||
});
|
||||
};
|
||||
|
||||
function filterGames() {
|
||||
const searchInput = document.getElementById('searchInput');
|
||||
const searchTerm = searchInput.value.toLowerCase();
|
||||
const searchInput = document.getElementById('searchInput');
|
||||
const searchTerm = searchInput.value.toLowerCase();
|
||||
|
||||
filteredGames = games.filter(game => game.name.toLowerCase().includes(searchTerm));
|
||||
filteredGames = games.filter(game => game.name.toLowerCase().includes(searchTerm));
|
||||
|
||||
renderGames(filteredGames); // render filtered games
|
||||
renderGames(filteredGames); // render filtered games
|
||||
}
|
||||
|
||||
function renderGames(gamesToRender) {
|
||||
const gamesContainer = document.querySelector('.games');
|
||||
gamesContainer.innerHTML = ''; // clear previous games
|
||||
const gamesContainer = document.querySelector('.games');
|
||||
gamesContainer.innerHTML = ''; // clear previous games
|
||||
|
||||
gamesToRender.forEach(game => {
|
||||
const el = document.createElement('div');
|
||||
el.classList = 'game';
|
||||
el.innerHTML = `<img loading="lazy" src="${game.image}"><h3>${game.name}</h3>`;
|
||||
gamesContainer.appendChild(el);
|
||||
gamesToRender.forEach(game => {
|
||||
const el = document.createElement('div');
|
||||
el.classList = 'game';
|
||||
el.innerHTML = `<img loading="lazy" src="${game.image}"><h3>${game.name}</h3>`;
|
||||
gamesContainer.appendChild(el);
|
||||
|
||||
el.addEventListener('click', () => location.href = `/play?id=${games.indexOf(game)}`);
|
||||
el.addEventListener('click', () => {
|
||||
localStorage.setItem('frameData', JSON.stringify({
|
||||
type: 'game',
|
||||
game
|
||||
}));
|
||||
location.href = '/view';
|
||||
});
|
||||
|
||||
el.addEventListener('mouseenter', gameMouseEnter);
|
||||
el.addEventListener('mousemove', gameMouseMove);
|
||||
el.addEventListener('mouseleave', gameMouseLeave);
|
||||
});
|
||||
el.addEventListener('mouseenter', gameMouseEnter);
|
||||
el.addEventListener('mousemove', gameMouseMove);
|
||||
el.addEventListener('mouseleave', gameMouseLeave);
|
||||
});
|
||||
}
|
||||
|
||||
function gameMouseEnter(event) {
|
||||
setTransition(event);
|
||||
setTransition(event);
|
||||
}
|
||||
|
||||
function gameMouseMove(event) {
|
||||
const game = event.currentTarget;
|
||||
const gameWidth = game.offsetWidth;
|
||||
const gameHeight = game.offsetHeight;
|
||||
const centerX = game.offsetLeft + gameWidth / 2;
|
||||
const centerY = game.offsetTop + gameHeight / 2;
|
||||
const mouseX = event.clientX - centerX;
|
||||
const mouseY = event.clientY - centerY;
|
||||
const rotateXUncapped = (+1) * tiltEffectSettings.max * mouseY / (gameHeight / 2);
|
||||
const rotateYUncapped = (-1) * tiltEffectSettings.max * mouseX / (gameWidth / 2);
|
||||
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
|
||||
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
|
||||
const game = event.currentTarget;
|
||||
const gameWidth = game.offsetWidth;
|
||||
const gameHeight = game.offsetHeight;
|
||||
const centerX = game.offsetLeft + gameWidth / 2;
|
||||
const centerY = game.offsetTop + gameHeight / 2;
|
||||
const mouseX = event.clientX - centerX;
|
||||
const mouseY = event.clientY - centerY;
|
||||
const rotateXUncapped = (+1) * tiltEffectSettings.max * mouseY / (gameHeight / 2);
|
||||
const rotateYUncapped = (-1) * tiltEffectSettings.max * mouseX / (gameWidth / 2);
|
||||
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
|
||||
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
|
||||
(rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
|
||||
|
||||
game.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale3d(${tiltEffectSettings.scale}, ${tiltEffectSettings.scale}, ${tiltEffectSettings.scale})`;
|
||||
game.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale3d(${tiltEffectSettings.scale}, ${tiltEffectSettings.scale}, ${tiltEffectSettings.scale})`;
|
||||
}
|
||||
|
||||
function gameMouseLeave(event) {
|
||||
event.currentTarget.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`;
|
||||
setTransition(event);
|
||||
event.currentTarget.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`;
|
||||
setTransition(event);
|
||||
}
|
||||
|
||||
function setTransition(event) {
|
||||
const game = event.currentTarget;
|
||||
clearTimeout(game.transitionTimeoutId);
|
||||
game.style.transition = `transform ${tiltEffectSettings.speed}ms ${tiltEffectSettings.easing}`;
|
||||
game.transitionTimeoutId = setTimeout(() => {
|
||||
game.style.transition = '';
|
||||
}, tiltEffectSettings.speed);
|
||||
const game = event.currentTarget;
|
||||
clearTimeout(game.transitionTimeoutId);
|
||||
game.style.transition = `transform ${tiltEffectSettings.speed}ms ${tiltEffectSettings.easing}`;
|
||||
game.transitionTimeoutId = setTimeout(() => {
|
||||
game.style.transition = '';
|
||||
}, tiltEffectSettings.speed);
|
||||
}
|
||||
|
||||
export default { load };
|
||||
export default {
|
||||
load
|
||||
};
|
||||
+16
-113
@@ -2,27 +2,15 @@
|
||||
import { load } from './settings.js';
|
||||
import Games from './games.js';
|
||||
import Apps from './apps.js';
|
||||
import Search from './search.js';
|
||||
import Cheats from './cheats.js';
|
||||
import Frame from './frame.js';
|
||||
import AppPlayer from './appplayer.js';
|
||||
import WPM from './wpm.js';
|
||||
import PolarisError from './error.js';
|
||||
|
||||
const Settings = {
|
||||
load: load
|
||||
};
|
||||
|
||||
fetch('/assets/misc/nav.html')
|
||||
.then(res => res.text())
|
||||
.then(content => {
|
||||
document.body.insertAdjacentHTML('afterbegin', content);
|
||||
|
||||
if (window.self !== window.top) {
|
||||
window.parent.postMessage('loaded', location.origin);
|
||||
}
|
||||
}).catch(e => {
|
||||
new PolarisError('Failed to load navbar <a href="" onclick"javascript:location.reload();" data-link="true"><button>Reload</button></a>');
|
||||
});
|
||||
|
||||
onbeforeunload = (e) => {
|
||||
if (localStorage.getItem('prevent_close') === 'true') {
|
||||
e.preventDefault();
|
||||
@@ -33,119 +21,35 @@ onbeforeunload = (e) => {
|
||||
sessionStorage.clear();
|
||||
}
|
||||
|
||||
var previousLocation = location.pathname;
|
||||
|
||||
const urlchange = setInterval(() => {
|
||||
if (location.pathname !== previousLocation) {
|
||||
const frame = document.createElement('iframe');
|
||||
frame.src = location.pathname
|
||||
frame.style = 'display: none';
|
||||
document.body.appendChild(frame);
|
||||
|
||||
frame.contentWindow.addEventListener('DOMContentLoaded', () => {
|
||||
document.body.style.display = 'none';
|
||||
|
||||
window.onmessage = (e) => {
|
||||
if (e.data == 'loaded') {
|
||||
window.history.pushState({}, '', location.pathname);
|
||||
document.documentElement.innerHTML = frame.contentWindow.document.documentElement.innerHTML;
|
||||
document.body.style.display = 'none';
|
||||
|
||||
Settings.load();
|
||||
registerLinks();
|
||||
|
||||
if (location.pathname === '/games') Games.load();
|
||||
|
||||
if (location.pathname === '/apps') Apps.load();
|
||||
|
||||
if (location.pathname === '/search') WPM.load();
|
||||
|
||||
setTimeout(() => {
|
||||
document.body.style.display = 'block';
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
previousLocation = location.pathname;
|
||||
}, 1);
|
||||
|
||||
window.onhashchange = () => {
|
||||
if (location.hash === '#settings') document.querySelector('.sidebar').classList.add('active');
|
||||
else document.querySelector('.sidebar').classList.remove('active');
|
||||
};
|
||||
|
||||
const registerLinks = () => {
|
||||
document.querySelectorAll('a').forEach(a => {
|
||||
a.onclick = (e) => {
|
||||
if (a.dataset.link !== 'true') {
|
||||
e.preventDefault();
|
||||
|
||||
if (a.href.startsWith(location.origin)) {
|
||||
if (window.location.href !== a.href) {
|
||||
const frame = document.createElement('iframe');
|
||||
frame.src = a.href;
|
||||
frame.style = 'display: none';
|
||||
document.body.appendChild(frame);
|
||||
|
||||
frame.contentWindow.addEventListener('DOMContentLoaded', () => {
|
||||
document.body.style.display = 'none';
|
||||
|
||||
window.onmessage = (e) => {
|
||||
if (e.data == 'loaded') {
|
||||
window.history.pushState({}, '', a.href);
|
||||
previousLocation = location.pathname;
|
||||
document.documentElement.innerHTML = frame.contentWindow.document.documentElement.innerHTML;
|
||||
document.body.style.display = 'none';
|
||||
|
||||
Settings.load();
|
||||
registerLinks();
|
||||
|
||||
if (location.pathname === '/games') Games.load();
|
||||
if (location.pathname === '/apps') Apps.load();
|
||||
if (location.pathname === '/search') WPM.load();
|
||||
|
||||
setTimeout(() => document.body.style.display = 'block', 500);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
a.setAttribute('data-link', 'true');
|
||||
a.click();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (window.self === window.top) {
|
||||
setTimeout(() => {
|
||||
Settings.load();
|
||||
registerLinks();
|
||||
|
||||
if (location.pathname === '/games') Games.load();
|
||||
if (location.pathname === '/apps') Apps.load();
|
||||
if (location.pathname === '/search') WPM.load();
|
||||
if (location.pathname === '/play') Frame.load();
|
||||
if (location.pathname === '/appplayer') AppPlayer.load();
|
||||
if (location.pathname === '/search') Search.load();
|
||||
if (location.pathname === '/cheats') Cheats.load();
|
||||
if (location.pathname === '/view') Frame.load();
|
||||
}, 500);
|
||||
}
|
||||
|
||||
if (location.pathname === '/') {
|
||||
fetch('/assets/JSON/games.json')
|
||||
.then(res => res.json())
|
||||
.then(games => {
|
||||
const randomID = 34; // :3
|
||||
const game = games[randomID];
|
||||
fetch('/assets/JSON/games.json').then(res => res.json()).then(games => {
|
||||
const randomID = 34; // :3
|
||||
const game = games[randomID];
|
||||
|
||||
document.querySelector('.featuredimg').addEventListener('click', function () {
|
||||
window.location.href = '/play?id=' + randomID;
|
||||
});
|
||||
document.querySelector('.featuredimg').src = game.image;
|
||||
}).catch(e => new PolarisError('Failed to load featured game'));
|
||||
document.querySelector('.featuredimg').addEventListener('click', function () {
|
||||
window.location.href = '/play?id=' + randomID;
|
||||
});
|
||||
document.querySelector('.featuredimg').src = game.image;
|
||||
}).catch(e => new PolarisError('Failed to load featured game.'));
|
||||
}
|
||||
|
||||
// Create 37 snow divs
|
||||
/*for (let i = 0; i < 37; i++) {
|
||||
const snowDiv = document.createElement("div");
|
||||
@@ -153,6 +57,5 @@ if (location.pathname === '/') {
|
||||
document.body.appendChild(snowDiv);
|
||||
}*/
|
||||
|
||||
const Polaris = { Settings, Games, Apps, WPM, PolarisError, registerLinks };
|
||||
|
||||
export default Polaris;
|
||||
const Polaris = { Settings, Games, Apps, Frame, PolarisError };
|
||||
export default Polaris;
|
||||
@@ -0,0 +1,42 @@
|
||||
/* Stands for Web Prxxy Manager because the keywork Prxxy is usually blocked */
|
||||
|
||||
const load = () => {
|
||||
let xor = {
|
||||
encode: (str, key = 2) => {
|
||||
if (!str) return str;
|
||||
return encodeURIComponent(str.split('').map((e, i) => i % key ? String.fromCharCode(e.charCodeAt(0) ^ key) : e).join(''));
|
||||
},
|
||||
decode: (str, key = 2) => {
|
||||
if (!str) return str;
|
||||
return decodeURIComponent(str).split('').map((e, i) => i % key ? String.fromCharCode(e.charCodeAt(0) ^ key) : e).join('');
|
||||
}
|
||||
};
|
||||
|
||||
let workerLoaded = false;
|
||||
let loadWorker = async () => await navigator.serviceWorker.register('./sw.js', {
|
||||
scope: '/service/',
|
||||
});
|
||||
|
||||
(async () => {
|
||||
await loadWorker();
|
||||
workerLoaded = true;
|
||||
})();
|
||||
|
||||
const form = document.querySelector('#wpf');
|
||||
const query = document.querySelector('#query');
|
||||
|
||||
form.addEventListener('submit', async (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
if (typeof navigator.serviceWorker === 'undefined') new PolarisError('Failed to load Prxxy');
|
||||
if (!workerLoaded) await loadWorker();
|
||||
|
||||
const url = /^(http(s)?:\/\/)?([\w-]+\.)+[\w]{2,}(\/.*)?$/.test(query.value) ?
|
||||
((!query.value.startsWith('http://') && !query.value.startsWith('https://')) ? 'https://' + query.value : query.value) :
|
||||
'https://www.google.com/search?q=' + encodeURIComponent(query.value);
|
||||
|
||||
location.href = `/service/${xor.encode(url)}`;
|
||||
});
|
||||
}
|
||||
|
||||
export default { load };
|
||||
@@ -8,7 +8,6 @@ const isScrollable = (element) => {
|
||||
class Settings {
|
||||
constructor() {
|
||||
if (this.get('panic_key')) document.querySelector('#panic_key').value = this.get('panic_key');
|
||||
|
||||
if (this.get('panic_url')) document.querySelector('#panic_url').value = this.get('panic_url');
|
||||
|
||||
if (this.get('cloak')) {
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
const load = () => {
|
||||
const evBundle = document.createElement('script');
|
||||
evBundle.src = '/uv/ev.bundle.js';
|
||||
document.body.appendChild(evBundle);
|
||||
}
|
||||
|
||||
export default { load };
|
||||
@@ -1,19 +0,0 @@
|
||||
/* Stands for Web Prxxy Manager because the keywork Prxxy is usually blocked */
|
||||
|
||||
import { dynamicRedirect, worker, workerLoaded } from './dynamic.js';
|
||||
|
||||
const load = () => {
|
||||
const form = document.querySelector('#wpf');
|
||||
const query = document.querySelector('#query');
|
||||
|
||||
form.addEventListener('submit', async (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
if (typeof navigator.serviceWorker === 'undefined') new PolarisError('Failed to load Prxxy');
|
||||
if (!workerLoaded) await worker();
|
||||
|
||||
dynamicRedirect(query.value);
|
||||
});
|
||||
}
|
||||
|
||||
export default { load };
|
||||
@@ -1,7 +0,0 @@
|
||||
<iframe class="frame" scrolling="no" frameborder="no"></iframe>
|
||||
|
||||
<div class="gamebar">
|
||||
<img src="https://via.placeholder.com/20x20?text=img" id="gameicon" />
|
||||
<p id="gametitle">Loading...</p>
|
||||
<i class="fa-solid fa-expand" id="fullscreen"></i>
|
||||
</div>
|
||||
@@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>Games | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<h1 style="font-size: 5vh;">Games</h1>
|
||||
<input style="" type="text" id="searchInput" class="settings-input" placeholder="Search Games...">
|
||||
<br>
|
||||
<div style="padding-bottom: 2vh;">
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key' : 'e5492073c242a1fe121f0a648fa2617f',
|
||||
'format' : 'iframe',
|
||||
'height' : 90,
|
||||
'width' : 728,
|
||||
'params' : {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e5492073c242a1fe121f0a648fa2617f/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
<br>
|
||||
<div class="games">
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
<meta name="6f9c120da628a61af2a67d51a1785baa69240b33" content="6f9c120da628a61af2a67d51a1785baa69240b33" />
|
||||
<title>Home | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="center-content">
|
||||
<div class="mainpageimage">
|
||||
<div class="featuredcontainer">
|
||||
<div class="featuredtopbar">
|
||||
<b><p>Featured Game</p></b>
|
||||
</div>
|
||||
<div>
|
||||
<img class="featuredimg" loading="eager" data-link="true"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mainpage-text">
|
||||
<h1>Polaris</h1>
|
||||
<p>By Skool</p>
|
||||
<br>
|
||||
<a href="https://discord.gg/skool"><button>Join our Discord</button></a>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,50 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>Play | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body style="overflow: hidden;">
|
||||
<div style="float: left; position: absolute;">
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key' : 'e7cee1bad8f584684778a0308af26f96',
|
||||
'format' : 'iframe',
|
||||
'height' : 300,
|
||||
'width' : 160,
|
||||
'params' : {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e7cee1bad8f584684778a0308af26f96/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
<br>
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key' : 'e7cee1bad8f584684778a0308af26f96',
|
||||
'format' : 'iframe',
|
||||
'height' : 300,
|
||||
'width' : 160,
|
||||
'params' : {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e7cee1bad8f584684778a0308af26f96/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
</div>
|
||||
<div>
|
||||
<iframe class="frame" scrolling="no" frameborder="no" sandbox="allow-scripts allow-forms allow-pointer-lock allow-same-origin"></iframe>
|
||||
|
||||
<div class="gamebar">
|
||||
<img src="https://via.placeholder.com/20x20?text=img" id="gameicon"/>
|
||||
<p id="gametitle">Loading...</p>
|
||||
<i class="fa-solid fa-expand" id="fullscreen"></i>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,40 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
|
||||
<title>Search | Polaris</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<div class="proxycontainer">
|
||||
<h1 style="font-size: 6vh;">Proxy</h1>
|
||||
|
||||
<form id="wpf">
|
||||
<input class="proxyinput" type="text" id="query" placeholder="URL or Search Query" />
|
||||
</form>
|
||||
</div>
|
||||
<div style="bottom: 0; margin-top: 30vh;">
|
||||
<script type="text/javascript">
|
||||
atOptions = {
|
||||
'key' : 'e5492073c242a1fe121f0a648fa2617f',
|
||||
'format' : 'iframe',
|
||||
'height' : 90,
|
||||
'width' : 728,
|
||||
'params' : {}
|
||||
};
|
||||
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/e5492073c242a1fe121f0a648fa2617f/invoke.js"></scr' + 'ipt>');
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,6 +1,6 @@
|
||||
<div class="navbar">
|
||||
<a class="title" href="/">
|
||||
<img src="/assets/img/logo.png" loading="eager"/>
|
||||
<img src="/assets/img/logo.png" loading="eager" />
|
||||
<span>Polaris<span>By Skool</span></span>
|
||||
</a>
|
||||
|
||||
@@ -8,9 +8,8 @@
|
||||
<a href="/games"><i class="fa-solid fa-gamepad-modern fa-xs"></i>Games</a>
|
||||
<a href="/apps"><i class="fa-solid fa-rocket-launch fa-xs"></i>Apps</a>
|
||||
<a href="/search"><i class="fa-solid fa-magnifying-glass fa-xs"></i>Proxy</a>
|
||||
<!--<a href="/cheats"><i class="fa-solid fa-computer fa-xs"></i>Cheats</a>-->
|
||||
<a href="#settings" data-link="true" data-attr="sidebar_trigger"><i
|
||||
class="fa-solid fa-gear fa-sm"></i>Settings</a>
|
||||
<a href="/cheats"><i class="fa-solid fa-computer fa-xs"></i>Cheats</a>
|
||||
<a href="#settings" data-link="true" data-attr="sidebar_trigger"><i class="fa-solid fa-gear fa-sm"></i>Settings</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -40,7 +39,7 @@
|
||||
<button class="settings-button">Violet</button>
|
||||
</div>
|
||||
|
||||
<h3>Tab Cloak</h3>
|
||||
<h3>Tab Cloak</h3>
|
||||
<select id="cloak_select">
|
||||
<option value="none">None</option>
|
||||
<option value="custom">Custom</option>
|
||||
@@ -52,12 +51,6 @@
|
||||
<input class="settings-input" type="text" placeholder="Title" id="title" />
|
||||
<input class="settings-input" type="text" placeholder="eg: google.com" id="domain" />
|
||||
</div>
|
||||
|
||||
<h3>Developer Mode</h3>
|
||||
<div class="switch">
|
||||
<input type="checkbox" id="">
|
||||
<span class="slider"></span>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
+4
-8
@@ -1,15 +1,11 @@
|
||||
{
|
||||
"version": 2,
|
||||
"builds": [
|
||||
{
|
||||
"builds": [{
|
||||
"src": "index.js",
|
||||
"use": "@vercel/node"
|
||||
}
|
||||
],
|
||||
"routes": [
|
||||
{
|
||||
}],
|
||||
"routes": [{
|
||||
"src": "/(.*)",
|
||||
"dest": "index.js"
|
||||
}
|
||||
]
|
||||
}]
|
||||
}
|
||||
Reference in New Issue
Block a user