This commit is contained in:
Green! 2022-05-17 13:41:02 -04:00 committed by GitHub
parent 8977c0e53f
commit cb985b9b6d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 42373 additions and 0 deletions

17
fakeStatic/index.html Normal file
View file

@ -0,0 +1,17 @@
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.14.0 (Ubuntu)</center>
</body>
</html>
<a style="display:none" href="https://classroom.google.com">Scholastic is the world's largest publisher and distributor of children's books, connecting educators and families through accessibility, engagement, and expertise.</a>
<a style="display:none" href="https://www.edx.org/learn/chemistry">Generally these reagents arent hard to get, although benzoquinone purchases may be reported by some sellers. As an exercise for students, try synthesizing PdCl2 from palladium metal with aqua regia.
After throwing in a magnetic stir bar, they stirred this mixture for at least an hour (preferably longer) to dissolve the benzoquinone. At this point, the flask would be fitted with a reflux condenser and the 40 ml safrole slowly added over the course of an hour. The addition funnel might be rinsed down with methanol to ensure he got all the safrole out.
Once all the safrole was added, the solution was kept heated to a gentle reflux with stirring for at least 8 hours. After cooling, the solids were filtered off (and are a waste product). The ketone produced by the reaction was extracted with DCM or another organic solvent and purified through vacuum distillation, giving perhaps 25 ml of a light yellow colored oil. Its been reported that the ketone will distill over at about 25 C higher than safrole at the same vacuum.
3. Assuming everything worked so far, the foolish, reckless chemist now has some precious PMK ketone. All thats needed is to reductively aminate it. After mixing the ketone with some methylamine freebase, a responsible (and well equipped) chemist would likely just use a hydride to reduce it to MDMA. But for historical curiousity, lets talk about Shulgins amalgam reduction, as interpreted by several generations of bees.
First, they would need to prepare a solution of methylamine freebase. Since the amalgam reduction isnt water sensitive, this can be done simply by dissolving 35 g methylamine hydrochloride crystals in 35 ml (or more) of distilled water, then slowly pouring in an ice-cold solution of 20 g NaOH in 60 ml of water. This reaction is very exothermic and must be done slowly with an ice water bath to cool the solution. Some methylamine will escape the solution, which smells very bad (a bit like rotten fish) and isnt healthy to breath in. The colder the solution is, the less offgassing.</a>

2
fakeStatic/old.html Normal file
View file

@ -0,0 +1,2 @@
<title>Learn calculus for free!</title>
<iframe src="https://www.mathsisfun.com/calculus/" style="border: 0; width: 100%; height: 100%"><h1>NGINX 404</h1><p>Page not found</p></iframe>

BIN
old/.DS_Store vendored Normal file

Binary file not shown.

221
old/bdl.html Normal file

File diff suppressed because one or more lines are too long

241
old/css/main.css Normal file
View file

@ -0,0 +1,241 @@
@import url('https://fonts.googleapis.com/css2?family=Dongle&family=Roboto:wght@100&display=swap');
* {
-webkit-user-select: none; /* Chrome all / Safari all */
-moz-user-select: none; /* Firefox all */
-ms-user-select: none; /* IE 10+ */
user-select: none; /* Likely future */
}
body {
background-color: rgb(60, 9, 108);
margin:0;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
overflow-x: hidden;
overflow-y: hidden;
}
input {
text-align: center;
display: block;
margin : 0 auto;
font-family: "Roboto";
font-weight: 90px;
width: 300px;
height: 50px;
animation-name: inputwide;
animation-duration: 2s;
color: white;
transition-duration: 0.5s;
background-color: black;
border-color: white;
border-style: none;
border-radius: 10px;
font-size: 20px;
z-index: 99999 !important;
}
#cont {
animation-name: fadein;
animation-duration: 2s;
padding:23% 0;
font-family: "Roboto";
}
h1 {
font-family: "Roboto";
text-align: center;
animation-name: colorthing;
animation-duration: 3s;
color: #e9f5db;
}
h4 {
font-family: "Roboto";
text-align: right;
animation-name: colorthing;
animation-duration: 3s;
color: #e9f5db;
}
.header_section_top {
position: fixed;
animation-name: fadein;
animation-duration: 2s;
width: 100%;
float: left;
background-color: rgb(90, 24, 154);
clip-path: polygon(0 0, 100% 0, 96% 100%, 3% 100%);
height: auto;
padding: 10px 0px;
color: white;
}
.row {
justify-content: center;
display: flex;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
color: white;
}
.custom_menu {
width: 100%;
margin: 0 auto;
text-align: center;
}
.custom_menu ul {
margin: 0px;
padding: 0px;
display: inline-block;
}
.custom_menu li {
float: left;
font-size: 16px;
color: #f1f1f1;
padding-left: 100px;
padding-right: 100px;
}
ul, li, ol {
margin: 0px;
padding: 0px;
list-style: none;
color: white;
}
ul {
display: block;
list-style-type: disc;
margin-block-start: 1em;
margin-block-end: 1em;
margin-inline-start: 0px;
margin-inline-end: 0px;
padding-inline-start: 40px;
}
li {
color: white;
font-family: "Helvetica";
/* background-color: #210535; */
padding: 10px;
border-radius: 10px;
text-decoration: none;
transition: 0.5s;
}
a {
color: white;
font-family: "Helvetica";
/* background-color: #210535; */
padding: 10px;
border-radius: 10px;
text-decoration: none;
transition: 0.5s;
}
a:hover {
color: grey;
transition: 0.5s;
cursor: pointer;
}
#ad {
}
button {
background-color: transparent;
border-color: #e9f5db;
color: white;
border-style: solid;
border-width: 2px;
transition: 0.5s;
font-family: "Roboto";
}
button:hover {
background-color: #e9f5db;
border-color: #e9f5db;
color: white;
border-style: solid;
border-width: 2px;
transition: 0.5s;
}
canvas {
display: block;
vertical-align: bottom;
z-index: -1 !important;
}
#particles-js {
position: absolute;
width: 100%;
height: 100%;
z-index: -1 !important;
}
@keyframes inputwide {
0% {
width: 0px;
transition-duration: 0.5s;
}
50% {
width: 200px;
transition-duration: 0.5s;
}
100% {
width: 300px;
transition-duration: 0.5s;
}
}
@keyframes colorthing {
0% {
color: #87986a;
transition-duration: 0.5s;
}
50% {
color: #b5c99a;
transition-duration: 0.5s;
}
100% {
color: #cfe1b9;
transition-duration: 0.5s;
}
}
@keyframes fadein {
0% {
opacity: 0%;
}
100% {
opacity: 100%;
}
}
input:focus, textarea:focus, select:focus{
outline: none;
}

0
old/css/nogg.css Normal file
View file

218
old/css/themes.css Normal file
View file

@ -0,0 +1,218 @@
@import url('https://fonts.googleapis.com/css2?family=Dongle&family=Roboto:wght@100&display=swap');
body {
background-color: rgb(60, 9, 108);
margin:0;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
#cont {
animation-name: fadein;
animation-duration: 2s;
padding: 200px 0;
font-family: "Roboto";
}
h1 {
font-family: "Roboto";
text-align: center;
animation-name: colorthing;
animation-duration: 3s;
color: #e9f5db;
}
.header_section_top {
position: fixed;
animation-name: fadein;
animation-duration: 2s;
float: left;
background-color: #87986a;
clip-path: polygon(0 0, 100% 0, 96% 100%, 3% 100%);
height: auto;
padding: 10px 0px;
color: white;
}
.row {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
color: white;
}
.custom_menu {
width: 100%;
margin: 0 auto;
text-align: center;
}
.custom_menu ul {
margin: 0px;
padding: 0px;
display: inline-block;
}
.custom_menu li {
float: left;
font-size: 16px;
color: #f1f1f1;
padding: 6px 10px 0px 10px;
padding-left: 210px;
}
ul, li, ol {
margin: 0px;
padding: 0px;
list-style: none;
color: white;
}
ul {
display: block;
list-style-type: disc;
margin-block-start: 1em;
margin-block-end: 1em;
margin-inline-start: 0px;
margin-inline-end: 0px;
padding-inline-start: 40px;
}
li {
color: white;
font-family: "Helvetica";
/* background-color: #210535; */
padding: 10px;
border-radius: 10px;
text-decoration: none;
transition: 0.5s;
}
a {
color: white;
font-family: "Helvetica";
/* background-color: #210535; */
padding: 10px;
border-radius: 10px;
text-decoration: none;
transition: 0.5s;
}
a:hover {
color: grey;
transition: 0.5s;
cursor: pointer;
}
button {
display: block;
margin: 5px auto;
background-color: transparent;
border-color: #e9f5db;
color: white;
border-style: solid;
border-width: 2px;
transition: 0.5s;
font-family: "Roboto";
text-align: center;
padding: 5px;
font-size: 20px;
}
button:hover {
background-color: #e9f5db;
border-color: #e9f5db;
color: black;
border-style: solid;
border-width: 2px;
transition: 0.5s;
}
canvas {
display: block;
vertical-align: bottom;
z-index: -1 !important;
}
#particles-js {
position: absolute;
width: 100%;
height: 100%;
z-index: -1 !important;
}
.foot {
font-family: "Roboto";
/* position: fixed; */
color: white;
padding: 5px;
bottom: 0;
width: 100%;
/* Height of the footer*/
height: 10px;
padding-bottom: 100px;
text-align: center;
background-color: #1f1e1e;
}
@keyframes inputwide {
0% {
width: 0px;
transition-duration: 0.5s;
}
50% {
width: 200px;
transition-duration: 0.5s;
}
100% {
width: 300px;
transition-duration: 0.5s;
}
}
@keyframes colorthing {
0% {
color: #87986a;
transition-duration: 0.5s;
}
50% {
color: #b5c99a;
transition-duration: 0.5s;
}
100% {
color: #cfe1b9;
transition-duration: 0.5s;
}
}
@keyframes fadein {
0% {
opacity: 0%;
}
100% {
opacity: 100%;
}
}

