Content now loads in a proxied iframe, and the ui looks a fuckton better.

This commit is contained in:
wearrrrr 2024-01-09 23:38:50 -06:00
parent 4b267c6a59
commit bdc5c4d734
10 changed files with 214 additions and 151 deletions

View file

@ -0,0 +1,45 @@
<svg width="100%" height="100%" preserveAspectRatio="none" id="svg" viewBox="0 0 1440 390" xmlns="http://www.w3.org/2000/svg" class="transition duration-300 ease-in-out delay-150"><style>
.path-0{
animation:pathAnim-0 4s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
@keyframes pathAnim-0{
0%{
d: path("M 0,400 L 0,100 C 124.53333333333336,122.66666666666667 249.06666666666672,145.33333333333334 415,143 C 580.9333333333333,140.66666666666666 788.2666666666667,113.33333333333333 966,102 C 1143.7333333333333,90.66666666666667 1291.8666666666668,95.33333333333334 1440,100 L 1440,400 L 0,400 Z");
}
25%{
d: path("M 0,400 L 0,100 C 171.19999999999993,71.6 342.39999999999986,43.2 497,54 C 651.6000000000001,64.8 789.6000000000001,114.80000000000001 944,129 C 1098.3999999999999,143.2 1269.1999999999998,121.6 1440,100 L 1440,400 L 0,400 Z");
}
50%{
d: path("M 0,400 L 0,100 C 186.66666666666669,82.13333333333333 373.33333333333337,64.26666666666667 540,54 C 706.6666666666666,43.733333333333334 853.3333333333333,41.06666666666666 1000,50 C 1146.6666666666667,58.93333333333334 1293.3333333333335,79.46666666666667 1440,100 L 1440,400 L 0,400 Z");
}
75%{
d: path("M 0,400 L 0,100 C 110.13333333333333,74.53333333333333 220.26666666666665,49.06666666666666 393,58 C 565.7333333333333,66.93333333333334 801.0666666666666,110.26666666666668 986,123 C 1170.9333333333334,135.73333333333332 1305.4666666666667,117.86666666666666 1440,100 L 1440,400 L 0,400 Z");
}
100%{
d: path("M 0,400 L 0,100 C 124.53333333333336,122.66666666666667 249.06666666666672,145.33333333333334 415,143 C 580.9333333333333,140.66666666666666 788.2666666666667,113.33333333333333 966,102 C 1143.7333333333333,90.66666666666667 1291.8666666666668,95.33333333333334 1440,100 L 1440,400 L 0,400 Z");
}
}</style><style class="darkreader darkreader--sync" media="screen"></style><defs><linearGradient id="gradient" x1="0%" y1="53%" x2="100%" y2="47%"><stop offset="5%" stop-color="#702dc2" data-darkreader-inline-stopcolor="" style="--darkreader-inline-stopcolor: #5a249b;"></stop><stop offset="95%" stop-color="#3d097d" data-darkreader-inline-stopcolor="" style="--darkreader-inline-stopcolor: #310764;"></stop></linearGradient></defs><path d="M 0,400 L 0,100 C 124.53333333333336,122.66666666666667 249.06666666666672,145.33333333333334 415,143 C 580.9333333333333,140.66666666666666 788.2666666666667,113.33333333333333 966,102 C 1143.7333333333333,90.66666666666667 1291.8666666666668,95.33333333333334 1440,100 L 1440,400 L 0,400 Z" stroke="none" stroke-width="0" fill="url(#gradient)" fill-opacity="0.53" class="transition-all duration-300 ease-in-out delay-150 path-0" data-darkreader-inline-stroke="" style="--darkreader-inline-stroke: none;"></path><style>
.path-1{
animation:pathAnim-1 4s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
@keyframes pathAnim-1{
0%{
d: path("M 0,400 L 0,233 C 170.53333333333336,233.66666666666666 341.0666666666667,234.33333333333331 507,236 C 672.9333333333333,237.66666666666669 834.2666666666667,240.33333333333334 989,240 C 1143.7333333333333,239.66666666666666 1291.8666666666668,236.33333333333331 1440,233 L 1440,400 L 0,400 Z");
}
25%{
d: path("M 0,400 L 0,233 C 202,220.46666666666667 404,207.93333333333334 539,220 C 674,232.06666666666666 742.0000000000001,268.7333333333333 881,275 C 1019.9999999999999,281.2666666666667 1230,257.1333333333333 1440,233 L 1440,400 L 0,400 Z");
}
50%{
d: path("M 0,400 L 0,233 C 181.33333333333337,210.86666666666667 362.66666666666674,188.73333333333332 512,188 C 661.3333333333333,187.26666666666668 778.6666666666665,207.93333333333334 928,219 C 1077.3333333333335,230.06666666666666 1258.6666666666667,231.53333333333333 1440,233 L 1440,400 L 0,400 Z");
}
75%{
d: path("M 0,400 L 0,233 C 195.06666666666666,222.86666666666667 390.1333333333333,212.73333333333332 559,216 C 727.8666666666667,219.26666666666668 870.5333333333333,235.93333333333334 1013,241 C 1155.4666666666667,246.06666666666666 1297.7333333333333,239.53333333333333 1440,233 L 1440,400 L 0,400 Z");
}
100%{
d: path("M 0,400 L 0,233 C 170.53333333333336,233.66666666666666 341.0666666666667,234.33333333333331 507,236 C 672.9333333333333,237.66666666666669 834.2666666666667,240.33333333333334 989,240 C 1143.7333333333333,239.66666666666666 1291.8666666666668,236.33333333333331 1440,233 L 1440,400 L 0,400 Z");
}
}</style><style class="darkreader darkreader--sync" media="screen"></style><defs><linearGradient id="gradient" x1="0%" y1="53%" x2="100%" y2="47%"><stop offset="5%" stop-color="#702dc2" data-darkreader-inline-stopcolor="" style="--darkreader-inline-stopcolor: #5a249b;"></stop><stop offset="95%" stop-color="#3d097d" data-darkreader-inline-stopcolor="" style="--darkreader-inline-stopcolor: #310764;"></stop></linearGradient></defs><path d="M 0,400 L 0,233 C 170.53333333333336,233.66666666666666 341.0666666666667,234.33333333333331 507,236 C 672.9333333333333,237.66666666666669 834.2666666666667,240.33333333333334 989,240 C 1143.7333333333333,239.66666666666666 1291.8666666666668,236.33333333333331 1440,233 L 1440,400 L 0,400 Z" stroke="none" stroke-width="0" fill="url(#gradient)" fill-opacity="1" class="transition-all duration-300 ease-in-out delay-150 path-1" data-darkreader-inline-stroke="" style="--darkreader-inline-stroke: none;"></path></svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

3
public/img/search.svg Normal file
View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="#fff" height="16" width="16" viewBox="0 0 512 512"> <!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->
<path d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"/>
</svg>

After

Width:  |  Height:  |  Size: 504 B

View file

@ -1,8 +1,8 @@
<div id="footer">
<div class="footerflex">
<div class="footerbrand">
<p class="footerlist-heading"><a href="/">Alu's Unblocker</a></p>
<p>Made with ❤️ by <a target="_black" href="https://wearr.dev">wearr</a></p>
<p class="footerlist-heading"><a href="/">Alu</a></p>
<p>Made with ❤️ by <a target="_blank" href="https://wearr.dev">wearr</a></p>
</div>
<div class="footerlist">
<p class="footerlist-heading">Services</p>
@ -18,22 +18,17 @@
</ul>
</div>
</div>
<p class="copyright">Alu's Unblocker &copy; 2024</p>
<p class="copyright">Alu Project &copy; 2024</p>
</div>
</div>
<style>
#footer {
padding-top: 20vw;
background-image: url(/img/darkwaves.svg);
padding-top: 20vh;
background-image: url("/img/purplewaves.svg");
background-repeat: no-repeat;
background-size: 100vw auto;
}
@media only screen and (max-width: 800px) {
#footer {
display: none;
}
width: 100%;
}
.footerflex {

View file

@ -1,7 +1,7 @@
<div class="top-header">
<div id="title-background" class="title-background">
<div class="left">
<a href="/" class="header-item"> Alu</a>
<a href="/" class="header-item">Alu</a>
</div>
<div class="right">
<a href="/games/" class="header-item"><i class="fa-solid fa-gamepad-modern"></i> Games</a>
@ -20,7 +20,7 @@
}
.title-background {
background-color: #166e85;
background-color: #7900e1;
display: flex;
align-items: center;
justify-content: space-between;
@ -31,7 +31,8 @@
list-style-type: none;
border: none;
z-index: 10;
transition: 250ms ease-in;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
.left, .right {
@ -41,14 +42,14 @@
}
.header-item {
color: #ffffff;
color: #fff;
text-decoration: none;
font-size: 20px;
transition: 250ms ease-in-out;
}
.header-item:hover {
color: #b7bcc6;
color: #c0c0c0;
}
@media only screen and (max-width: 1003px) {

View file

@ -9,16 +9,73 @@
form.addEventListener('submit', (event) => {
event.preventDefault();
let loadingContent = document.getElementById('loading-content');
loadingContent.style.opacity = 1;
let url = input.value.trim();
if (!isUrl(url)) url = 'https://www.google.com/search?q=' + url;
else if (!(url.startsWith('https://') || url.startsWith('http://'))) url = 'http://' + url;
let loadingContent = document.getElementById('loading-content');
if (loadingContent) loadingContent.style.opacity = "1";
console.log("here")
window.location.href = window.__uv$config.prefix + window.__uv$config.encodeUrl(url);
let iframe = document.createElement('iframe');
iframe.src = window.__uv$config.prefix + window.__uv$config.encodeUrl(url);
iframe.classList.add("proxy-frame");
iframe.style.opacity = 0;
document.body.appendChild(iframe);
iframe.addEventListener('load', () => {
loadingContent.style.opacity = 0;
iframe.style.opacity = 1;
let topBar = document.createElement('div');
topBar.classList.add("top-bar");
let closeButton = document.createElement('button');
closeButton.classList.add("close-button")
closeButton.innerText = "Close";
closeButton.addEventListener('click', () => {
iframe.style.opacity = 0;
topBar.style.opacity = 0;
setTimeout(() => {
iframe.remove();
topBar.remove();
}, 500);
});
let urlText = document.createElement('p');
urlText.classList.add("url-text");
urlText.innerText = url
topBar.appendChild(closeButton);
topBar.appendChild(urlText);
document.body.appendChild(topBar);
})
});
// function checkReadyState(iframe) {
// // Recursive function that checks if the iframe is ready to be used.
// console.log(iframe.contentWindow.document.readyState)
// if (iframe.contentWindow.document.readyState === "complete") {
// // The iframe is ready to be used.
// // We can now add the top bar.
// let topBar = document.createElement('div');
// topBar.classList.add("top-bar");
// let backButton = document.createElement('button');
// backButton.classList.add("back-button");
// backButton.innerHTML = "Back";
// backButton.addEventListener('click', (event) => {
// iframe.remove();
// topBar.remove();
// });
// let urlText = document.createElement('p');
// urlText.classList.add("url-text");
// urlText.innerHTML = iframe.src;
// topBar.appendChild(backButton);
// topBar.appendChild(urlText);
// document.body.appendChild(topBar);
// } else {
// // The iframe is not ready yet.
// // We will wait 100ms and then check again.
// setTimeout(() => {
// console.log("Not ready...")
// checkReadyState(iframe);
// }, 100);
// }
// }
function isUrl(val = ''){
if (/^http(s?):\/\//.test(val) || val.includes('.') && val.substr(0, 1) !== ' ') return true;

View file

@ -1,6 +1,8 @@
---
import { fade } from 'astro/virtual-modules/transitions.js';
import { ViewTransitions } from 'astro:transitions';
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
interface Props {
title: string;
@ -16,16 +18,20 @@ const { title } = Astro.props;
<meta name="description" content="Astro description" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.png" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Varela+Round&display=swap" rel="stylesheet">
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
<ViewTransitions />
</head>
<body transition:animate={fade({ duration: '0.4s' })}>
<slot />
<body>
<Header></Header>
<slot transition:animate={"fade"} />
<Footer></Footer>
</body>
</html>
<style is:global>
@import url("https://fonts.googleapis.com/css2?family=Varela+Round&display=swap");
* {
box-sizing: border-box;
}
@ -34,17 +40,34 @@ body, html {
margin: 0;
padding: 0;
height: 100%;
font-family: 'Varela Round', sans-serif;
}
body {
font-family: 'Varela Round', sans-serif;
background-color: #46494C;
background-color: #080808;
max-width: 100vw;
margin: 0;
display: flex;
flex-direction: column;
min-height: 100vh;
}
body > * {
opacity: 1;
}
/* Create animation to fade in elements */
/* body > * {
animation: fadeIn ease 0.15s;
animation-fill-mode: forwards;
animation-delay: 0.15s;
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
} */
.title-text {
color: white;
text-align: center;
@ -60,4 +83,39 @@ body {
width: 100%;
height: 60vh;
}
.proxy-frame {
display: block;
position: absolute;
z-index: 1000;
width: 100vw;
height: 90vh;
top: 10vh;
border: none;
background-color: #080808;
transition: opacity 250ms ease-in-out
}
.top-bar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 1rem;
height: 10vh;
background-color: #080808;
color: white;
position: fixed;
top: 0;
left: 0;
width: 100vw;
z-index: 100;
transition: opacity 250ms ease-in-out;
}
.close-button {
padding: 5px;
padding-inline: 40px;
border: none;
background-color: #252525;
color: #c7c7c7;
border-radius: 15px;
cursor: pointer;
}
</style>

View file

@ -1,17 +1,14 @@
---
import Footer from "../components/Footer.astro";
import Header from "../components/Header.astro";
import Layout from "../layouts/Layout.astro";
---
<Layout title="404 | Alu">
<Header></Header>
<div class="main-content error-page">
<h1>404!</h1>
<p>The content you have requested could not be found!</p>
</div>
<Footer></Footer>
</Layout>
<style>

View file

@ -1,12 +1,10 @@
---
import Layout from "../layouts/Layout.astro";
import Header from "../components/Header.astro";
import Footer from "../components/Footer.astro";
import GameItem from "../components/GameItem.astro";
---
<Layout title="Games | Alu's Unblocker">
<Header />
<Layout title="Games | Alu">
<h1 class="title-text">Games</h1>
<div class="grid">
<GameItem name="1v1.lol" image="/games/1v1.lol/logo.png"></GameItem>
@ -62,7 +60,6 @@ import GameItem from "../components/GameItem.astro";
<GameItem name="World's Hardest Game 2" image="/games/worlds-hardest-game-2/logo.png" slugName="worlds-hardest-game-2"></GameItem>
<GameItem name="You are Bezos" image="/games/you-are-bezos/logo.png" slugName="you-are-bezos"></GameItem>
</div>
<Footer />
</Layout>
<style>

View file

@ -1,22 +1,17 @@
---
import Layout from '../layouts/Layout.astro';
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
import UVRegistrar from '../components/UVRegistrar.astro';
---
<Layout title="Alu's Unblocker">
<Header></Header>
<Layout title="Alu">
<div class="main-content">
<h1 id="title-text" class="title-text">Welcome to Alu</h1>
<form>
<input placeholder="Enter a URL...">
</form>
<p id="loading-content">Loading Content...</p>
<h1 class="title-text">Welcome to Alu</h1>
<form class="url-input-form" id="url-input-form">
<input class="url-input" type="text" placeholder="Search...">
<div id="loading-content">Loading...</div>
</form>
</div>
<UVRegistrar></UVRegistrar>
<Footer></Footer>
</Layout>
<style>
@ -24,27 +19,44 @@ form {
width: 30%;
}
form > input {
background-color: #393b3e;
.title-text {
font-size: 38px;
}
.url-input-form {
border: none;
padding: 0;
}
.url-input {
display: block;
background: transparent url("/img/search.svg") no-repeat 13px center;
}
.url-input {
background-color: #080808;
color: #D8DEE9;
border: 5px solid white;
border: 3px solid white;
border-radius: 30px;
padding: 15px;
width: 100%;
text-align: center;
transition: 400ms ease-out;
outline: none;
font-family: 'Varela Round', sans-serif;
font-size: 16px;
}
form > input::placeholder {
.url-input::placeholder {
color: #D8DEE9;
}
#loading-content {
color: white;
padding: 3px;
padding: 8px;
position: relative;
opacity: 0;
transition: 250ms ease-in-out;
text-align: center;
}
</style>

View file

@ -1,102 +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">
<meta name="theme-color" content="#81A1C1">
<title>Alu's Unblocker</title>
<link rel="icon" href="./img/icon.svg">
<link rel="apple-touch-icon" href="./apple-touch-icon.png"/>
<link rel="manifest" href="/manifest.json">
<script src="./js/site/loadScript.js"></script>
<link rel="stylesheet" href="./css/index.css">
<link rel="stylesheet" href="https://site-assets.fontawesome.com/releases/v6.4.2/css/all.css">
<script>
if (localStorage.getItem('windowCloak') == "1") {
var x = window.open('')
x.document.write(`<iframe src="${window.location.href}" style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%;"></iframe>`);
x.document.write('<script src="./settings_frame.js">')
window.close();
}
</script>
</head>
<body id="body" data-barba="wrapper">
<script src="./js/site/toggles.js"></script>
<script src="./js/site/main.js"></script>
<script src="./js/site/header.js"></script>
<script src="./js/site/themes.js"></script>
<script src="/bundle.js" defer></script>
<div id="main">
<div class="top-header">
<div id="title-background" class="title-background">
<div class="left">
<a href="/" class="header-item"> Alu</a>
</div>
<div class="right">
<a href="/games/" class="header-item"><i class="fa-solid fa-gamepad-modern"></i> Games</a>
<a href="/settings/" class="header-item"><i class="fa-solid fa-gear"></i> Settings</a>
</div>
</div>
</div>
<div class="main-content" data-barba="container" data-barba-namespace="home">
<h1 id="title-text" class="title-text">Welcome to Alu</h1>
<form>
<input placeholder="Enter a URL...">
</form>
<p id="loading-content">Loading Content...</p>
</div>
<script src="/uv/uv.bundle.js"></script>
<script src="/uv/uv.config.js"></script>
<script>
const form = document.querySelector('form');
const input = document.querySelector('input');
window.navigator.serviceWorker.register('/sw.js', {
scope: __uv$config.prefix
})
form.addEventListener('submit', (event) => {
event.preventDefault();
let url = input.value.trim();
if (!isUrl(url)) url = 'https://www.google.com/search?q=' + url;
else if (!(url.startsWith('https://') || url.startsWith('http://'))) url = 'http://' + url;
document.getElementById('loading-content').style.opacity = "1"
window.location.href = __uv$config.prefix + __uv$config.encodeUrl(url);
});
function isUrl(val = ''){
if (/^http(s?):\/\//.test(val) || val.includes('.') && val.substr(0, 1) !== ' ') return true;
return false;
};
</script>
<div id="footer">
<div class="footerflex">
<div class="footerbrand">
<h3><a href="/">Alu's Unblocker</a></h3>
<p>Made with ❤️ by <a target="_black" href="https://wearr.dev">wearr</a></p>
</div>
<div class="footerlist">
<h3>Services</h3>
<ul>
<li><a target="_blank" rel=”noopener noreferrer href="https://github.com/titaniumnetwork-dev/Ultraviolet">Ultraviolet</a></li>
<li><a target="_blank" rel=”noopener noreferrer href="https://github.com/binary-person/rammerhead">Rammerhead</a></li>
</ul>
</div>
<div class="footerlist">
<h3>Socials</h3>
<ul>
<li><a target="_blank" rel=”noopener noreferrer href="https://github.com/titaniumnetwork-dev/Holy-Unblocker">GitHub</a></li>
<div class="tooltip">
<span class="tooltiptext" id="discord-tooltip">Copy</span>
<li><a onclick="copyDiscord();" onmouseout="outFunc();" class="discord-text">Discord</a></li>
</div>
</ul>
</div>
</div>
<p class="copyright">Alu's Unblocker &copy; 2024</p>
</div>
</div>
</body>
</html>