blob: 55fb8ebbbc5957cbabf7ce57ba9c6e818cced034 (
plain)
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 = 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>
|