diff --git a/static/cySw.js b/static/cySw.js index 2f9856d..1f870b5 100644 --- a/static/cySw.js +++ b/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) - ) - } - }); \ No newline at end of file + + 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) + ) + } +});