Update cySw.js
This commit is contained in:
parent
28f29f4a02
commit
f96aaf1a06
1 changed files with 103 additions and 102 deletions
205
static/cySw.js
205
static/cySw.js
|
|
@ -1,108 +1,109 @@
|
|||
class Cyclone {
|
||||
constructor() {
|
||||
tmp = location.pathname.split('/service')[1]
|
||||
|
||||
tmp = tmp.substring(1, tmp.length);
|
||||
let re = /(http(s|):)/g
|
||||
|
||||
//if (tmp.match(re)) {
|
||||
tmp = tmp.replace("http://", '')
|
||||
tmp = tmp.replace("https://", '')
|
||||
tmp = tmp.replace("http:/", '')
|
||||
tmp = tmp.replace("https:/", '')
|
||||
tmp = location.protocol + "//" + tmp
|
||||
|
||||
document._location = new URL(tmp);
|
||||
|
||||
this.url = new URL(document._location.href);
|
||||
|
||||
this.bareEndpoint = location.host + "/service";
|
||||
|
||||
if (this.url.pathname == "/") {
|
||||
this.paths = ['/']
|
||||
} else {
|
||||
this.paths = this.url.pathname.split('/')
|
||||
}
|
||||
this.host = 'https://' + this.url.host
|
||||
|
||||
this.targetAttrs = ['href', 'src', 'action', 'srcdoc', 'srcset'];
|
||||
|
||||
console.log("Cyclone Injected with paths of:", this.paths, this.url.pathname)
|
||||
|
||||
/*const LocationHandler = {
|
||||
get(target, prop, reciver) {
|
||||
return loc[prop]
|
||||
},
|
||||
set(target, prop, val) {
|
||||
return 'hi'
|
||||
}
|
||||
}
|
||||
document._location = new Proxy(LocationHandler, loc)*/
|
||||
constructor() {
|
||||
tmp = location.pathname.split('/service')[1]
|
||||
|
||||
tmp = tmp.substring(1, tmp.length);
|
||||
let re = /(http(s|):)/g
|
||||
|
||||
//if (tmp.match(re)) {
|
||||
tmp = tmp.replace("http://", '')
|
||||
tmp = tmp.replace("https://", '')
|
||||
tmp = tmp.replace("http:/", '')
|
||||
tmp = tmp.replace("https:/", '')
|
||||
tmp = location.protocol + "//" + tmp
|
||||
|
||||
document._location = new URL(tmp);
|
||||
|
||||
this.url = new URL(document._location.href);
|
||||
|
||||
this.bareEndpoint = location.host + "/service";
|
||||
|
||||
if (this.url.pathname == "/") {
|
||||
this.paths = ['/']
|
||||
} else {
|
||||
this.paths = this.url.pathname.split('/')
|
||||
}
|
||||
|
||||
rewriteUrl(link) {
|
||||
var rewritten;
|
||||
|
||||
if (link.startsWith('https://') || link.startsWith('http://') || link.startsWith('//')) {
|
||||
if (link.startsWith('//')) {
|
||||
rewritten = 'https:' + link;
|
||||
} else {
|
||||
rewritten = link;
|
||||
};
|
||||
} else {
|
||||
if (link.startsWith('.')) {
|
||||
let offset = 1;
|
||||
if (link.startsWith('..')) {
|
||||
offset = 2;
|
||||
}
|
||||
let file = link.substr(link.indexOf('.') + 1 + offset, link.length)
|
||||
|
||||
rewritten = this.url.hostname + file
|
||||
} else {
|
||||
if (link.startsWith('/')) {
|
||||
rewritten = this.host + link
|
||||
} else {
|
||||
rewritten = this.host + '/' + link;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var exceptions = ['about:', 'mailto:', 'javascript:', 'data:']
|
||||
let needstowrite = true;
|
||||
for (let i = 0; i < exceptions.length; i++) {
|
||||
if (link.startsWith(exceptions[i])) {
|
||||
needstowrite = false
|
||||
}
|
||||
}
|
||||
|
||||
if (needstowrite) {
|
||||
rewritten = location.protocol + '//' + this.bareEndpoint + '/' + rewritten
|
||||
return rewritten;
|
||||
} else {
|
||||
return link;
|
||||
this.host = 'https://' + this.url.host
|
||||
|
||||
this.targetAttrs = ['href', 'src', 'action', 'srcdoc', 'srcset'];
|
||||
|
||||
console.log("Cyclone Injected with paths of:", this.paths, this.url.pathname)
|
||||
|
||||
/*const LocationHandler = {
|
||||
get(target, prop, reciver) {
|
||||
return loc[prop]
|
||||
},
|
||||
set(target, prop, val) {
|
||||
return 'hi'
|
||||
}
|
||||
}
|
||||
|
||||
rewriteSrcset(sample) {
|
||||
return sample.split(',').map(e => {
|
||||
return (e.split(' ').map(a => {
|
||||
if (a.startsWith('http') || (a.startsWith('/') && !a.startsWith(this.prefix))) {
|
||||
var url = this.rewriteUrl(a)
|
||||
}
|
||||
return a.replace(a, (url || a))
|
||||
}).join(' '))
|
||||
}).join(',')
|
||||
|
||||
document._location = new Proxy(LocationHandler, loc)*/
|
||||
}
|
||||
|
||||
rewriteUrl(link) {
|
||||
var rewritten;
|
||||
|
||||
if (link.startsWith('https://') || link.startsWith('http://') || link.startsWith('//')) {
|
||||
if (link.startsWith('//')) {
|
||||
rewritten = 'https:' + link;
|
||||
} else {
|
||||
rewritten = link;
|
||||
};
|
||||
} else {
|
||||
if (link.startsWith('.')) {
|
||||
let offset = 1;
|
||||
if (link.startsWith('..')) {
|
||||
offset = 2;
|
||||
}
|
||||
let file = link.substr(link.indexOf('.') + 1 + offset, link.length)
|
||||
|
||||
rewritten = this.url.hostname + file
|
||||
} else {
|
||||
if (link.startsWith('/')) {
|
||||
rewritten = this.host + link
|
||||
} else {
|
||||
rewritten = this.host + '/' + link;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var exceptions = ['about:', 'mailto:', 'javascript:', 'data:']
|
||||
let needstowrite = true;
|
||||
for (let i = 0; i < exceptions.length; i++) {
|
||||
if (link.startsWith(exceptions[i])) {
|
||||
needstowrite = false
|
||||
}
|
||||
}
|
||||
|
||||
if (needstowrite) {
|
||||
rewritten = location.protocol + '//' + this.bareEndpoint + '/' + rewritten
|
||||
return rewritten;
|
||||
} else {
|
||||
return link;
|
||||
}
|
||||
}
|
||||
|
||||
self.addEventListener('fetch', function(event) {
|
||||
var uri = new URL(event.request.url);
|
||||
|
||||
if (!uri.pathname.startsWith('/service') && uri.pathname == "/facicon.ico") {
|
||||
var tmp = uri.href;
|
||||
|
||||
event.respondWith(
|
||||
fetch("https://Cyclone2.jimmynuetron.repl.co/service/"+tmp)
|
||||
)
|
||||
}
|
||||
});
|
||||
|
||||
rewriteSrcset(sample) {
|
||||
return sample.split(',').map(e => {
|
||||
return (e.split(' ').map(a => {
|
||||
if (a.startsWith('http') || (a.startsWith('/') && !a.startsWith(this.prefix))) {
|
||||
var url = this.rewriteUrl(a)
|
||||
}
|
||||
return a.replace(a, (url || a))
|
||||
}).join(' '))
|
||||
}).join(',')
|
||||
}
|
||||
}
|
||||
|
||||
self.addEventListener('fetch', function(event) {
|
||||
var uri = new URL(event.request.url);
|
||||
|
||||
if (!uri.pathname.startsWith('/service') && uri.pathname == "/facicon.ico") {
|
||||
var tmp = uri.href;
|
||||
|
||||
event.respondWith(
|
||||
fetch("https://Cyclone2.jimmynuetron.repl.co/service/"+tmp)
|
||||
)
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue