1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
<!doctype html>
<title>popup helper</title>
<script>
const search = decodeURIComponent(window.location.search.replace("?", ""));
const steps = search.split("|");
async function proceedTest() {
while (steps.length) {
const step = steps.shift();
if (step.startsWith("report=")) {
const id = step.split("=")[1];
const stashURL = new URL("window-name-stash.py", location);
stashURL.searchParams.set('id', id);
stashURL.searchParams.set('value', window.name);
await fetch(stashURL, { method: "POST" });
continue;
}
if (step === "close") {
window.close();
break;
}
if (step === "cross") {
const url = new URL(window.location);
url.host = "{{hosts[alt][]}}:{{ports[https][0]}}";
url.search = "?" + steps.join("|");
window.location = url.href;
break;
}
if (step === "same") {
const url = new URL(window.location);
url.host = "{{host}}:{{ports[https][0]}}";
url.search = "?" + steps.join("|");
window.location = url.href;
break;
}
if (step === "sub") {
const url = new URL(window.location);
url.host = "{{hosts[][www]}}:{{ports[https][0]}}";
url.search = "?" + steps.join("|");
window.location = url.href;
break;
}
if (step === "closeOpener") {
if (window.opener) {
window.opener.close();
}
continue;
}
if (step.startsWith("navOpener=")) {
if (!window.opener) {
continue;
}
let url = step.split("=")[1];
window.opener.location.href = url;
continue;
}
if (step === "open") {
const url = new URL(window.location);
url.host = "{{host}}:{{ports[https][0]}}";
url.search = "?" + steps.join("|");
window.open(url);
break;
}
if (step.startsWith("reportOpener=")) {
const id = step.split("=")[1];
const stashURL = new URL("window-name-stash.py", location);
stashURL.searchParams.set('id', id);
stashURL.searchParams.set('value', window.opener.name);
await fetch(stashURL, { method: "POST" });
continue;
}
if (step.startsWith("set=")) {
window.name = step.split("=")[1];
continue;
}
if (step.startsWith("setDomain=")) {
document.domain = step.split("=")[1];
continue;
}
throw new Error("Unsupported step!");
}
}
proceedTest();
</script>
|