mirror of
https://gitlab.com/vyla-entertainment/documentation.git
synced 2026-11-14 22:47:26 -05:00
tweaked
This commit is contained in:
253
down.html
Normal file
253
down.html
Normal file
@@ -0,0 +1,253 @@
|
||||
<!doctype html>
|
||||
<html lang="en-US">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Unavailable For Legal Reasons</title>
|
||||
<link rel="stylesheet" href="/cdn-cgi/styles/main.css">
|
||||
<script>
|
||||
(function () {
|
||||
const state = {
|
||||
errorCode: null,
|
||||
rayId: null,
|
||||
timestamp: null,
|
||||
ip: null
|
||||
};
|
||||
|
||||
function getRayId() {
|
||||
const candidates = [
|
||||
document.querySelector('[data-ray-id]')?.dataset.rayId,
|
||||
document.querySelector('meta[name="cf-ray"]')?.content
|
||||
];
|
||||
|
||||
for (const value of candidates) {
|
||||
if (value && /^[a-f0-9-]+$/i.test(value)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function getTimestamp() {
|
||||
const candidates = [
|
||||
document.querySelector('[data-timestamp]')?.dataset.timestamp,
|
||||
document.querySelector('meta[name="cf-timestamp"]')?.content
|
||||
];
|
||||
|
||||
for (const value of candidates) {
|
||||
if (value && !Number.isNaN(Date.parse(value))) {
|
||||
return new Date(value);
|
||||
}
|
||||
}
|
||||
|
||||
return new Date();
|
||||
}
|
||||
|
||||
function setText(id, value, fallback = 'Unavailable') {
|
||||
const element = document.getElementById(id);
|
||||
if (element) element.textContent = value || fallback;
|
||||
}
|
||||
|
||||
|
||||
function initialize() {
|
||||
const heading = document.querySelector('h1');
|
||||
const errorMatch = heading?.textContent.match(/\b\d{3}\b/);
|
||||
|
||||
state.errorCode = errorMatch ? errorMatch[0] : null;
|
||||
state.rayId = getRayId();
|
||||
state.timestamp = getTimestamp();
|
||||
|
||||
setText('error-code', state.errorCode, '');
|
||||
setText('ray-id', state.rayId);
|
||||
setText('timestamp', state.timestamp.toISOString().replace('T', ' ').replace(/\.\d{3}Z$/, ' UTC'));
|
||||
|
||||
if (!state.errorCode) {
|
||||
document.getElementById('error-code').hidden = true;
|
||||
}
|
||||
|
||||
if (!state.rayId) {
|
||||
document.getElementById('ray-information').hidden = true;
|
||||
}
|
||||
|
||||
if (document.querySelector('title')) {
|
||||
document.title = document.querySelector('h2')?.textContent.trim() || 'Unavailable';
|
||||
}
|
||||
}
|
||||
|
||||
async function getVisitorIP() {
|
||||
const ipElement = document.getElementById('cf-footer-ip');
|
||||
const revealButton = document.getElementById('cf-footer-ip-reveal');
|
||||
const container = document.getElementById('cf-footer-item-ip');
|
||||
|
||||
try {
|
||||
const response = await fetch('https://api.ipify.org?format=json', {
|
||||
cache: 'no-store'
|
||||
});
|
||||
|
||||
if (!response.ok) throw new Error('IP lookup failed');
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (!data.ip) throw new Error('IP address unavailable');
|
||||
|
||||
ipElement.textContent = data.ip;
|
||||
ipElement.classList.add('hidden');
|
||||
revealButton.hidden = false;
|
||||
container.classList.remove('hidden');
|
||||
|
||||
revealButton.onclick = function () {
|
||||
ipElement.classList.remove('hidden');
|
||||
revealButton.hidden = true;
|
||||
};
|
||||
} catch (error) {
|
||||
container.classList.add('hidden');
|
||||
console.error('Unable to retrieve visitor IP:', error);
|
||||
}
|
||||
}
|
||||
|
||||
function sendFeedback(helpful) {
|
||||
const survey = document.getElementById('error-feedback-survey');
|
||||
const success = document.getElementById('error-feedback-success');
|
||||
|
||||
if (!survey || !success) return;
|
||||
|
||||
survey.classList.add('feedback-hidden');
|
||||
success.classList.remove('feedback-hidden');
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
initialize();
|
||||
getVisitorIP();
|
||||
|
||||
const feedback = document.getElementById('error-feedback');
|
||||
const yes = document.getElementById('feedback-button-yes');
|
||||
const no = document.getElementById('feedback-button-no');
|
||||
const reveal = document.getElementById('cf-footer-ip-reveal');
|
||||
|
||||
if (feedback && yes && no && 'classList' in feedback) {
|
||||
feedback.classList.remove('feedback-hidden');
|
||||
yes.addEventListener('click', () => sendFeedback(true));
|
||||
no.addEventListener('click', () => sendFeedback(false));
|
||||
}
|
||||
|
||||
if (reveal) {
|
||||
reveal.addEventListener('click', function () {
|
||||
reveal.hidden = true;
|
||||
document.getElementById('cf-footer-ip').classList.remove('hidden');
|
||||
});
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="cf-wrapper">
|
||||
<div class="cf-alert cf-alert-error cf-cookie-error hidden" id="cookie-alert" data-translate="enable_cookies">
|
||||
Please enable cookies.
|
||||
</div>
|
||||
|
||||
<div id="cf-error-details" class="p-0">
|
||||
<header class="mx-auto pt-10 lg:pt-6 lg:px-8 w-240 lg:w-full mb-15 antialiased">
|
||||
<h1
|
||||
class="inline-block md:block mr-2 md:mb-2 font-light text-60 md:text-3xl text-black-dark leading-tight">
|
||||
<span data-translate="error">Error 451</span>
|
||||
</h1>
|
||||
|
||||
|
||||
<span id="ray-information"
|
||||
class="inline-block md:block heading-ray-id font-mono text-15 lg:text-sm lg:leading-relaxed">
|
||||
Ray ID: <span id="ray-id"></span>
|
||||
</span>
|
||||
|
||||
<span class="inline-block md:block heading-ray-id font-mono text-15 lg:text-sm lg:leading-relaxed"
|
||||
id="timestamp"></span>
|
||||
|
||||
<h2 class="text-gray-600 leading-1.3 text-3xl lg:text-2xl font-light">
|
||||
Unavailable For Legal Reasons
|
||||
</h2>
|
||||
</header>
|
||||
|
||||
<section class="w-240 lg:w-full mx-auto mb-8 lg:px-8">
|
||||
<div id="what-happened-section" class="w-1/2 md:w-full">
|
||||
<h2 class="text-3xl leading-tight font-normal mb-4 text-black-dark antialiased"
|
||||
data-translate="what_happened">
|
||||
What happened?
|
||||
</h2>
|
||||
<p>This website is unavailable for legal reasons.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="feedback-hidden py-8 text-center" id="error-feedback">
|
||||
<div id="error-feedback-survey" class="footer-line-wrapper">
|
||||
Was this page helpful?
|
||||
|
||||
<button class="border border-solid bg-white cf-button cursor-pointer ml-4 px-4 py-2 rounded"
|
||||
id="feedback-button-yes" type="button">
|
||||
Yes
|
||||
</button>
|
||||
|
||||
<button class="border border-solid bg-white cf-button cursor-pointer ml-4 px-4 py-2 rounded"
|
||||
id="feedback-button-no" type="button">
|
||||
No
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="feedback-success feedback-hidden" id="error-feedback-success">
|
||||
Thank you for your feedback!
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300">
|
||||
<p class="text-13">
|
||||
<span class="cf-footer-item sm:block sm:mb-1">
|
||||
Cloudflare Ray ID:
|
||||
<strong class="font-semibold" id="footer-ray-id">Unavailable</strong>
|
||||
</span>
|
||||
|
||||
<span class="cf-footer-separator sm:hidden">•</span>
|
||||
|
||||
<span id="cf-footer-item-ip" class="cf-footer-item hidden sm:block sm:mb-1">
|
||||
Your IP:
|
||||
|
||||
<button type="button" id="cf-footer-ip-reveal" class="cf-footer-ip-reveal-btn">
|
||||
Click to reveal
|
||||
</button>
|
||||
|
||||
<span class="hidden" id="cf-footer-ip"></span>
|
||||
</span>
|
||||
|
||||
<span class="cf-footer-separator sm:hidden">•</span>
|
||||
|
||||
<span class="cf-footer-item sm:block sm:mb-1">
|
||||
<span>Performance & security by</span>
|
||||
<a rel="noopener noreferrer" href="https://www.cloudflare.com/5xx-error-landing" id="brand_link"
|
||||
target="_blank">
|
||||
Cloudflare
|
||||
</a>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const ray = document.getElementById('ray-id');
|
||||
const footerRay = document.getElementById('footer-ray-id');
|
||||
|
||||
if (ray && footerRay && ray.textContent.trim()) {
|
||||
footerRay.textContent = ray.textContent;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="ts-blocks" hidden></div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user