@swf2es/desktop 0.1.15 → 0.1.17
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/README.md +85 -12
- package/dist/launch/launch.js +4 -1
- package/dist/launch/launch.js.map +1 -1
- package/dist/main/air.d.ts +3 -3
- package/dist/main/air.d.ts.map +1 -1
- package/dist/main/air.js +17 -8
- package/dist/main/air.js.map +1 -1
- package/dist/main/case-paths.d.ts +12 -0
- package/dist/main/case-paths.d.ts.map +1 -0
- package/dist/main/case-paths.js +84 -0
- package/dist/main/case-paths.js.map +1 -0
- package/dist/main/connections.d.ts +20 -1
- package/dist/main/connections.d.ts.map +1 -1
- package/dist/main/connections.js +71 -8
- package/dist/main/connections.js.map +1 -1
- package/dist/main/main.js +133 -9
- package/dist/main/main.js.map +1 -1
- package/dist/main/netlog.d.ts +21 -0
- package/dist/main/netlog.d.ts.map +1 -0
- package/dist/main/netlog.js +90 -0
- package/dist/main/netlog.js.map +1 -0
- package/dist/main/network.d.ts +10 -0
- package/dist/main/network.d.ts.map +1 -1
- package/dist/main/network.js +111 -35
- package/dist/main/network.js.map +1 -1
- package/dist/main/proxy.d.ts +48 -0
- package/dist/main/proxy.d.ts.map +1 -0
- package/dist/main/proxy.js +402 -0
- package/dist/main/proxy.js.map +1 -0
- package/dist/main/sandbox.d.ts.map +1 -1
- package/dist/main/sandbox.js +2 -1
- package/dist/main/sandbox.js.map +1 -1
- package/dist/main/settings.d.ts +2 -0
- package/dist/main/settings.d.ts.map +1 -1
- package/dist/main/settings.js +4 -0
- package/dist/main/settings.js.map +1 -1
- package/dist/main/sockets.d.ts +6 -2
- package/dist/main/sockets.d.ts.map +1 -1
- package/dist/main/sockets.js +18 -3
- package/dist/main/sockets.js.map +1 -1
- package/dist/main/websocket-connections.d.ts +73 -0
- package/dist/main/websocket-connections.d.ts.map +1 -0
- package/dist/main/websocket-connections.js +266 -0
- package/dist/main/websocket-connections.js.map +1 -0
- package/dist/main/websockets.d.ts +12 -0
- package/dist/main/websockets.d.ts.map +1 -0
- package/dist/main/websockets.js +94 -0
- package/dist/main/websockets.js.map +1 -0
- package/dist/preload/preload.cjs +20 -0
- package/dist/preload/preload.cjs.map +1 -1
- package/dist/renderer/air.d.ts.map +1 -1
- package/dist/renderer/air.js +1 -0
- package/dist/renderer/air.js.map +1 -1
- package/dist/renderer/full-screen.d.ts +4 -0
- package/dist/renderer/full-screen.d.ts.map +1 -0
- package/dist/renderer/full-screen.js +32 -0
- package/dist/renderer/full-screen.js.map +1 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +4 -0
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer/websockets.d.ts +4 -0
- package/dist/renderer/websockets.d.ts.map +1 -0
- package/dist/renderer/websockets.js +36 -0
- package/dist/renderer/websockets.js.map +1 -0
- package/dist/shared/api.d.ts +53 -0
- package/dist/shared/api.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/launch/launch.ts +5 -2
- package/src/main/air.ts +18 -8
- package/src/main/case-paths.ts +97 -0
- package/src/main/connections.ts +90 -8
- package/src/main/main.ts +174 -10
- package/src/main/netlog.ts +108 -0
- package/src/main/network.ts +140 -37
- package/src/main/proxy.ts +497 -0
- package/src/main/sandbox.ts +2 -1
- package/src/main/settings.ts +5 -0
- package/src/main/sockets.ts +22 -3
- package/src/main/websocket-connections.ts +344 -0
- package/src/main/websockets.ts +117 -0
- package/src/preload/preload.cts +23 -0
- package/src/renderer/air.ts +1 -0
- package/src/renderer/full-screen.ts +44 -0
- package/src/renderer/index.ts +4 -0
- package/src/renderer/websockets.ts +43 -0
- package/src/shared/api.ts +40 -0
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
// --proxy=<url>: a proxy that every connection the main process makes for
|
|
2
|
+
// a SWF goes through, its http and https requests, its sockets, its policy
|
|
3
|
+
// files and an AIR application's WebSockets: a SOCKS5 proxy (RFC 1928,
|
|
4
|
+
// with RFC 1929's username and password where the URL gives them), or an
|
|
5
|
+
// HTTP proxy, asked for a CONNECT tunnel for each connection, plain http
|
|
6
|
+
// too, with Basic credentials where given. The URL's credentials are the
|
|
7
|
+
// command line's alone: never kept, and never said.
|
|
8
|
+
//
|
|
9
|
+
// Without Electron, so that node tests it (tests/desktop/proxy.test.ts).
|
|
10
|
+
import { connect, isIP, isIPv4 } from "node:net";
|
|
11
|
+
import { domainToASCII } from "node:url";
|
|
12
|
+
/**
|
|
13
|
+
* A connection through the proxy that did not come about. `fault` says
|
|
14
|
+
* whether the proxy itself failed, not reached, refusing the credentials
|
|
15
|
+
* or making no sense, rather than answering that the target was not
|
|
16
|
+
* reached, which is no more than a server that is not there.
|
|
17
|
+
*/
|
|
18
|
+
export class ProxyError extends Error {
|
|
19
|
+
fault;
|
|
20
|
+
constructor(message, fault) {
|
|
21
|
+
super(message);
|
|
22
|
+
this.fault = fault;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** How long the proxy may take to connect and answer, all told. */
|
|
26
|
+
const TIMEOUT = 30_000;
|
|
27
|
+
/** The longest answer an HTTP proxy gives a CONNECT, its headers included. */
|
|
28
|
+
const MAX_HEADERS = 16 * 1024;
|
|
29
|
+
const SCHEMES = {
|
|
30
|
+
"socks5:": "socks5",
|
|
31
|
+
// The same: the target's name always goes to the proxy, which resolves it.
|
|
32
|
+
"socks5h:": "socks5",
|
|
33
|
+
"http:": "http",
|
|
34
|
+
};
|
|
35
|
+
const DEFAULT_PORTS = { socks5: 1080, http: 80 };
|
|
36
|
+
/** `text` with whatever could be credentials left out, for a message. */
|
|
37
|
+
function redacted(text) {
|
|
38
|
+
return text.includes("@") ? text.replace(/^([a-z][a-z0-9+.-]*:\/\/)?.*@/i, "$1…@") : text;
|
|
39
|
+
}
|
|
40
|
+
/** `text` as a proxy; a message that never holds its credentials, otherwise. */
|
|
41
|
+
export function parseProxy(text) {
|
|
42
|
+
const shown = redacted(text).slice(0, 256);
|
|
43
|
+
let url;
|
|
44
|
+
try {
|
|
45
|
+
url = new URL(text);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw new Error(`${shown} is not a URL`);
|
|
49
|
+
}
|
|
50
|
+
const kind = SCHEMES[url.protocol];
|
|
51
|
+
if (!kind) {
|
|
52
|
+
throw new Error(`${url.protocol}// is no proxy this app speaks: socks5:// or http://`);
|
|
53
|
+
}
|
|
54
|
+
// A URL standard's non-special scheme keeps its host as written.
|
|
55
|
+
const host = url.hostname.replace(/^\[(.*)\]$/, "$1").toLowerCase();
|
|
56
|
+
if (host === "") {
|
|
57
|
+
throw new Error(`${shown} names no host`);
|
|
58
|
+
}
|
|
59
|
+
if ((url.pathname !== "" && url.pathname !== "/") || url.search !== "" || url.hash !== "") {
|
|
60
|
+
throw new Error(`${shown} has more than a host and a port`);
|
|
61
|
+
}
|
|
62
|
+
let username = null;
|
|
63
|
+
let password = null;
|
|
64
|
+
if (url.username !== "" || url.password !== "") {
|
|
65
|
+
try {
|
|
66
|
+
username = decodeURIComponent(url.username);
|
|
67
|
+
password = decodeURIComponent(url.password);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
throw new Error(`${shown} has malformed %-escapes in its credentials`);
|
|
71
|
+
}
|
|
72
|
+
if (kind === "socks5" &&
|
|
73
|
+
(Buffer.byteLength(username) > 255 || Buffer.byteLength(password) > 255)) {
|
|
74
|
+
throw new Error("a SOCKS5 username or password is 255 bytes at most");
|
|
75
|
+
}
|
|
76
|
+
// Basic's user-id ends at its first colon, and neither has a line break.
|
|
77
|
+
if (kind === "http" && (username.includes(":") || /[\r\n]/.test(username + password))) {
|
|
78
|
+
throw new Error("an HTTP proxy's username has no colon, nor either a line break");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
kind,
|
|
83
|
+
host,
|
|
84
|
+
port: url.port === "" ? DEFAULT_PORTS[kind] : Number(url.port),
|
|
85
|
+
username,
|
|
86
|
+
password,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** The proxy as a message names it: its kind, host and port, never its credentials. */
|
|
90
|
+
export function describeProxy(proxy) {
|
|
91
|
+
const host = isIP(proxy.host) === 6 ? `[${proxy.host}]` : proxy.host;
|
|
92
|
+
return `${proxy.kind}://${host}:${proxy.port}`;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The proxy --proxy=<url> names among the app's arguments, those before an
|
|
96
|
+
* AIR application's own after "--": null without one; its last if named
|
|
97
|
+
* twice. A malformed one, or --proxy with its URL apart, is an error, not
|
|
98
|
+
* a run without the proxy.
|
|
99
|
+
*/
|
|
100
|
+
export function proxyArgument(argv) {
|
|
101
|
+
const end = argv.indexOf("--");
|
|
102
|
+
const own = end < 0 ? argv : argv.slice(0, end);
|
|
103
|
+
let found = null;
|
|
104
|
+
for (const arg of own) {
|
|
105
|
+
if (arg === "--proxy") {
|
|
106
|
+
return { error: "--proxy takes its URL after an equals sign: --proxy=socks5://host:port" };
|
|
107
|
+
}
|
|
108
|
+
if (arg.startsWith("--proxy=")) {
|
|
109
|
+
try {
|
|
110
|
+
found = { proxy: parseProxy(arg.slice("--proxy=".length)) };
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
return { error: `--proxy: ${error.message}` };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return found;
|
|
118
|
+
}
|
|
119
|
+
/** Whether `a` and `b` are the same proxy, by the same credentials. */
|
|
120
|
+
export function sameProxy(a, b) {
|
|
121
|
+
return (a === b ||
|
|
122
|
+
(a !== null &&
|
|
123
|
+
b !== null &&
|
|
124
|
+
a.kind === b.kind &&
|
|
125
|
+
a.host === b.host &&
|
|
126
|
+
a.port === b.port &&
|
|
127
|
+
a.username === b.username &&
|
|
128
|
+
a.password === b.password));
|
|
129
|
+
}
|
|
130
|
+
/** A target as the proxy is asked for it: an address, or a name in ASCII. */
|
|
131
|
+
function targetHost(host) {
|
|
132
|
+
const bare = host.replace(/^\[(.*)\]$/, "$1");
|
|
133
|
+
const family = isIP(bare);
|
|
134
|
+
if (family === 4 || family === 6) {
|
|
135
|
+
return { address: bare, family };
|
|
136
|
+
}
|
|
137
|
+
// A name of DNS's letters alone: nothing that would end a line of the HTTP proxy's request.
|
|
138
|
+
const name = domainToASCII(bare);
|
|
139
|
+
if (name === "" || name.length > 255 || !/^[A-Za-z0-9._-]+$/.test(name)) {
|
|
140
|
+
throw new ProxyError("its host is no name a proxy is asked for", false);
|
|
141
|
+
}
|
|
142
|
+
return { name };
|
|
143
|
+
}
|
|
144
|
+
/** An IPv6 address's 16 bytes; `address` is one, as isIP says. */
|
|
145
|
+
function ipv6Bytes(address) {
|
|
146
|
+
let text = address.replace(/%.*$/, "");
|
|
147
|
+
// A last part that is an IPv4 address is two of the eight.
|
|
148
|
+
const v4 = /:(\d+\.\d+\.\d+\.\d+)$/.exec(text);
|
|
149
|
+
if (v4 && isIPv4(v4[1])) {
|
|
150
|
+
const [a, b, c, d] = v4[1].split(".").map(Number);
|
|
151
|
+
text = `${text.slice(0, v4.index)}:${((a << 8) | b).toString(16)}:${((c << 8) | d).toString(16)}`;
|
|
152
|
+
}
|
|
153
|
+
const [head, tail] = text.split("::");
|
|
154
|
+
const parts = (s) => (s ? s.split(":") : []);
|
|
155
|
+
const left = parts(head);
|
|
156
|
+
const right = parts(tail);
|
|
157
|
+
const groups = tail === undefined
|
|
158
|
+
? left
|
|
159
|
+
: [...left, ...Array(8 - left.length - right.length).fill("0"), ...right];
|
|
160
|
+
const bytes = Buffer.alloc(16);
|
|
161
|
+
for (let i = 0; i < 8; i++) {
|
|
162
|
+
bytes.writeUInt16BE(Number.parseInt(groups[i], 16), i * 2);
|
|
163
|
+
}
|
|
164
|
+
return bytes;
|
|
165
|
+
}
|
|
166
|
+
/** Reads a socket's bytes as a handshake needs them, and gives back what it did not need. */
|
|
167
|
+
class Reader {
|
|
168
|
+
buffered = Buffer.alloc(0);
|
|
169
|
+
wake = null;
|
|
170
|
+
ended = false;
|
|
171
|
+
socket;
|
|
172
|
+
constructor(socket) {
|
|
173
|
+
this.socket = socket;
|
|
174
|
+
socket.on("readable", this.readable);
|
|
175
|
+
socket.on("end", this.end);
|
|
176
|
+
}
|
|
177
|
+
readable = () => {
|
|
178
|
+
for (let chunk = this.socket.read(); chunk; chunk = this.socket.read()) {
|
|
179
|
+
this.buffered = Buffer.concat([this.buffered, chunk]);
|
|
180
|
+
}
|
|
181
|
+
this.wake?.();
|
|
182
|
+
};
|
|
183
|
+
end = () => {
|
|
184
|
+
this.ended = true;
|
|
185
|
+
this.wake?.();
|
|
186
|
+
};
|
|
187
|
+
async more() {
|
|
188
|
+
if (this.ended) {
|
|
189
|
+
throw new Error("closed");
|
|
190
|
+
}
|
|
191
|
+
await new Promise((woken) => {
|
|
192
|
+
this.wake = woken;
|
|
193
|
+
});
|
|
194
|
+
this.wake = null;
|
|
195
|
+
}
|
|
196
|
+
async take(length) {
|
|
197
|
+
while (this.buffered.length < length) {
|
|
198
|
+
await this.more();
|
|
199
|
+
}
|
|
200
|
+
const bytes = this.buffered.subarray(0, length);
|
|
201
|
+
this.buffered = this.buffered.subarray(length);
|
|
202
|
+
return bytes;
|
|
203
|
+
}
|
|
204
|
+
/** Up to and with `marker`, failing past `max` bytes. */
|
|
205
|
+
async until(marker, max) {
|
|
206
|
+
for (;;) {
|
|
207
|
+
const at = this.buffered.indexOf(marker);
|
|
208
|
+
if (at >= 0) {
|
|
209
|
+
return this.take(at + marker.length);
|
|
210
|
+
}
|
|
211
|
+
if (this.buffered.length > max) {
|
|
212
|
+
throw new Error("too long");
|
|
213
|
+
}
|
|
214
|
+
await this.more();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/** Stop reading; what came past the handshake goes back, for the socket's next reader. */
|
|
218
|
+
release() {
|
|
219
|
+
this.socket.removeListener("readable", this.readable);
|
|
220
|
+
this.socket.removeListener("end", this.end);
|
|
221
|
+
if (this.buffered.length > 0) {
|
|
222
|
+
this.socket.unshift(this.buffered);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/** RFC 1928's replies, as a message says them. */
|
|
227
|
+
const SOCKS_REPLIES = {
|
|
228
|
+
1: "general failure",
|
|
229
|
+
2: "not allowed by its rules",
|
|
230
|
+
3: "network unreachable",
|
|
231
|
+
4: "host unreachable",
|
|
232
|
+
5: "connection refused",
|
|
233
|
+
6: "TTL expired",
|
|
234
|
+
7: "command not supported",
|
|
235
|
+
8: "address type not supported",
|
|
236
|
+
};
|
|
237
|
+
async function socks5(proxy, socket, reader, target, port) {
|
|
238
|
+
const where = describeProxy(proxy);
|
|
239
|
+
const credentials = proxy.username !== null;
|
|
240
|
+
socket.write(Buffer.from(credentials ? [5, 2, 0, 2] : [5, 1, 0]));
|
|
241
|
+
const [version, method] = await reader.take(2);
|
|
242
|
+
if (version !== 5) {
|
|
243
|
+
throw new ProxyError(`the proxy ${where} gave no SOCKS5 answer`, true);
|
|
244
|
+
}
|
|
245
|
+
if (method === 2 && credentials) {
|
|
246
|
+
const username = Buffer.from(proxy.username ?? "");
|
|
247
|
+
const password = Buffer.from(proxy.password ?? "");
|
|
248
|
+
socket.write(Buffer.concat([
|
|
249
|
+
Buffer.from([1, username.length]),
|
|
250
|
+
username,
|
|
251
|
+
Buffer.from([password.length]),
|
|
252
|
+
password,
|
|
253
|
+
]));
|
|
254
|
+
const [, status] = await reader.take(2);
|
|
255
|
+
if (status !== 0) {
|
|
256
|
+
throw new ProxyError(`the proxy ${where} refused the username and password`, true);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else if (method === 0xff) {
|
|
260
|
+
throw new ProxyError(credentials
|
|
261
|
+
? `the proxy ${where} takes none of the ways to authenticate offered`
|
|
262
|
+
: `the proxy ${where} asks for a username and password`, true);
|
|
263
|
+
}
|
|
264
|
+
else if (method !== 0) {
|
|
265
|
+
throw new ProxyError(`the proxy ${where} chose a way to authenticate not offered`, true);
|
|
266
|
+
}
|
|
267
|
+
let address;
|
|
268
|
+
if ("name" in target) {
|
|
269
|
+
const name = Buffer.from(target.name, "ascii");
|
|
270
|
+
address = Buffer.concat([Buffer.from([3, name.length]), name]);
|
|
271
|
+
}
|
|
272
|
+
else if (target.family === 4) {
|
|
273
|
+
address = Buffer.from([1, ...target.address.split(".").map(Number)]);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
address = Buffer.concat([Buffer.from([4]), ipv6Bytes(target.address)]);
|
|
277
|
+
}
|
|
278
|
+
const portBytes = Buffer.alloc(2);
|
|
279
|
+
portBytes.writeUInt16BE(port);
|
|
280
|
+
socket.write(Buffer.concat([Buffer.from([5, 1, 0]), address, portBytes]));
|
|
281
|
+
const [replyVersion, reply, , type] = await reader.take(4);
|
|
282
|
+
if (replyVersion !== 5) {
|
|
283
|
+
throw new ProxyError(`the proxy ${where} gave no SOCKS5 answer`, true);
|
|
284
|
+
}
|
|
285
|
+
if (reply !== 0) {
|
|
286
|
+
const why = SOCKS_REPLIES[reply] ?? "an unknown reply";
|
|
287
|
+
throw new ProxyError(`the proxy ${where} refused: ${why} (SOCKS reply ${reply})`, false);
|
|
288
|
+
}
|
|
289
|
+
// The address and port the proxy connected from, which nothing needs.
|
|
290
|
+
switch (type) {
|
|
291
|
+
case 1:
|
|
292
|
+
await reader.take(4 + 2);
|
|
293
|
+
break;
|
|
294
|
+
case 3:
|
|
295
|
+
await reader.take((await reader.take(1))[0] + 2);
|
|
296
|
+
break;
|
|
297
|
+
case 4:
|
|
298
|
+
await reader.take(16 + 2);
|
|
299
|
+
break;
|
|
300
|
+
default:
|
|
301
|
+
throw new ProxyError(`the proxy ${where} gave no SOCKS5 answer`, true);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
async function httpConnect(proxy, socket, reader, target, port) {
|
|
305
|
+
const where = describeProxy(proxy);
|
|
306
|
+
const host = "name" in target ? target.name : target.family === 6 ? `[${target.address}]` : target.address;
|
|
307
|
+
const lines = [`CONNECT ${host}:${port} HTTP/1.1`, `Host: ${host}:${port}`];
|
|
308
|
+
if (proxy.username !== null) {
|
|
309
|
+
const basic = Buffer.from(`${proxy.username}:${proxy.password ?? ""}`).toString("base64");
|
|
310
|
+
lines.push(`Proxy-Authorization: Basic ${basic}`);
|
|
311
|
+
}
|
|
312
|
+
socket.write(`${lines.join("\r\n")}\r\n\r\n`);
|
|
313
|
+
let head;
|
|
314
|
+
try {
|
|
315
|
+
head = (await reader.until("\r\n\r\n", MAX_HEADERS)).toString("latin1");
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
if (error.message === "too long") {
|
|
319
|
+
throw new ProxyError(`the proxy ${where} answered with too long a head`, true);
|
|
320
|
+
}
|
|
321
|
+
throw error;
|
|
322
|
+
}
|
|
323
|
+
const status = /^HTTP\/1\.[01] (\d{3})(?: ([^\r\n]*))?\r\n/.exec(head);
|
|
324
|
+
if (!status) {
|
|
325
|
+
throw new ProxyError(`the proxy ${where} gave no HTTP answer`, true);
|
|
326
|
+
}
|
|
327
|
+
const code = Number(status[1]);
|
|
328
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: control characters are what is taken out
|
|
329
|
+
const reason = (status[2] ?? "").slice(0, 128).replace(/[\u0000-\u001f\u007f-\u009f]/g, "?");
|
|
330
|
+
if (code === 407) {
|
|
331
|
+
throw new ProxyError(proxy.username !== null
|
|
332
|
+
? `the proxy ${where} refused the username and password (HTTP 407)`
|
|
333
|
+
: `the proxy ${where} asks for a username and password (HTTP 407)`, true);
|
|
334
|
+
}
|
|
335
|
+
if (code < 200 || code > 299) {
|
|
336
|
+
throw new ProxyError(`the proxy ${where} refused: HTTP ${code} ${reason}`.trimEnd(), false);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* A TCP connection to `host`:`port` through `proxy`, once the proxy says it
|
|
341
|
+
* is made: a name goes to the proxy as it is, for it to resolve, an
|
|
342
|
+
* address as that address. It fails with a ProxyError saying why, never
|
|
343
|
+
* naming the credentials; `signal` stops it.
|
|
344
|
+
*/
|
|
345
|
+
export function connectThrough(proxy, host, port, options = {}) {
|
|
346
|
+
const where = describeProxy(proxy);
|
|
347
|
+
return new Promise((resolve, reject) => {
|
|
348
|
+
let target;
|
|
349
|
+
try {
|
|
350
|
+
target = targetHost(host);
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
reject(error);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
if (!Number.isInteger(port) || port <= 0 || port > 65535) {
|
|
357
|
+
reject(new ProxyError("its port is no TCP port", false));
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
const signal = options.signal;
|
|
361
|
+
if (signal?.aborted) {
|
|
362
|
+
reject(new ProxyError("aborted", false));
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
const socket = connect({ host: proxy.host, port: proxy.port });
|
|
366
|
+
const reader = new Reader(socket);
|
|
367
|
+
let settled = false;
|
|
368
|
+
const finish = (error) => {
|
|
369
|
+
if (settled) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
settled = true;
|
|
373
|
+
clearTimeout(timer);
|
|
374
|
+
signal?.removeEventListener("abort", abort);
|
|
375
|
+
socket.removeListener("error", failed);
|
|
376
|
+
socket.removeListener("close", closed);
|
|
377
|
+
if (error) {
|
|
378
|
+
reader.release();
|
|
379
|
+
socket.destroy();
|
|
380
|
+
reject(error);
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
reader.release();
|
|
384
|
+
resolve(socket);
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
const abort = () => finish(new ProxyError("aborted", false));
|
|
388
|
+
const failed = (error) => finish(new ProxyError(`the proxy ${where} is not reached: ${error.message}`, true));
|
|
389
|
+
const closed = () => finish(new ProxyError(`the proxy ${where} closed the connection`, true));
|
|
390
|
+
const timer = setTimeout(() => finish(new ProxyError(`the proxy ${where} did not answer in time`, true)), options.timeout ?? TIMEOUT);
|
|
391
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
392
|
+
socket.on("error", failed);
|
|
393
|
+
socket.on("close", closed);
|
|
394
|
+
socket.once("connect", () => {
|
|
395
|
+
const handshake = proxy.kind === "socks5" ? socks5 : httpConnect;
|
|
396
|
+
handshake(proxy, socket, reader, target, port).then(() => finish(null), (error) => finish(error instanceof ProxyError
|
|
397
|
+
? error
|
|
398
|
+
: new ProxyError(`the proxy ${where} closed the connection`, true)));
|
|
399
|
+
});
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/main/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/main/sandbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/main/sandbox.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,kBAAkB,GAAG,QAAQ,GAAG,aAAa,CAAC;AA6B1F,qBAAa,OAAO;IAClB,OAAO,CAAC,KAAK,CAAsB;IACnC;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAAsB;IACrC,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC;;;;OAIG;IACH,YAAY,IAAI,SAAY,EAa3B;IAED,4DAA4D;IAC5D,IAAI,IAAI,IAAI,WAAW,GAAG,IAAI,CAE7B;IAED,4FAA4F;IAC5F,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED;;;;;;;;OAQG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAa1C;IAED;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG5B;IAED;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAShC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGrC;IAED;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAStC;IAED,0EAA0E;IAC1E,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,0CAA0C;IAC1C,IAAI,IAAI,IAAI,CAGX;IAED,8GAA8G;IAC9G,cAAc,IAAI,OAAO,CAGxB;IAED;;;OAGG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BtD;CACF"}
|
package/dist/main/sandbox.js
CHANGED
|
@@ -15,13 +15,14 @@ import { realpathSync } from "node:fs";
|
|
|
15
15
|
import { realpath } from "node:fs/promises";
|
|
16
16
|
import { homedir, tmpdir } from "node:os";
|
|
17
17
|
import { basename, dirname, isAbsolute, join, parse, relative, sep } from "node:path";
|
|
18
|
+
import { resolveCase } from "./case-paths.js";
|
|
18
19
|
export const FILE_ORIGIN = "swf2es://file";
|
|
19
20
|
/**
|
|
20
21
|
* The OS's realpath, links followed, as both the grant and a request use it; null for no such file.
|
|
21
22
|
*/
|
|
22
23
|
async function real(path) {
|
|
23
24
|
try {
|
|
24
|
-
return await realpath(path);
|
|
25
|
+
return await realpath(resolveCase(path));
|
|
25
26
|
}
|
|
26
27
|
catch {
|
|
27
28
|
return null;
|
package/dist/main/sandbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/main/sandbox.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,yEAAyE;AACzE,sEAAsE;AACtE,mEAAmE;AACnE,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,wEAAwE;AACxE,sEAAsE;AACtE,0BAA0B;AAC1B,+CAA+C;AAC/C,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/main/sandbox.ts"],"names":[],"mappings":"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"}
|
package/dist/main/settings.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export declare class SettingsFile {
|
|
|
18
18
|
libraries(): LibraryState;
|
|
19
19
|
/** Whether it was saved; it holds for this run either way. */
|
|
20
20
|
setLibrary(name: LibraryName, path: string): boolean;
|
|
21
|
+
/** Back to the library the app ships; whether that was saved. */
|
|
22
|
+
clearLibrary(name: LibraryName): boolean;
|
|
21
23
|
setStage3D(enabled: boolean): boolean;
|
|
22
24
|
/** `path` opened: first in the recent list. */
|
|
23
25
|
opened(path: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/main/settings.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnC;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAW;IAE1B,YAAY,SAAS,EAAE,MAAM,EAG5B;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAEjC;IAED,iGAAiG;IACjG,SAAS,IAAI,YAAY,CAExB;IAED,8DAA8D;IAC9D,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEpC;IAED,+CAA+C;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIzB;IAED,2EAA2E;IAC3E,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;IAED,8EAA8E;IAC9E,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGlD;IAED,WAAW,IAAI,IAAI,CAElB;IAED,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;IAoBZ;;;OAGG;IACH,OAAO,CAAC,MAAM;CAgBf"}
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/main/settings.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnC;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAW;IAE1B,YAAY,SAAS,EAAE,MAAM,EAG5B;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAEjC;IAED,iGAAiG;IACjG,SAAS,IAAI,YAAY,CAExB;IAED,8DAA8D;IAC9D,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;IAED,iEAAiE;IACjE,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAEvC;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEpC;IAED,+CAA+C;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIzB;IAED,2EAA2E;IAC3E,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;IAED,8EAA8E;IAC9E,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGlD;IAED,WAAW,IAAI,IAAI,CAElB;IAED,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;IAoBZ;;;OAGG;IACH,OAAO,CAAC,MAAM;CAgBf"}
|
package/dist/main/settings.js
CHANGED
|
@@ -23,6 +23,10 @@ export class SettingsFile {
|
|
|
23
23
|
setLibrary(name, path) {
|
|
24
24
|
return this.update({ [name]: path });
|
|
25
25
|
}
|
|
26
|
+
/** Back to the library the app ships; whether that was saved. */
|
|
27
|
+
clearLibrary(name) {
|
|
28
|
+
return this.update({ [name]: undefined });
|
|
29
|
+
}
|
|
26
30
|
setStage3D(enabled) {
|
|
27
31
|
return this.update({ stage3D: enabled });
|
|
28
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/main/settings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/main/settings.ts"],"names":[],"mappings":"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"}
|
package/dist/main/sockets.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { type IpcMainEvent } from "electron";
|
|
2
|
+
import { type ConnectionOptions } from "./connections.ts";
|
|
2
3
|
/**
|
|
3
4
|
* Carry socket messages from pages that `trusted` accepts, each connection
|
|
4
5
|
* made only as `permit` allows it, to the address it gives where it gives
|
|
5
|
-
* one; null refuses it.
|
|
6
|
+
* one; null refuses it. `log`, where given, is told each connection asked
|
|
7
|
+
* for, opened, refused, failed and closed (--log-network), and with
|
|
8
|
+
* `data` what each sends and receives too (--log-sockets). With
|
|
9
|
+
* `options.proxy`, each goes through that proxy (--proxy).
|
|
6
10
|
*/
|
|
7
11
|
export declare function bridgeSockets(trusted: (event: IpcMainEvent) => boolean, permit: (host: string, port: number) => Promise<{
|
|
8
12
|
address?: string;
|
|
9
|
-
} | null
|
|
13
|
+
} | null>, log?: ((line: string) => void) | null, data?: boolean, options?: ConnectionOptions): void;
|
|
10
14
|
//# sourceMappingURL=sockets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,kBAAkB,CAAC;AAGtF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,EACzC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,EAC5E,GAAG,GAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAW,EAC3C,IAAI,UAAQ,EACZ,OAAO,GAAE,iBAAsB,GAC9B,IAAI,CA8EN"}
|
package/dist/main/sockets.js
CHANGED
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
// connections (connections.ts) close as it navigates, reloads or goes.
|
|
4
4
|
import { ipcMain } from "electron";
|
|
5
5
|
import { Connections, validEndpoint } from "./connections.js";
|
|
6
|
+
import { socketDataLine, socketLine } from "./netlog.js";
|
|
6
7
|
/**
|
|
7
8
|
* Carry socket messages from pages that `trusted` accepts, each connection
|
|
8
9
|
* made only as `permit` allows it, to the address it gives where it gives
|
|
9
|
-
* one; null refuses it.
|
|
10
|
+
* one; null refuses it. `log`, where given, is told each connection asked
|
|
11
|
+
* for, opened, refused, failed and closed (--log-network), and with
|
|
12
|
+
* `data` what each sends and receives too (--log-sockets). With
|
|
13
|
+
* `options.proxy`, each goes through that proxy (--proxy).
|
|
10
14
|
*/
|
|
11
|
-
export function bridgeSockets(trusted, permit) {
|
|
15
|
+
export function bridgeSockets(trusted, permit, log = null, data = false, options = {}) {
|
|
12
16
|
const pages = new Map();
|
|
13
17
|
const connectionsOf = (contents) => {
|
|
14
18
|
const known = pages.get(contents);
|
|
@@ -16,10 +20,16 @@ export function bridgeSockets(trusted, permit) {
|
|
|
16
20
|
return known;
|
|
17
21
|
}
|
|
18
22
|
const connections = new Connections((id, event) => {
|
|
23
|
+
if (log && event.type !== "data") {
|
|
24
|
+
log(socketLine(id, event.type === "error" ? `error: ${event.message}` : event.type));
|
|
25
|
+
}
|
|
26
|
+
else if (log && data && event.type === "data") {
|
|
27
|
+
log(socketDataLine(id, false, event.bytes));
|
|
28
|
+
}
|
|
19
29
|
if (!contents.isDestroyed()) {
|
|
20
30
|
contents.send("socket:event", id, event);
|
|
21
31
|
}
|
|
22
|
-
});
|
|
32
|
+
}, options);
|
|
23
33
|
pages.set(contents, connections);
|
|
24
34
|
contents.on("did-start-navigation", (details) => {
|
|
25
35
|
if (details.isMainFrame && !details.isSameDocument) {
|
|
@@ -49,6 +59,8 @@ export function bridgeSockets(trusted, permit) {
|
|
|
49
59
|
if (connections.generation !== generation) {
|
|
50
60
|
return;
|
|
51
61
|
}
|
|
62
|
+
const via = allowed && options.proxy ? " via proxy" : "";
|
|
63
|
+
log?.(socketLine(id, `${allowed ? "connecting to" : "refused"} ${host}:${port}${via}`));
|
|
52
64
|
if (allowed) {
|
|
53
65
|
connections.connect(id, host, port, allowed.address);
|
|
54
66
|
}
|
|
@@ -59,6 +71,9 @@ export function bridgeSockets(trusted, permit) {
|
|
|
59
71
|
});
|
|
60
72
|
ipcMain.on("socket:send", (event, id, bytes) => {
|
|
61
73
|
if (trusted(event) && typeof id === "number" && bytes instanceof Uint8Array) {
|
|
74
|
+
if (log && data) {
|
|
75
|
+
log(socketDataLine(id, true, bytes));
|
|
76
|
+
}
|
|
62
77
|
pages.get(event.sender)?.send(id, bytes);
|
|
63
78
|
}
|
|
64
79
|
});
|
package/dist/main/sockets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,wEAAwE;AACxE,uEAAuE;AACvE,OAAO,EAAqB,OAAO,EAAoB,MAAM,UAAU,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"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"}
|