Better errors for Ultraviolet-Node
This commit is contained in:
parent
97155032e6
commit
884405dd1a
6 changed files with 165 additions and 15 deletions
52
public/error.html
Normal file
52
public/error.html
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta
|
||||||
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, shrink-to-fit=no"
|
||||||
|
/>
|
||||||
|
<title>Ultraviolet | Error</title>
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="Ultraviolet is a highly sophisticated proxy used for evading internet censorship or accessing websites in a controlled sandbox using the power of service-workers. Unblock sites today!"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
name="theme-color"
|
||||||
|
media="(prefers-color-scheme: dark)"
|
||||||
|
content="#434c5e"
|
||||||
|
/>
|
||||||
|
<meta name="googlebot" content="noindex, nofollow, nosnippet" />
|
||||||
|
<base href="/">
|
||||||
|
<link rel="shortcut icon" content="favicon.ico" />
|
||||||
|
<link rel="stylesheet" href="index.css" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="logo-wrapper left-margin">
|
||||||
|
<h1>
|
||||||
|
Ultraviolet | Error
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div class="desc left-margin">
|
||||||
|
<p>
|
||||||
|
The server could not route your request.
|
||||||
|
</p>
|
||||||
|
<p class="error"></p>
|
||||||
|
<input type="button" class="register-sw" value="Register service worker">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<a
|
||||||
|
title="For privacy implications related to Ultraviolet."
|
||||||
|
href="https://github.com/titaniumnetwork-development/Ultraviolet/raw/main/LICENSE"
|
||||||
|
style="margin-left: auto"
|
||||||
|
>License</a
|
||||||
|
>
|
||||||
|
<span>Ultraviolet © TN 2022</span>
|
||||||
|
</footer>
|
||||||
|
<script src="uv/uv.bundle.js"></script>
|
||||||
|
<script src="uv/uv.config.js"></script>
|
||||||
|
<script src="error.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
39
public/error.js
Normal file
39
public/error.js
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
const errorContainer = document.querySelector(".error");
|
||||||
|
const registerButton = document.querySelector(".register-sw");
|
||||||
|
let registrarOpen = false;
|
||||||
|
|
||||||
|
if (window.location.pathname.startsWith(__uv$config.prefix)) {
|
||||||
|
errorContainer.textContent += "The service worker is not registered. Click the button below to register the service worker.";
|
||||||
|
registerButton.style.display = "block";
|
||||||
|
}
|
||||||
|
|
||||||
|
function registrarResponse(response) {
|
||||||
|
if (response == "success") {
|
||||||
|
registerButton.style.display = "none";
|
||||||
|
let span = document.createElement("span");
|
||||||
|
span.className = "error-green";
|
||||||
|
span.textContent = "\n\nSuccess. Reloading now...";
|
||||||
|
errorContainer.appendChild(span);
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
if (response == "failure")
|
||||||
|
errorContainer.textContent += "\n\nFailed to register service worker.";
|
||||||
|
}
|
||||||
|
|
||||||
|
registerButton.onclick = () => {
|
||||||
|
if (!registrarOpen) {
|
||||||
|
registrarOpen = true;
|
||||||
|
let registrarFrame = document.createElement("iframe");
|
||||||
|
registrarFrame.style.display = "none";
|
||||||
|
registrarFrame.src = "./register-sw.html";
|
||||||
|
document.body.appendChild(registrarFrame);
|
||||||
|
function messageHandler(event) {
|
||||||
|
window.removeEventListener("message", messageHandler);
|
||||||
|
registrarFrame.removeAttribute("src");
|
||||||
|
document.body.removeChild(registrarFrame);
|
||||||
|
registrarOpen = false;
|
||||||
|
registrarResponse(event.data);
|
||||||
|
}
|
||||||
|
window.addEventListener("message", messageHandler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -28,14 +28,46 @@ body {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.logo-wrapper {
|
.flex-center {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-center {
|
||||||
|
align-items: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-top: 10%;
|
margin-top: 10%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.left-margin {
|
||||||
|
margin: 0px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error {
|
||||||
|
color: #ff6666 !important;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-green {
|
||||||
|
color: #66ff66 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.register-sw {
|
||||||
|
color: white;
|
||||||
|
background: #555555;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: none;
|
||||||
|
border: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 16px 20px;
|
||||||
|
line-height: 16px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.register-sw:active {
|
||||||
|
background: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
width: 150px;
|
width: 150px;
|
||||||
}
|
}
|
||||||
|
|
@ -76,16 +108,6 @@ footer a:hover {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
form {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desc {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desc p {
|
.desc p {
|
||||||
width: 560px;
|
width: 560px;
|
||||||
color: rgba(253, 253, 253, 0.514);
|
color: rgba(253, 253, 253, 0.514);
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div title="Ultraviolet Logo" class="logo-wrapper">
|
<div title="Ultraviolet Logo" class="flex-center logo-wrapper header-center">
|
||||||
<img class="logo" src="uv.png" alt="Ultraviolet" />
|
<img class="logo" src="uv.png" alt="Ultraviolet" />
|
||||||
<h1
|
<h1
|
||||||
title="Ultraviolet supports YouTube, GeForce NOW and more! Service by TitaniumNetwork."
|
title="Ultraviolet supports YouTube, GeForce NOW and more! Service by TitaniumNetwork."
|
||||||
|
|
@ -69,7 +69,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
title="Ultraviolet uses the power of service-workers and more! Unblock many sites today with Ultraviolet!"
|
title="Ultraviolet uses the power of service-workers and more! Unblock many sites today with Ultraviolet!"
|
||||||
class="desc"
|
class="flex-center desc"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
Ultraviolet is highly sophisticated proxy used for evading internet
|
Ultraviolet is highly sophisticated proxy used for evading internet
|
||||||
|
|
@ -77,7 +77,7 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form>
|
<form class="flex-center">
|
||||||
<input placeholder="Search the web freely" />
|
<input placeholder="Search the web freely" />
|
||||||
</form>
|
</form>
|
||||||
<footer>
|
<footer>
|
||||||
|
|
|
||||||
15
public/register-sw.html
Normal file
15
public/register-sw.html
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Registering Service Worker...</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Registering Service Worker...</h1>
|
||||||
|
<p id="state"></p>
|
||||||
|
<script src="uv/uv.bundle.js"></script>
|
||||||
|
<script src="uv/uv.config.js"></script>
|
||||||
|
<script src="register-sw.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
22
public/register-sw.js
Normal file
22
public/register-sw.js
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
const stateContainer = document.getElementById("state");
|
||||||
|
|
||||||
|
function finish(state) {
|
||||||
|
stateContainer.textContent = state;
|
||||||
|
console.log("Registering ultraviolet service worker... " + state);
|
||||||
|
window.parent.postMessage(state, "*");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
window.navigator.serviceWorker
|
||||||
|
.register("./sw.js", {
|
||||||
|
scope: __uv$config.prefix,
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
finish("success");
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
finish("failure");
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
finish("failure");
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue