set on the host arg

This commit is contained in:
Toshit Chawda 2024-07-14 14:12:16 -07:00
parent c4e90a50ab
commit 51abf6577f
No known key found for this signature in database
GPG key ID: 91480ED99E2B3D9D

View file

@ -24,8 +24,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
async fetch({ request }: FetchEvent) { async fetch({ request }: FetchEvent) {
const urlParam = new URLSearchParams(new URL(request.url).search); const urlParam = new URLSearchParams(new URL(request.url).search);
const { encodeUrl, decodeUrl } = self.$scramjet.shared.url; const { encodeUrl, decodeUrl, rewriteHeaders, rewriteHtml, rewriteJs, rewriteCss, rewriteWorkers } = self.$scramjet.shared;
const { rewriteHeaders, rewriteHtml, rewriteJs, rewriteCss, rewriteWorkers } = self.$scramjet.shared.rewrite;
if (urlParam.has("url")) { if (urlParam.has("url")) {
return Response.redirect(encodeUrl(urlParam.get("url"), new URL(urlParam.get("url")))) return Response.redirect(encodeUrl(urlParam.get("url"), new URL(urlParam.get("url"))))
@ -34,7 +33,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
try { try {
const url = new URL(decodeUrl(request.url)); const url = new URL(decodeUrl(request.url));
const cookieStore = new IDBMap(url.origin, { durability: "relaxed", prefix: "Cookies" }); const cookieStore = new IDBMap(url.host, { durability: "relaxed", prefix: "Cookies" });
const response: BareResponseFetch = await this.client.fetch(url, { const response: BareResponseFetch = await this.client.fetch(url, {
method: request.method, method: request.method,
@ -53,9 +52,21 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
for (const cookie of (responseHeaders["set-cookie"] || []) as string[]) { for (const cookie of (responseHeaders["set-cookie"] || []) as string[]) {
let cookieParsed = cookie.split(";").map(x => x.trim().split("=")); let cookieParsed = cookie.split(";").map(x => x.trim().split("="));
let [key, value] = cookieParsed.shift(); let [key, value] = cookieParsed.shift();
value = value.replace("\"", ""); value = value.replace("\"", "");
const hostArg = cookieParsed.find(x => x[0].toLowerCase() === "domain");
cookieParsed = cookieParsed.filter(x => x[0].toLowerCase() !== "domain");
let host = hostArg ? hostArg[1] : undefined;
if (host && host !== url.host) {
if (host.startsWith(".")) host = host.slice(1);
const cookieStore = new IDBMap(host, { durability: "relaxed", prefix: "Cookies" });
cookieStore.set(key, { value: value, args: cookieParsed }); cookieStore.set(key, { value: value, args: cookieParsed });
} else {
cookieStore.set(key, { value: value, args: cookieParsed });
}
} }
if (response.body) { if (response.body) {
@ -177,8 +188,7 @@ function errorTemplate(
<button id="reload">Reload</button> <button id="reload">Reload</button>
<hr /> <hr />
<p><i>Scramjet v<span id="version"></span></i></p> <p><i>Scramjet v<span id="version"></span></i></p>
<script src="${ <script src="${"data:application/javascript," + encodeURIComponent(script)
"data:application/javascript," + encodeURIComponent(script)
}"></script> }"></script>
</body> </body>
</html> </html>