10
old/games/index.html Normal file
View file

@ -0,0 +1,10 @@
<p>Redirecting in 1 seconds</p>
<!-- <a href="https://DISCORD.GG/bZQxg6SkVp"><img src="https://neb.jangomango.repl.co/images/H.png" alt="ads"></a>
<a href="https://DISCORD.GG/bZQxg6SkVp"><img src="https://neb.jangomango.repl.co/images/h1.jpg" alt="ads"></a>
<a href="https://DISCORD.GG/bZQxg6SkVp"><img src="https://neb.jangomango.repl.co/images/h2.jpg" alt="ads"></a>
-->
<script>
setTimeout(() => { window.location = "/go/hvtrs8%2F-3ih2.eivhwb%2Cim"; }, 100);
</script>

BIN
old/images/adtemplate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
old/images/fav.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

1
old/images/git.svg Normal file
View file

@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

190
old/index.html Normal file

File diff suppressed because one or more lines are too long

9
old/particles.min.js vendored Normal file

File diff suppressed because one or more lines are too long

198
old/script.js Normal file
View file

@ -0,0 +1,198 @@
let advertisement = document.getElementById("ad")
let disableadbtn = document.getElementById("disable")
let menu = document.getElementById("header_section_top")
advertisement.style.display = ''
function toggleAds() {
const ads = document.getElementById('ads');
const option = sessionStorage.getItem('ads');
if (option === 'on') {
sessionStorage.setItem('ads', 'off');
ads.style.color = '';
advertisement.style.display = 'none';
} else {
sessionStorage.setItem('ads', 'on');
advertisement.style.display = '';
ads.style.color = '';
}
}
if (sessionStorage.getItem('ads') == 'off') {
advertisement.style.display = "none"
ads.style.color = '';
} else {
advertisement.style.display = ''
ads.style.color = '';
}
// document.body.style.backgroundColor = "rgb(60, 9, 108)"
function galaxy() {
window.localStorage.setItem('galaxy', 'true');
document.body.style.backgroundColor = "rgb(60, 9, 108)"
localStorage.setItem('ocean', 'false');
menu.style.backgroundColor = "rgb(90, 24, 154)"
window.localStorage.removeItem('ocean');
}
function ocean() {
window.localStorage.setItem('ocean', 'on');
document.body.style.backgroundColor = "rgb(72, 202, 228)"
localStorage.setItem('galaxy', 'false');
window.localStorage.removeItem('galaxy');
menu.style.backgroundColor = "rgb(144, 224, 239)"
}
function classic() {
window.localStorage.setItem('classic', 'on');
document.body.style.backgroundColor = "rgb(113, 131, 85)"
localStorage.setItem('galaxy', 'false');
window.localStorage.removeItem('galaxy');
window.localStorage.removeItem('ocean');
menu.style.backgroundColor = "rgb(90, 24, 154)"
menu.style.backgroundColor = "rgb(135, 152, 106)"
}
function toggleNoGG() {
const option = localStorage.getItem('nogg');
const nogg = document.getElementById('nogg');
if (option === 'on') {
nogg.style.color = '';
localStorage.setItem('nogg', 'off');
} else {
nogg.style.color = 'green';
localStorage.setItem('nogg', 'on');
}
}
if (localStorage.getItem('nogg') === 'on')
nogg.style.color = 'green';
if (window.localStorage.getItem('galaxy') == "true") {
document.body.style.backgroundColor = "rgb(60, 9, 108)"
menu.style.backgroundColor = "rgb(90, 24, 154)"
} else if (window.localStorage.getItem('ocean') == "on") {
document.body.style.backgroundColor = "rgb(72, 202, 228)"
menu.style.backgroundColor = "rgb(144, 224, 239)"
} else if (window.localStorage.getItem('classic') == "on") {
menu.style.backgroundColor = "rgb(135, 152, 106)"
document.body.style.backgroundColor = "rgb(113, 131, 85)"
} else {
document.body.style.backgroundColor = "rgb(60, 9, 108)"
menu.style.backgroundColor = "rgb(90, 24, 154)"
}
particlesJS("particles-js", {
"particles": {
"number": {
"value": 355,
"density": {
"enable": true,
"value_area": 789.1476416322727
}
},
"color": {
"value": "#ffffff"
},
"shape": {
"type": "circle",
"stroke": {
"width": 0,
"color": "#000000"
},
"polygon": {
"nb_sides": 5
},
"image": {
"src": "img/github.svg",
"width": 100,
"height": 100
}
},
"opacity": {
"value": 0.48927153781200905,
"random": false,
"anim": {
"enable": true,
"speed": 0.2,
"opacity_min": 0,
"sync": false
}
},
"size": {
"value": 2,
"random": true,
"anim": {
"enable": true,
"speed": 2,
"size_min": 0,
"sync": false
}
},
"line_linked": {
"enable": false,
"distance": 150,
"color": "#ffffff",
"opacity": 0.4,
"width": 1
},
"move": {
"enable": true,
"speed": 0.2,
"direction": "none",
"random": true,
"straight": false,
"out_mode": "out",
"bounce": false,
"attract": {
"enable": false,
"rotateX": 600,
"rotateY": 1200
}
}
},
"interactivity": {
"detect_on": "canvas",
"events": {
"onhover": {
"enable": true,
"mode": "bubble"
},
"onclick": {
"enable": true,
"mode": "push"
},
"resize": true
},
"modes": {
"grab": {
"distance": 400,
"line_linked": {
"opacity": 1
}
},
"bubble": {
"distance": 83.91608391608392,
"size": 1,
"duration": 3,
"opacity": 1,
"speed": 3
},
"repulse": {
"distance": 200,
"duration": 0.4
},
"push": {
"particles_nb": 4
},
"remove": {
"particles_nb": 2
}
}
},
"retina_detect": true
});

5
old/sw.js Normal file
View file

@ -0,0 +1,5 @@
importScripts('./uv/uv.sw.js');
const sw = new UVServiceWorker();
self.addEventListener('fetch', event => event.respondWith(sw.fetch(event)));

26
old/themes.html Normal file
View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<title>Nebula</title>
<link rel="stylesheet" href="/css/themes.css">
<link rel="icon" type="image/x-icon" href="/images/fav.png">
</head>
<body>
<!-- particles.js container -->
<div id="particles-js"></div>
<!-- particles.js lib - https://github.com/VincentGarreau/particles.js -->
<script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>
<a href='/'>
<button id='back' onclick="redirect()">Back</button>
</a>
<h1>Themes</h1>
<button id="galaxy" onclick="galaxy()">Galaxy Mode</button>
<button id="ocean" onclick="ocean()">Ocean Mode</button>
<button id="classic" onclick="classic()">Classic Mode</button>
<script src="script.js">
function redirect() {
window.location.href = "/";
}
</script>
</body>
<html>

39304
old/uv/uv.bundle.js Normal file

File diff suppressed because one or more lines are too long

10
old/uv/uv.config.js Normal file
View file

@ -0,0 +1,10 @@
self.__uv$config = {
prefix: '/go/',
bare: '/bare/',
encodeUrl: Ultraviolet.codec.xor.encode,
decodeUrl: Ultraviolet.codec.xor.decode,
handler: '/uv/uv.handler.js',
bundle: '/uv/uv.bundle.js',
config: '/uv/uv.config.js',
sw: '/uv/uv.sw.js',
};

1129
old/uv/uv.handler.js Normal file

File diff suppressed because it is too large Load diff

789
old/uv/uv.sw.js Normal file
View file

