@swf2es/desktop 0.0.0-stage → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +135 -2
- package/dist/launch/electron.d.ts +14 -0
- package/dist/launch/electron.d.ts.map +1 -0
- package/dist/launch/electron.js +40 -0
- package/dist/launch/electron.js.map +1 -0
- package/dist/launch/launch.d.ts +3 -0
- package/dist/launch/launch.d.ts.map +1 -0
- package/dist/launch/launch.js +69 -0
- package/dist/launch/launch.js.map +1 -0
- package/dist/main/addresses.d.ts +7 -0
- package/dist/main/addresses.d.ts.map +1 -0
- package/dist/main/addresses.js +155 -0
- package/dist/main/addresses.js.map +1 -0
- package/dist/main/air.d.ts +71 -0
- package/dist/main/air.d.ts.map +1 -0
- package/dist/main/air.js +216 -0
- package/dist/main/air.js.map +1 -0
- package/dist/main/connections.d.ts +38 -0
- package/dist/main/connections.d.ts.map +1 -0
- package/dist/main/connections.js +103 -0
- package/dist/main/connections.js.map +1 -0
- package/dist/main/decompress.d.ts +51 -0
- package/dist/main/decompress.d.ts.map +1 -0
- package/dist/main/decompress.js +184 -0
- package/dist/main/decompress.js.map +1 -0
- package/dist/main/files.d.ts +9 -0
- package/dist/main/files.d.ts.map +1 -0
- package/dist/main/files.js +120 -0
- package/dist/main/files.js.map +1 -0
- package/dist/main/main.d.ts +2 -0
- package/dist/main/main.d.ts.map +1 -0
- package/dist/main/main.js +1009 -0
- package/dist/main/main.js.map +1 -0
- package/dist/main/network.d.ts +182 -0
- package/dist/main/network.d.ts.map +1 -0
- package/dist/main/network.js +909 -0
- package/dist/main/network.js.map +1 -0
- package/dist/main/policy.d.ts +103 -0
- package/dist/main/policy.d.ts.map +1 -0
- package/dist/main/policy.js +481 -0
- package/dist/main/policy.js.map +1 -0
- package/dist/main/protocol.d.ts +14 -0
- package/dist/main/protocol.d.ts.map +1 -0
- package/dist/main/protocol.js +216 -0
- package/dist/main/protocol.js.map +1 -0
- package/dist/main/sandbox.d.ts +67 -0
- package/dist/main/sandbox.d.ts.map +1 -0
- package/dist/main/sandbox.js +182 -0
- package/dist/main/sandbox.js.map +1 -0
- package/dist/main/settings.d.ts +37 -0
- package/dist/main/settings.d.ts.map +1 -0
- package/dist/main/settings.js +88 -0
- package/dist/main/settings.js.map +1 -0
- package/dist/main/sockets.d.ts +10 -0
- package/dist/main/sockets.d.ts.map +1 -0
- package/dist/main/sockets.js +71 -0
- package/dist/main/sockets.js.map +1 -0
- package/dist/preload/preload.cjs +91 -0
- package/dist/preload/preload.cjs.map +1 -0
- package/dist/preload/preload.d.cts +2 -0
- package/dist/preload/preload.d.cts.map +1 -0
- package/dist/preload/prompt.cjs +12 -0
- package/dist/preload/prompt.cjs.map +1 -0
- package/dist/preload/prompt.d.cts +2 -0
- package/dist/preload/prompt.d.cts.map +1 -0
- package/dist/renderer/air.d.ts +14 -0
- package/dist/renderer/air.d.ts.map +1 -0
- package/dist/renderer/air.js +83 -0
- package/dist/renderer/air.js.map +1 -0
- package/dist/renderer/files.d.ts +4 -0
- package/dist/renderer/files.d.ts.map +1 -0
- package/dist/renderer/files.js +58 -0
- package/dist/renderer/files.js.map +1 -0
- package/dist/renderer/index.d.ts +7 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +126 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/network.d.ts +6 -0
- package/dist/renderer/network.d.ts.map +1 -0
- package/dist/renderer/network.js +39 -0
- package/dist/renderer/network.js.map +1 -0
- package/dist/renderer/open-url.d.ts +10 -0
- package/dist/renderer/open-url.d.ts.map +1 -0
- package/dist/renderer/open-url.js +38 -0
- package/dist/renderer/open-url.js.map +1 -0
- package/dist/renderer/sockets.d.ts +4 -0
- package/dist/renderer/sockets.d.ts.map +1 -0
- package/dist/renderer/sockets.js +36 -0
- package/dist/renderer/sockets.js.map +1 -0
- package/dist/renderer/stage3d.d.ts +3 -0
- package/dist/renderer/stage3d.d.ts.map +1 -0
- package/dist/renderer/stage3d.js +26 -0
- package/dist/renderer/stage3d.js.map +1 -0
- package/dist/shared/api.d.ts +205 -0
- package/dist/shared/api.d.ts.map +1 -0
- package/dist/shared/api.js +5 -0
- package/dist/shared/api.js.map +1 -0
- package/package.json +46 -3
- package/src/launch/electron.ts +44 -0
- package/src/launch/launch.ts +72 -0
- package/src/launch/tsconfig.json +14 -0
- package/src/main/addresses.ts +184 -0
- package/src/main/air.ts +275 -0
- package/src/main/connections.ts +125 -0
- package/src/main/decompress.ts +219 -0
- package/src/main/files.ts +147 -0
- package/src/main/main.ts +1180 -0
- package/src/main/network.ts +1205 -0
- package/src/main/policy.ts +630 -0
- package/src/main/protocol.ts +237 -0
- package/src/main/sandbox.ts +213 -0
- package/src/main/settings.ts +117 -0
- package/src/main/sockets.ts +81 -0
- package/src/main/tsconfig.json +15 -0
- package/src/preload/preload.cts +110 -0
- package/src/preload/prompt.cts +11 -0
- package/src/preload/tsconfig.json +12 -0
- package/src/renderer/air.ts +100 -0
- package/src/renderer/files.ts +65 -0
- package/src/renderer/index.ts +145 -0
- package/src/renderer/network.ts +56 -0
- package/src/renderer/open-url.ts +50 -0
- package/src/renderer/sockets.ts +42 -0
- package/src/renderer/stage3d.ts +27 -0
- package/src/renderer/tsconfig.json +17 -0
- package/src/shared/api.ts +204 -0
- package/src/shared/tsconfig.json +11 -0
- package/static/icon.png +0 -0
- package/static/index.html +22 -0
- package/static/open-url.html +21 -0
- package/static/style.css +96 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/main/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export type MetaPolicy = "none" | "master-only" | "by-content-type" | "by-ftp-filename" | "all";
|
|
2
|
+
/** A port, or an inclusive range of them. */
|
|
3
|
+
type Ports = readonly (readonly [from: number, to: number])[];
|
|
4
|
+
export interface AccessRule {
|
|
5
|
+
domain: string;
|
|
6
|
+
/** The attribute as written; null where left out, its default then the file kind's. */
|
|
7
|
+
secure: boolean | null;
|
|
8
|
+
/** to-ports, for a socket policy; null where it was left out or does not parse. */
|
|
9
|
+
ports: Ports | null;
|
|
10
|
+
}
|
|
11
|
+
export interface HeaderRule {
|
|
12
|
+
domain: string;
|
|
13
|
+
/** Lower case: a name, a prefix ending in "*", or "*". */
|
|
14
|
+
headers: readonly string[];
|
|
15
|
+
secure: boolean | null;
|
|
16
|
+
}
|
|
17
|
+
export interface Policy {
|
|
18
|
+
/** site-control's permitted-cross-domain-policies; null where there is none. */
|
|
19
|
+
siteControl: MetaPolicy | null;
|
|
20
|
+
access: readonly AccessRule[];
|
|
21
|
+
headers: readonly HeaderRule[];
|
|
22
|
+
}
|
|
23
|
+
/** Who asks: a remote SWF by its URL's host and scheme; a local one has neither. */
|
|
24
|
+
export interface Requester {
|
|
25
|
+
/** Lower case, an IPv6 address without its brackets; null for a local SWF. */
|
|
26
|
+
host: string | null;
|
|
27
|
+
/** "http" or "https"; null for a local SWF. */
|
|
28
|
+
scheme: string | null;
|
|
29
|
+
}
|
|
30
|
+
/** A URL policy file as it came: whence, its Content-Type and X-Permitted-Cross-Domain-Policies. */
|
|
31
|
+
export interface UrlPolicy {
|
|
32
|
+
policy: Policy;
|
|
33
|
+
url: URL;
|
|
34
|
+
/** The media type alone, lower case. */
|
|
35
|
+
contentType: string;
|
|
36
|
+
/** X-Permitted-Cross-Domain-Policies' values, lower case. */
|
|
37
|
+
permitted: readonly string[];
|
|
38
|
+
}
|
|
39
|
+
/** A socket policy file and the port it was served from. */
|
|
40
|
+
export interface SocketPolicy {
|
|
41
|
+
policy: Policy;
|
|
42
|
+
port: number;
|
|
43
|
+
}
|
|
44
|
+
/** to-ports: "*", or ports and ranges separated by commas; null if any part is not one. */
|
|
45
|
+
export declare function parsePorts(text: string): Ports | null;
|
|
46
|
+
/**
|
|
47
|
+
* The policy in `text`, or null where it is not one: not well-formed, or
|
|
48
|
+
* its root not <cross-domain-policy>. A socket server ends its answer with
|
|
49
|
+
* a NUL, which is not part of it. Rules without a domain are dropped.
|
|
50
|
+
*/
|
|
51
|
+
export declare function parsePolicy(text: string): Policy | null;
|
|
52
|
+
/**
|
|
53
|
+
* Whether a domain attribute names `requester`, by the specification's
|
|
54
|
+
* matching rules: "*" is everyone, local SWFs among them, which nothing
|
|
55
|
+
* else names; a name or an IP address is itself exactly, an address
|
|
56
|
+
* never its host's name; "*.example.com" is example.com and every name
|
|
57
|
+
* under it, and a wildcard anywhere else matches nothing. "http://" or
|
|
58
|
+
* "https://" before the domain also asks for that scheme.
|
|
59
|
+
*/
|
|
60
|
+
export declare function domainMatches(pattern: string, requester: Requester): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* The site's meta-policy, from its master policy file: the stricter of
|
|
63
|
+
* its site-control and the X-Permitted-Cross-Domain-Policies it came with,
|
|
64
|
+
* else Flash Player 10's default, master-only. by-ftp-filename is FTP's
|
|
65
|
+
* and permits no other file over HTTP. A site with no master policy file
|
|
66
|
+
* has the default.
|
|
67
|
+
*/
|
|
68
|
+
export declare function urlMetaPolicy(master: UrlPolicy | null): MetaPolicy;
|
|
69
|
+
/** The Content-Types a URL policy file may come with, as the specification lists them. */
|
|
70
|
+
export declare function policyContentType(type: string): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* The policy files of a site that count, by its meta-policy: none for
|
|
73
|
+
* "none", the master alone for master-only, and the others too for "all",
|
|
74
|
+
* or for by-content-type those served as text/x-cross-domain-policy.
|
|
75
|
+
* A file whose X-Permitted-Cross-Domain-Policies says none-this-response
|
|
76
|
+
* is no policy file at all; the caller has dropped it.
|
|
77
|
+
*/
|
|
78
|
+
export declare function usablePolicies(master: UrlPolicy | null, others: readonly UrlPolicy[]): UrlPolicy[];
|
|
79
|
+
/** Whether the usable `policies` of `target`'s site let `requester` read `target`. */
|
|
80
|
+
export declare function allowsAccess(policies: readonly UrlPolicy[], requester: Requester, target: URL): boolean;
|
|
81
|
+
/** Whether the usable `policies` of `target`'s site let `requester` send it each of `names`. */
|
|
82
|
+
export declare function allowsHeaders(policies: readonly UrlPolicy[], requester: Requester, target: URL, names: readonly string[]): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* A socket server's meta-policy, from the policy on its port 843: its
|
|
85
|
+
* site-control, by default "all", so that a policy on any port counts.
|
|
86
|
+
* by-content-type and by-ftp-filename are HTTP's and FTP's, and permit no
|
|
87
|
+
* other socket policy.
|
|
88
|
+
*/
|
|
89
|
+
export declare function socketMetaPolicy(master: SocketPolicy | null): MetaPolicy;
|
|
90
|
+
/**
|
|
91
|
+
* Whether a socket server's policies let `requester` connect to `port`:
|
|
92
|
+
* its master policy, the one on port 843, and, as its meta-policy allows,
|
|
93
|
+
* those on other ports (the one on `port` itself, and those
|
|
94
|
+
* Security.loadPolicyFile named).
|
|
95
|
+
*/
|
|
96
|
+
export declare function allowsSocket(master: SocketPolicy | null, others: readonly SocketPolicy[], requester: Requester, port: number): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Whether a SWF may not send a header of this name: Flash's list, and
|
|
99
|
+
* what a browser forbids a page beside it (Proxy- and Sec- headers).
|
|
100
|
+
*/
|
|
101
|
+
export declare function forbiddenHeader(name: string): boolean;
|
|
102
|
+
export {};
|
|
103
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/main/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
// Flash's cross-domain policy files, as Adobe's Cross Domain Policy File
|
|
2
|
+
// Specification (version 2.0, 2010) defines them and Flash Player 10 and
|
|
3
|
+
// later applied them: the parser, and what a set of policy files grants a
|
|
4
|
+
// requesting SWF. A URL policy file grants reading a site's data and
|
|
5
|
+
// sending it headers; a socket policy file grants connecting to ports.
|
|
6
|
+
// Pure, without Electron, so that node tests it (tests/desktop/policy.test.ts).
|
|
7
|
+
const META_POLICIES = new Set([
|
|
8
|
+
"none",
|
|
9
|
+
"master-only",
|
|
10
|
+
"by-content-type",
|
|
11
|
+
"by-ftp-filename",
|
|
12
|
+
"all",
|
|
13
|
+
]);
|
|
14
|
+
const NAME = /^[A-Za-z_:][-A-Za-z0-9_:.]*/;
|
|
15
|
+
const ATTRIBUTE = /^\s+([A-Za-z_:][-A-Za-z0-9_:.]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;
|
|
16
|
+
function decodeEntities(text) {
|
|
17
|
+
let failed = false;
|
|
18
|
+
const decoded = text.replace(/&([^;&\s]*);?/g, (whole, name) => {
|
|
19
|
+
if (!whole.endsWith(";")) {
|
|
20
|
+
failed = true;
|
|
21
|
+
return whole;
|
|
22
|
+
}
|
|
23
|
+
switch (name) {
|
|
24
|
+
case "amp":
|
|
25
|
+
return "&";
|
|
26
|
+
case "lt":
|
|
27
|
+
return "<";
|
|
28
|
+
case "gt":
|
|
29
|
+
return ">";
|
|
30
|
+
case "quot":
|
|
31
|
+
return '"';
|
|
32
|
+
case "apos":
|
|
33
|
+
return "'";
|
|
34
|
+
}
|
|
35
|
+
const code = /^#x([0-9a-f]{1,6})$/i.exec(name)
|
|
36
|
+
? Number.parseInt(name.slice(2), 16)
|
|
37
|
+
: /^#([0-9]{1,7})$/.exec(name)
|
|
38
|
+
? Number.parseInt(name.slice(1), 10)
|
|
39
|
+
: -1;
|
|
40
|
+
if (code < 0 || code > 0x10ffff) {
|
|
41
|
+
failed = true;
|
|
42
|
+
return whole;
|
|
43
|
+
}
|
|
44
|
+
return String.fromCodePoint(code);
|
|
45
|
+
});
|
|
46
|
+
return failed ? null : decoded;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The root's children, each with its attributes, if `text` is a
|
|
50
|
+
* well-formed document whose root is <cross-domain-policy>; null
|
|
51
|
+
* otherwise. A DOCTYPE is skipped, never read, so no entity of its own
|
|
52
|
+
* is expanded. What the children hold is checked for form and ignored.
|
|
53
|
+
*/
|
|
54
|
+
function rootChildren(text) {
|
|
55
|
+
let at = text.charCodeAt(0) === 0xfeff ? 1 : 0;
|
|
56
|
+
const open = [];
|
|
57
|
+
const children = [];
|
|
58
|
+
let rooted = false;
|
|
59
|
+
const skipPast = (end) => {
|
|
60
|
+
const found = text.indexOf(end, at);
|
|
61
|
+
if (found < 0) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
at = found + end.length;
|
|
65
|
+
return true;
|
|
66
|
+
};
|
|
67
|
+
while (at < text.length) {
|
|
68
|
+
const lt = text.indexOf("<", at);
|
|
69
|
+
const between = text.slice(at, lt < 0 ? text.length : lt);
|
|
70
|
+
// Text only inside the root; and none of it read.
|
|
71
|
+
if (open.length === 0 && between.trim() !== "") {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
if (lt < 0) {
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
at = lt;
|
|
78
|
+
if (text.startsWith("<?", at)) {
|
|
79
|
+
if (!skipPast("?>")) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else if (text.startsWith("<!--", at)) {
|
|
84
|
+
if (!skipPast("-->")) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (text.startsWith("<![CDATA[", at)) {
|
|
89
|
+
if (open.length === 0 || !skipPast("]]>")) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (text.startsWith("<!DOCTYPE", at)) {
|
|
94
|
+
if (rooted) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
// To its '>', past an internal subset in brackets.
|
|
98
|
+
const subset = text.indexOf("[", at);
|
|
99
|
+
const close = text.indexOf(">", at);
|
|
100
|
+
if (close < 0) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
if (subset >= 0 && subset < close) {
|
|
104
|
+
at = subset;
|
|
105
|
+
if (!skipPast("]") || !/^\s*>/.test(text.slice(at))) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
at = text.indexOf(">", at) + 1;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
at = close + 1;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (text.startsWith("</", at)) {
|
|
115
|
+
const name = NAME.exec(text.slice(at + 2))?.[0];
|
|
116
|
+
if (!name || open.pop() !== name) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
at += 2 + name.length;
|
|
120
|
+
const end = /^\s*>/.exec(text.slice(at));
|
|
121
|
+
if (!end) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
at += end[0].length;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const name = NAME.exec(text.slice(at + 1))?.[0];
|
|
128
|
+
if (!name) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
at += 1 + name.length;
|
|
132
|
+
const attributes = new Map();
|
|
133
|
+
for (;;) {
|
|
134
|
+
const attribute = ATTRIBUTE.exec(text.slice(at));
|
|
135
|
+
if (!attribute) {
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
const value = decodeEntities(attribute[2] ?? attribute[3]);
|
|
139
|
+
if (value === null || attributes.has(attribute[1])) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
attributes.set(attribute[1], value);
|
|
143
|
+
at += attribute[0].length;
|
|
144
|
+
}
|
|
145
|
+
const end = /^\s*(\/?)>/.exec(text.slice(at));
|
|
146
|
+
if (!end) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
at += end[0].length;
|
|
150
|
+
const empty = end[1] === "/";
|
|
151
|
+
if (open.length === 0) {
|
|
152
|
+
if (rooted || name !== "cross-domain-policy") {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
rooted = true;
|
|
156
|
+
}
|
|
157
|
+
else if (open.length === 1) {
|
|
158
|
+
children.push({ name, attributes });
|
|
159
|
+
}
|
|
160
|
+
if (!empty) {
|
|
161
|
+
open.push(name);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return rooted && open.length === 0 ? children : null;
|
|
166
|
+
}
|
|
167
|
+
/** to-ports: "*", or ports and ranges separated by commas; null if any part is not one. */
|
|
168
|
+
export function parsePorts(text) {
|
|
169
|
+
if (text.trim() === "*") {
|
|
170
|
+
return [[1, 65535]];
|
|
171
|
+
}
|
|
172
|
+
const ports = [];
|
|
173
|
+
for (const part of text.split(",")) {
|
|
174
|
+
const range = /^\s*(\d{1,5})\s*(?:-\s*(\d{1,5})\s*)?$/.exec(part);
|
|
175
|
+
if (!range) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
const from = Number(range[1]);
|
|
179
|
+
const to = range[2] === undefined ? from : Number(range[2]);
|
|
180
|
+
if (from < 1 || to > 65535 || from > to) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
ports.push([from, to]);
|
|
184
|
+
}
|
|
185
|
+
return ports;
|
|
186
|
+
}
|
|
187
|
+
function secureOf(value) {
|
|
188
|
+
switch (value?.trim().toLowerCase()) {
|
|
189
|
+
case "true":
|
|
190
|
+
return true;
|
|
191
|
+
case "false":
|
|
192
|
+
return false;
|
|
193
|
+
default:
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The policy in `text`, or null where it is not one: not well-formed, or
|
|
199
|
+
* its root not <cross-domain-policy>. A socket server ends its answer with
|
|
200
|
+
* a NUL, which is not part of it. Rules without a domain are dropped.
|
|
201
|
+
*/
|
|
202
|
+
export function parsePolicy(text) {
|
|
203
|
+
const children = rootChildren(text.replace(/\0+$/, ""));
|
|
204
|
+
if (!children) {
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
let siteControl = null;
|
|
208
|
+
const access = [];
|
|
209
|
+
const headers = [];
|
|
210
|
+
for (const { name, attributes } of children) {
|
|
211
|
+
const domain = attributes.get("domain")?.trim();
|
|
212
|
+
switch (name) {
|
|
213
|
+
case "site-control": {
|
|
214
|
+
const value = attributes.get("permitted-cross-domain-policies")?.trim().toLowerCase();
|
|
215
|
+
// An unknown value permits nothing more than none would.
|
|
216
|
+
siteControl = value && META_POLICIES.has(value) ? value : "none";
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
case "allow-access-from": {
|
|
220
|
+
if (domain) {
|
|
221
|
+
const toPorts = attributes.get("to-ports");
|
|
222
|
+
access.push({
|
|
223
|
+
domain,
|
|
224
|
+
secure: secureOf(attributes.get("secure")),
|
|
225
|
+
ports: toPorts === undefined ? null : parsePorts(toPorts),
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
case "allow-http-request-headers-from": {
|
|
231
|
+
const names = attributes.get("headers");
|
|
232
|
+
if (domain && names !== undefined) {
|
|
233
|
+
headers.push({
|
|
234
|
+
domain,
|
|
235
|
+
headers: names
|
|
236
|
+
.split(",")
|
|
237
|
+
.map((h) => h.trim().toLowerCase())
|
|
238
|
+
.filter((h) => h !== ""),
|
|
239
|
+
secure: secureOf(attributes.get("secure")),
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return { siteControl, access, headers };
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Whether a domain attribute names `requester`, by the specification's
|
|
250
|
+
* matching rules: "*" is everyone, local SWFs among them, which nothing
|
|
251
|
+
* else names; a name or an IP address is itself exactly, an address
|
|
252
|
+
* never its host's name; "*.example.com" is example.com and every name
|
|
253
|
+
* under it, and a wildcard anywhere else matches nothing. "http://" or
|
|
254
|
+
* "https://" before the domain also asks for that scheme.
|
|
255
|
+
*/
|
|
256
|
+
export function domainMatches(pattern, requester) {
|
|
257
|
+
let domain = pattern.trim().toLowerCase();
|
|
258
|
+
if (domain === "*") {
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
if (requester.host === null) {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
const scheme = /^(https?):\/\//.exec(domain);
|
|
265
|
+
if (scheme) {
|
|
266
|
+
if (scheme[1] !== requester.scheme) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
domain = domain.slice(scheme[0].length);
|
|
270
|
+
}
|
|
271
|
+
domain = domain.replace(/^\[(.*)\]$/, "$1");
|
|
272
|
+
if (domain.startsWith("*.")) {
|
|
273
|
+
const suffix = domain.slice(2);
|
|
274
|
+
// A second-level domain at least, and no address.
|
|
275
|
+
if (!suffix.includes(".") || suffix.includes("*") || /^[\d.]+$/.test(suffix)) {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
return requester.host === suffix || requester.host.endsWith(`.${suffix}`);
|
|
279
|
+
}
|
|
280
|
+
return !domain.includes("*") && domain !== "" && requester.host === domain;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Whether an HTTPS policy's rule reaches `requester`: secure, its default,
|
|
284
|
+
* grants only a SWF itself loaded over HTTPS, as the specification has it;
|
|
285
|
+
* a local SWF, which no HTTPS brought, is not one. An HTTP policy's rules
|
|
286
|
+
* reach any.
|
|
287
|
+
*/
|
|
288
|
+
function secureAllows(policyHttps, secure, requester) {
|
|
289
|
+
return !policyHttps || secure === false || requester.scheme === "https";
|
|
290
|
+
}
|
|
291
|
+
/** The meta-policy restrictiveness order: a lower rank permits less. */
|
|
292
|
+
const RANK = {
|
|
293
|
+
none: 0,
|
|
294
|
+
"master-only": 1,
|
|
295
|
+
"by-ftp-filename": 1,
|
|
296
|
+
"by-content-type": 2,
|
|
297
|
+
all: 3,
|
|
298
|
+
};
|
|
299
|
+
/**
|
|
300
|
+
* The site's meta-policy, from its master policy file: the stricter of
|
|
301
|
+
* its site-control and the X-Permitted-Cross-Domain-Policies it came with,
|
|
302
|
+
* else Flash Player 10's default, master-only. by-ftp-filename is FTP's
|
|
303
|
+
* and permits no other file over HTTP. A site with no master policy file
|
|
304
|
+
* has the default.
|
|
305
|
+
*/
|
|
306
|
+
export function urlMetaPolicy(master) {
|
|
307
|
+
if (!master) {
|
|
308
|
+
return "master-only";
|
|
309
|
+
}
|
|
310
|
+
const given = [];
|
|
311
|
+
if (master.policy.siteControl) {
|
|
312
|
+
given.push(master.policy.siteControl);
|
|
313
|
+
}
|
|
314
|
+
for (const value of master.permitted) {
|
|
315
|
+
given.push(META_POLICIES.has(value) ? value : "none");
|
|
316
|
+
}
|
|
317
|
+
if (given.length === 0) {
|
|
318
|
+
return "master-only";
|
|
319
|
+
}
|
|
320
|
+
return given.reduce((a, b) => (RANK[b] < RANK[a] ? b : a));
|
|
321
|
+
}
|
|
322
|
+
/** The Content-Types a URL policy file may come with, as the specification lists them. */
|
|
323
|
+
export function policyContentType(type) {
|
|
324
|
+
return type.startsWith("text/") || type === "application/xml" || type === "application/xhtml+xml";
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* The policy files of a site that count, by its meta-policy: none for
|
|
328
|
+
* "none", the master alone for master-only, and the others too for "all",
|
|
329
|
+
* or for by-content-type those served as text/x-cross-domain-policy.
|
|
330
|
+
* A file whose X-Permitted-Cross-Domain-Policies says none-this-response
|
|
331
|
+
* is no policy file at all; the caller has dropped it.
|
|
332
|
+
*/
|
|
333
|
+
export function usablePolicies(master, others) {
|
|
334
|
+
const meta = urlMetaPolicy(master);
|
|
335
|
+
if (meta === "none") {
|
|
336
|
+
return [];
|
|
337
|
+
}
|
|
338
|
+
const usable = master ? [master] : [];
|
|
339
|
+
for (const other of others) {
|
|
340
|
+
if (meta === "all" ||
|
|
341
|
+
(meta === "by-content-type" && other.contentType === "text/x-cross-domain-policy")) {
|
|
342
|
+
usable.push(other);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return usable;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Whether `policy` covers `target`: a master policy file its whole site,
|
|
349
|
+
* any other its own directory and below. The caller has checked that both
|
|
350
|
+
* are of one origin.
|
|
351
|
+
*/
|
|
352
|
+
function covers(policy, target) {
|
|
353
|
+
const directory = policy.url.pathname.slice(0, policy.url.pathname.lastIndexOf("/") + 1);
|
|
354
|
+
return target.pathname.startsWith(directory);
|
|
355
|
+
}
|
|
356
|
+
/** Whether the usable `policies` of `target`'s site let `requester` read `target`. */
|
|
357
|
+
export function allowsAccess(policies, requester, target) {
|
|
358
|
+
return policies.some((p) => p.url.origin === target.origin &&
|
|
359
|
+
covers(p, target) &&
|
|
360
|
+
p.policy.access.some((rule) => domainMatches(rule.domain, requester) &&
|
|
361
|
+
secureAllows(p.url.protocol === "https:", rule.secure, requester)));
|
|
362
|
+
}
|
|
363
|
+
function headerAllowed(allowed, name) {
|
|
364
|
+
return allowed.some((h) => (h.endsWith("*") ? name.startsWith(h.slice(0, -1)) : h === name));
|
|
365
|
+
}
|
|
366
|
+
/** Whether the usable `policies` of `target`'s site let `requester` send it each of `names`. */
|
|
367
|
+
export function allowsHeaders(policies, requester, target, names) {
|
|
368
|
+
const rules = policies
|
|
369
|
+
.filter((p) => p.url.origin === target.origin && covers(p, target))
|
|
370
|
+
.flatMap((p) => p.policy.headers.filter((rule) => domainMatches(rule.domain, requester) &&
|
|
371
|
+
secureAllows(p.url.protocol === "https:", rule.secure, requester)));
|
|
372
|
+
return names.every((name) => rules.some((rule) => headerAllowed(rule.headers, name.toLowerCase())));
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* A socket server's meta-policy, from the policy on its port 843: its
|
|
376
|
+
* site-control, by default "all", so that a policy on any port counts.
|
|
377
|
+
* by-content-type and by-ftp-filename are HTTP's and FTP's, and permit no
|
|
378
|
+
* other socket policy.
|
|
379
|
+
*/
|
|
380
|
+
export function socketMetaPolicy(master) {
|
|
381
|
+
const meta = master?.policy.siteControl ?? "all";
|
|
382
|
+
return meta === "by-content-type" || meta === "by-ftp-filename" ? "master-only" : meta;
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Whether one socket policy lets `requester` connect to `port`: a rule
|
|
386
|
+
* naming it whose to-ports holds the port, where a policy served from a
|
|
387
|
+
* port of 1024 or above grants only ports of 1024 and above, as Flash
|
|
388
|
+
* Player had it, since any user may serve one there. secure is false by
|
|
389
|
+
* default in a socket policy; true grants only a SWF loaded over HTTPS.
|
|
390
|
+
*/
|
|
391
|
+
function socketGrants(policy, requester, port) {
|
|
392
|
+
if (policy.port >= 1024 && port < 1024) {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
return policy.policy.access.some((rule) => rule.ports?.some(([from, to]) => port >= from && port <= to) === true &&
|
|
396
|
+
domainMatches(rule.domain, requester) &&
|
|
397
|
+
(rule.secure !== true || requester.scheme === "https"));
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Whether a socket server's policies let `requester` connect to `port`:
|
|
401
|
+
* its master policy, the one on port 843, and, as its meta-policy allows,
|
|
402
|
+
* those on other ports (the one on `port` itself, and those
|
|
403
|
+
* Security.loadPolicyFile named).
|
|
404
|
+
*/
|
|
405
|
+
export function allowsSocket(master, others, requester, port) {
|
|
406
|
+
const meta = socketMetaPolicy(master);
|
|
407
|
+
if (meta === "none") {
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
if (master && socketGrants(master, requester, port)) {
|
|
411
|
+
return true;
|
|
412
|
+
}
|
|
413
|
+
return meta === "all" && others.some((p) => socketGrants(p, requester, port));
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* The request headers Flash Player refused a SWF outside AIR's application
|
|
417
|
+
* sandbox (URLRequestHeader), lower case, with "_" read as "-" as Flash
|
|
418
|
+
* read it.
|
|
419
|
+
*/
|
|
420
|
+
const FORBIDDEN_HEADERS = new Set([
|
|
421
|
+
"accept-charset",
|
|
422
|
+
"accept-encoding",
|
|
423
|
+
"accept-ranges",
|
|
424
|
+
"age",
|
|
425
|
+
"allow",
|
|
426
|
+
"allowed",
|
|
427
|
+
"authorization",
|
|
428
|
+
"charge-to",
|
|
429
|
+
"connect",
|
|
430
|
+
"connection",
|
|
431
|
+
"content-length",
|
|
432
|
+
"content-location",
|
|
433
|
+
"content-range",
|
|
434
|
+
"cookie",
|
|
435
|
+
"date",
|
|
436
|
+
"delete",
|
|
437
|
+
"etag",
|
|
438
|
+
"expect",
|
|
439
|
+
"get",
|
|
440
|
+
"head",
|
|
441
|
+
"host",
|
|
442
|
+
"if-modified-since",
|
|
443
|
+
"keep-alive",
|
|
444
|
+
"last-modified",
|
|
445
|
+
"location",
|
|
446
|
+
"max-forwards",
|
|
447
|
+
"options",
|
|
448
|
+
"origin",
|
|
449
|
+
"post",
|
|
450
|
+
"proxy-authenticate",
|
|
451
|
+
"proxy-authorization",
|
|
452
|
+
"proxy-connection",
|
|
453
|
+
"public",
|
|
454
|
+
"put",
|
|
455
|
+
"range",
|
|
456
|
+
"referer",
|
|
457
|
+
"request-range",
|
|
458
|
+
"retry-after",
|
|
459
|
+
"server",
|
|
460
|
+
"te",
|
|
461
|
+
"trace",
|
|
462
|
+
"trailer",
|
|
463
|
+
"transfer-encoding",
|
|
464
|
+
"upgrade",
|
|
465
|
+
"uri",
|
|
466
|
+
"user-agent",
|
|
467
|
+
"vary",
|
|
468
|
+
"via",
|
|
469
|
+
"warning",
|
|
470
|
+
"www-authenticate",
|
|
471
|
+
"x-flash-version",
|
|
472
|
+
]);
|
|
473
|
+
/**
|
|
474
|
+
* Whether a SWF may not send a header of this name: Flash's list, and
|
|
475
|
+
* what a browser forbids a page beside it (Proxy- and Sec- headers).
|
|
476
|
+
*/
|
|
477
|
+
export function forbiddenHeader(name) {
|
|
478
|
+
const lower = name.toLowerCase().replaceAll("_", "-");
|
|
479
|
+
return FORBIDDEN_HEADERS.has(lower) || lower.startsWith("proxy-") || lower.startsWith("sec-");
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=policy.js.map
|