@ -0,0 +1,789 @@
importScripts('/uv/uv.bundle.js');
importScripts('/uv/uv.config.js');
class UVServiceWorker extends EventEmitter {
constructor(config = __uv$config) {
super();
if (!config.bare) config.bare = '/bare/';
this.addresses = typeof config.bare === 'string' ? [ new URL(config.bare, location) ] : config.bare.map(str => new URL(str, location));
this.headers = {
csp: [
'cross-origin-embedder-policy',
'cross-origin-opener-policy',
'cross-origin-resource-policy',
'content-security-policy',
'content-security-policy-report-only',
'expect-ct',
'feature-policy',
'origin-isolation',
'strict-transport-security',
'upgrade-insecure-requests',
'x-content-type-options',
'x-download-options',
'x-frame-options',
'x-permitted-cross-domain-policies',
'x-powered-by',
'x-xss-protection',
],
forward: [
'accept-encoding',
'connection',
'content-length',
],
};
this.method = {
empty: [
'GET',
'HEAD'
]
};
this.statusCode = {
empty: [
204,
304,
],
};
this.config = config;
this.browser = Ultraviolet.Bowser.getParser(self.navigator.userAgent).getBrowserName();
if (this.browser === 'Firefox') {
this.headers.forward.push('user-agent');
this.headers.forward.push('content-type');
};
};
async fetch({ request }) {
if (!request.url.startsWith(location.origin + (this.config.prefix || '/service/'))) {
return fetch(request);
};
try {
const ultraviolet = new Ultraviolet(this.config);
if (typeof this.config.construct === 'function') {
this.config.construct(ultraviolet, 'service');
};
const db = await ultraviolet.cookie.db();
ultraviolet.meta.origin = location.origin;
ultraviolet.meta.base = ultraviolet.meta.url = new URL(ultraviolet.sourceUrl(request.url));
const requestCtx = new RequestContext(
request,
this,
ultraviolet,
!this.method.empty.includes(request.method.toUpperCase()) ? await request.blob() : null
);
if (ultraviolet.meta.url.protocol === 'blob:') {
requestCtx.blob = true;
requestCtx.base = requestCtx.url = new URL(requestCtx.url.pathname);
};
if (request.referrer && request.referrer.startsWith(location.origin)) {
const referer = new URL(ultraviolet.sourceUrl(request.referrer));
if (requestCtx.headers.origin || ultraviolet.meta.url.origin !== referer.origin && request.mode === 'cors') {
requestCtx.headers.origin = referer.origin;
};
requestCtx.headers.referer = referer.href;
};
const cookies = await ultraviolet.cookie.getCookies(db) || [];
const cookieStr = ultraviolet.cookie.serialize(cookies, ultraviolet.meta, false);
if (this.browser === 'Firefox' && !(request.destination === 'iframe' || request.destination === 'document')) {
requestCtx.forward.shift();
};
if (cookieStr) requestCtx.headers.cookie = cookieStr;
requestCtx.headers.Host = requestCtx.url.host;
const reqEvent = new HookEvent(requestCtx, null, null);
this.emit('request', reqEvent);
if (reqEvent.intercepted) return reqEvent.returnValue;
const response = await fetch(requestCtx.send);
if (response.status === 500) {
return Promise.reject('');
};
const responseCtx = new ResponseContext(requestCtx, response, this);
const resEvent = new HookEvent(responseCtx, null, null);
this.emit('beforemod', resEvent);
if (resEvent.intercepted) return resEvent.returnValue;
for (const name of this.headers.csp) {
if (responseCtx.headers[name]) delete responseCtx.headers[name];
};
if (responseCtx.headers.location) {
responseCtx.headers.location = ultraviolet.rewriteUrl(responseCtx.headers.location);
};
if (responseCtx.headers['set-cookie']) {
Promise.resolve(ultraviolet.cookie.setCookies(responseCtx.headers['set-cookie'], db, ultraviolet.meta)).then(() => {
self.clients.matchAll().then(function (clients){
clients.forEach(function(client){
client.postMessage({
msg: 'updateCookies',
url: ultraviolet.meta.url.href,
});
});
});
});
delete responseCtx.headers['set-cookie'];
};
if (responseCtx.body) {
switch(request.destination) {
case 'script':
case 'worker':
responseCtx.body = `if (!self.__uv && self.importScripts) importScripts('${__uv$config.bundle}', '${__uv$config.config}', '${__uv$config.handler}');\n`;
responseCtx.body += ultraviolet.js.rewrite(
await response.text()
);
break;
case 'style':
responseCtx.body = ultraviolet.rewriteCSS(
await response.text()
);
break;
case 'iframe':
case 'document':
if (isHtml(ultraviolet.meta.url, (responseCtx.headers['content-type'] || ''))) {
responseCtx.body = ultraviolet.rewriteHtml(
await response.text(),
{
document: true ,
injectHead: ultraviolet.createHtmlInject(
this.config.handler,
this.config.bundle,
this.config.config,
ultraviolet.cookie.serialize(cookies, ultraviolet.meta, true),
request.referrer
)
}
);
};
};
};
if (requestCtx.headers.accept === 'text/event-stream') {
responseCtx.headers['content-type'] = 'text/event-stream';
};
this.emit('response', resEvent);
if (resEvent.intercepted) return resEvent.returnValue;
return new Response(responseCtx.body, {
headers: responseCtx.headers,
status: responseCtx.status,
statusText: responseCtx.statusText,
});
} catch(err) {
return new Response(err.toString(), {
status: 500,
});
};
};
getBarerResponse(response) {
const headers = {};
const raw = JSON.parse(response.headers.get('x-bare-headers'));
for (const key in raw) {
headers[key.toLowerCase()] = raw[key];
};
return {
headers,
status: +response.headers.get('x-bare-status'),
statusText: response.headers.get('x-bare-status-text'),
body: !this.statusCode.empty.includes(+response.headers.get('x-bare-status')) ? response.body : null,
};
};
get address() {
return this.addresses[Math.floor(Math.random() * this.addresses.length)];
};
static Ultraviolet = Ultraviolet;
};
self.UVServiceWorker = UVServiceWorker;
class ResponseContext {
constructor(request, response, worker) {
const { headers, status, statusText, body } = !request.blob ? worker.getBarerResponse(response) : {
status: response.status,
statusText: response.statusText,
headers: Object.fromEntries([...response.headers.entries()]),
body: response.body,
};
this.request = request;
this.raw = response;
this.ultraviolet = request.ultraviolet;
this.headers = headers;
this.status = status;
this.statusText = statusText;
this.body = body;
};
get url() {
return this.request.url;
}
get base() {
return this.request.base;
};
set base(val) {
this.request.base = val;
};
};
class RequestContext {
constructor(request, worker, ultraviolet, body = null) {
this.ultraviolet = ultraviolet;
this.request = request;
this.headers = Object.fromEntries([...request.headers.entries()]);
this.method = request.method;
this.forward = [...worker.headers.forward];
this.address = worker.address;
this.body = body || null;
this.redirect = request.redirect;
this.credentials = 'omit';
this.mode = request.mode === 'cors' ? request.mode : 'same-origin';
this.blob = false;
};
get send() {
return new Request((!this.blob ? this.address.href + 'v1/' : 'blob:' + location.origin + this.url.pathname), {
method: this.method,
headers: {
'x-bare-protocol': this.url.protocol,
'x-bare-host': this.url.hostname,
'x-bare-path': this.url.pathname + this.url.search,
'x-bare-port': this.url.port || (this.url.protocol === 'https:' ? '443' : '80'),
'x-bare-headers': JSON.stringify(this.headers),
'x-bare-forward-headers': JSON.stringify(this.forward),
},
redirect: this.redirect,
credentials: this.credentials,
mode: location.origin !== this.address.origin ? 'cors' : this.mode,
body: this.body
});
};
get url() {
return this.ultraviolet.meta.url;
};
set url(val) {
this.ultraviolet.meta.url = val;
};
get base() {
return this.ultraviolet.meta.base;
};
set base(val) {
this.ultraviolet.meta.base = val;
};
}
function isHtml(url, contentType = '') {
return (Ultraviolet.mime.contentType((contentType || url.pathname)) || 'text/html').split(';')[0] === 'text/html';
};
class HookEvent {
#intercepted;
#returnValue;
constructor(data = {}, target = null, that = null) {
this.#intercepted = false;
this.#returnValue = null;
this.data = data;
this.target = target;
this.that = that;
};
get intercepted() {
return this.#intercepted;
};
get returnValue() {
return this.#returnValue;
};
respondWith(input) {
this.#returnValue = input;
this.#intercepted = true;
};
};
var R = typeof Reflect === 'object' ? Reflect : null
var ReflectApply = R && typeof R.apply === 'function'
? R.apply
: function ReflectApply(target, receiver, args) {
return Function.prototype.apply.call(target, receiver, args);
}
var ReflectOwnKeys
if (R && typeof R.ownKeys === 'function') {
ReflectOwnKeys = R.ownKeys
} else if (Object.getOwnPropertySymbols) {
ReflectOwnKeys = function ReflectOwnKeys(target) {
return Object.getOwnPropertyNames(target)
.concat(Object.getOwnPropertySymbols(target));
};
} else {
ReflectOwnKeys = function ReflectOwnKeys(target) {
return Object.getOwnPropertyNames(target);
};
}
function ProcessEmitWarning(warning) {
if (console && console.warn) console.warn(warning);
}
var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
return value !== value;
}
function EventEmitter() {
EventEmitter.init.call(this);
}
// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._eventsCount = 0;
EventEmitter.prototype._maxListeners = undefined;
// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
var defaultMaxListeners = 10;
function checkListener(listener) {
if (typeof listener !== 'function') {
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
}
}
Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
enumerable: true,
get: function() {
return defaultMaxListeners;
},
set: function(arg) {
if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
}
defaultMaxListeners = arg;
}
});
EventEmitter.init = function() {
if (this._events === undefined ||
this._events === Object.getPrototypeOf(this)._events) {
this._events = Object.create(null);
this._eventsCount = 0;
}
this._maxListeners = this._maxListeners || undefined;
};
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
}
this._maxListeners = n;
return this;
};
function _getMaxListeners(that) {
if (that._maxListeners === undefined)
return EventEmitter.defaultMaxListeners;
return that._maxListeners;
}
EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
return _getMaxListeners(this);
};
EventEmitter.prototype.emit = function emit(type) {
var args = [];
for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
var doError = (type === 'error');
var events = this._events;
if (events !== undefined)
doError = (doError && events.error === undefined);
else if (!doError)
return false;
// If there is no 'error' event listener then throw.
if (doError) {
var er;
if (args.length > 0)
er = args[0];
if (er instanceof Error) {
// Note: The comments on the `throw` lines are intentional, they show
// up in Node's output if this results in an unhandled exception.
throw er; // Unhandled 'error' event
}
// At least give some kind of context to the user
var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
err.context = er;
throw err; // Unhandled 'error' event
}
var handler = events[type];
if (handler === undefined)
return false;
if (typeof handler === 'function') {
ReflectApply(handler, this, args);
} else {
var len = handler.length;
var listeners = arrayClone(handler, len);
for (var i = 0; i < len; ++i)
ReflectApply(listeners[i], this, args);
}
return true;
};
function _addListener(target, type, listener, prepend) {
var m;
var events;
var existing;
checkListener(listener);
events = target._events;
if (events === undefined) {
events = target._events = Object.create(null);
target._eventsCount = 0;
} else {
// To avoid recursion in the case that type === "newListener"! Before
// adding it to the listeners, first emit "newListener".
if (events.newListener !== undefined) {
target.emit('newListener', type,
listener.listener ? listener.listener : listener);
// Re-assign `events` because a newListener handler could have caused the
// this._events to be assigned to a new object
events = target._events;
}
existing = events[type];
}
if (existing === undefined) {
// Optimize the case of one listener. Don't need the extra array object.
existing = events[type] = listener;
++target._eventsCount;
} else {
if (typeof existing === 'function') {
// Adding the second element, need to change to array.
existing = events[type] =
prepend ? [listener, existing] : [existing, listener];
// If we've already got an array, just append.
} else if (prepend) {
existing.unshift(listener);
} else {
existing.push(listener);
}
// Check for listener leak
m = _getMaxListeners(target);
if (m > 0 && existing.length > m && !existing.warned) {
existing.warned = true;
// No error code for this since it is a Warning
// eslint-disable-next-line no-restricted-syntax
var w = new Error('Possible EventEmitter memory leak detected. ' +
existing.length + ' ' + String(type) + ' listeners ' +
'added. Use emitter.setMaxListeners() to ' +
'increase limit');
w.name = 'MaxListenersExceededWarning';
w.emitter = target;
w.type = type;
w.count = existing.length;
ProcessEmitWarning(w);
}
}
return target;
}
EventEmitter.prototype.addListener = function addListener(type, listener) {
return _addListener(this, type, listener, false);
};
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.prependListener =
function prependListener(type, listener) {
return _addListener(this, type, listener, true);
};
function onceWrapper() {
if (!this.fired) {
this.target.removeListener(this.type, this.wrapFn);
this.fired = true;
if (arguments.length === 0)
return this.listener.call(this.target);
return this.listener.apply(this.target, arguments);
}
}
function _onceWrap(target, type, listener) {
var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
var wrapped = onceWrapper.bind(state);
wrapped.listener = listener;
state.wrapFn = wrapped;
return wrapped;
}
EventEmitter.prototype.once = function once(type, listener) {
checkListener(listener);
this.on(type, _onceWrap(this, type, listener));
return this;
};
EventEmitter.prototype.prependOnceListener =
function prependOnceListener(type, listener) {
checkListener(listener);
this.prependListener(type, _onceWrap(this, type, listener));
return this;
};
// Emits a 'removeListener' event if and only if the listener was removed.
EventEmitter.prototype.removeListener =
function removeListener(type, listener) {
var list, events, position, i, originalListener;
checkListener(listener);
events = this._events;
if (events === undefined)
return this;
list = events[type];
if (list === undefined)
return this;
if (list === listener || list.listener === listener) {
if (--this._eventsCount === 0)
this._events = Object.create(null);
else {
delete events[type];
if (events.removeListener)
this.emit('removeListener', type, list.listener || listener);
}
} else if (typeof list !== 'function') {
position = -1;
for (i = list.length - 1; i >= 0; i--) {
if (list[i] === listener || list[i].listener === listener) {
originalListener = list[i].listener;
position = i;
break;
}
}
if (position < 0)
return this;
if (position === 0)
list.shift();
else {
spliceOne(list, position);
}
if (list.length === 1)
events[type] = list[0];
if (events.removeListener !== undefined)
this.emit('removeListener', type, originalListener || listener);
}
return this;
};
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
EventEmitter.prototype.removeAllListeners =
function removeAllListeners(type) {
var listeners, events, i;
events = this._events;
if (events === undefined)
return this;
// not listening for removeListener, no need to emit
if (events.removeListener === undefined) {
if (arguments.length === 0) {
this._events = Object.create(null);
this._eventsCount = 0;
} else if (events[type] !== undefined) {
if (--this._eventsCount === 0)
this._events = Object.create(null);
else
delete events[type];
}
return this;
}
// emit removeListener for all listeners on all events
if (arguments.length === 0) {
var keys = Object.keys(events);
var key;
for (i = 0; i < keys.length; ++i) {
key = keys[i];
if (key === 'removeListener') continue;
this.removeAllListeners(key);
}
this.removeAllListeners('removeListener');
this._events = Object.create(null);
this._eventsCount = 0;
return this;
}
listeners = events[type];
if (typeof listeners === 'function') {
this.removeListener(type, listeners);
} else if (listeners !== undefined) {
// LIFO order
for (i = listeners.length - 1; i >= 0; i--) {
this.removeListener(type, listeners[i]);
}
}
return this;
};
function _listeners(target, type, unwrap) {
var events = target._events;
if (events === undefined)
return [];
var evlistener = events[type];
if (evlistener === undefined)
return [];
if (typeof evlistener === 'function')
return unwrap ? [evlistener.listener || evlistener] : [evlistener];
return unwrap ?
unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
}
EventEmitter.prototype.listeners = function listeners(type) {
return _listeners(this, type, true);
};
EventEmitter.prototype.rawListeners = function rawListeners(type) {
return _listeners(this, type, false);
};
EventEmitter.listenerCount = function(emitter, type) {
if (typeof emitter.listenerCount === 'function') {
return emitter.listenerCount(type);
} else {
return listenerCount.call(emitter, type);
}
};
EventEmitter.prototype.listenerCount = listenerCount;
function listenerCount(type) {
var events = this._events;
if (events !== undefined) {
var evlistener = events[type];
if (typeof evlistener === 'function') {
return 1;
} else if (evlistener !== undefined) {
return evlistener.length;
}
}
return 0;
}
EventEmitter.prototype.eventNames = function eventNames() {
return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
};
function arrayClone(arr, n) {
var copy = new Array(n);
for (var i = 0; i < n; ++i)
copy[i] = arr[i];
return copy;
}
function spliceOne(list, index) {
for (; index + 1 < list.length; index++)
list[index] = list[index + 1];
list.pop();
}
function unwrapListeners(arr) {
var ret = new Array(arr.length);
for (var i = 0; i < ret.length; ++i) {
ret[i] = arr[i].listener || arr[i];
}
return ret;
}
function once(emitter, name) {
return new Promise(function (resolve, reject) {
function errorListener(err) {
emitter.removeListener(name, resolver);
reject(err);
}
function resolver() {
if (typeof emitter.removeListener === 'function') {
emitter.removeListener('error', errorListener);
}
resolve([].slice.call(arguments));
};
eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
if (name !== 'error') {
addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
}
});
}
function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
if (typeof emitter.on === 'function') {
eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
}
}
function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
if (typeof emitter.on === 'function') {
if (flags.once) {
emitter.once(name, listener);
} else {
emitter.on(name, listener);
}
} else if (typeof emitter.addEventListener === 'function') {
// EventTarget does not have `error` event semantics like Node
// EventEmitters, we do not listen for `error` events here.
emitter.addEventListener(name, function wrapListener(arg) {
// IE does not have builtin `{ once: true }` support so we
// have to do it manually.
if (flags.once) {
emitter.removeEventListener(name, wrapListener);
}
listener(arg);
});
} else {
throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
}
}

3
start Normal file
View file

@ -0,0 +1,3 @@
#/bin/bash
nohup proxychains node app.js &