@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.
Files changed (86) hide show
  1. package/README.md +85 -12
  2. package/dist/launch/launch.js +4 -1
  3. package/dist/launch/launch.js.map +1 -1
  4. package/dist/main/air.d.ts +3 -3
  5. package/dist/main/air.d.ts.map +1 -1
  6. package/dist/main/air.js +17 -8
  7. package/dist/main/air.js.map +1 -1
  8. package/dist/main/case-paths.d.ts +12 -0
  9. package/dist/main/case-paths.d.ts.map +1 -0
  10. package/dist/main/case-paths.js +84 -0
  11. package/dist/main/case-paths.js.map +1 -0
  12. package/dist/main/connections.d.ts +20 -1
  13. package/dist/main/connections.d.ts.map +1 -1
  14. package/dist/main/connections.js +71 -8
  15. package/dist/main/connections.js.map +1 -1
  16. package/dist/main/main.js +133 -9
  17. package/dist/main/main.js.map +1 -1
  18. package/dist/main/netlog.d.ts +21 -0
  19. package/dist/main/netlog.d.ts.map +1 -0
  20. package/dist/main/netlog.js +90 -0
  21. package/dist/main/netlog.js.map +1 -0
  22. package/dist/main/network.d.ts +10 -0
  23. package/dist/main/network.d.ts.map +1 -1
  24. package/dist/main/network.js +111 -35
  25. package/dist/main/network.js.map +1 -1
  26. package/dist/main/proxy.d.ts +48 -0
  27. package/dist/main/proxy.d.ts.map +1 -0
  28. package/dist/main/proxy.js +402 -0
  29. package/dist/main/proxy.js.map +1 -0
  30. package/dist/main/sandbox.d.ts.map +1 -1
  31. package/dist/main/sandbox.js +2 -1
  32. package/dist/main/sandbox.js.map +1 -1
  33. package/dist/main/settings.d.ts +2 -0
  34. package/dist/main/settings.d.ts.map +1 -1
  35. package/dist/main/settings.js +4 -0
  36. package/dist/main/settings.js.map +1 -1
  37. package/dist/main/sockets.d.ts +6 -2
  38. package/dist/main/sockets.d.ts.map +1 -1
  39. package/dist/main/sockets.js +18 -3
  40. package/dist/main/sockets.js.map +1 -1
  41. package/dist/main/websocket-connections.d.ts +73 -0
  42. package/dist/main/websocket-connections.d.ts.map +1 -0
  43. package/dist/main/websocket-connections.js +266 -0
  44. package/dist/main/websocket-connections.js.map +1 -0
  45. package/dist/main/websockets.d.ts +12 -0
  46. package/dist/main/websockets.d.ts.map +1 -0
  47. package/dist/main/websockets.js +94 -0
  48. package/dist/main/websockets.js.map +1 -0
  49. package/dist/preload/preload.cjs +20 -0
  50. package/dist/preload/preload.cjs.map +1 -1
  51. package/dist/renderer/air.d.ts.map +1 -1
  52. package/dist/renderer/air.js +1 -0
  53. package/dist/renderer/air.js.map +1 -1
  54. package/dist/renderer/full-screen.d.ts +4 -0
  55. package/dist/renderer/full-screen.d.ts.map +1 -0
  56. package/dist/renderer/full-screen.js +32 -0
  57. package/dist/renderer/full-screen.js.map +1 -0
  58. package/dist/renderer/index.d.ts.map +1 -1
  59. package/dist/renderer/index.js +4 -0
  60. package/dist/renderer/index.js.map +1 -1
  61. package/dist/renderer/websockets.d.ts +4 -0
  62. package/dist/renderer/websockets.d.ts.map +1 -0
  63. package/dist/renderer/websockets.js +36 -0
  64. package/dist/renderer/websockets.js.map +1 -0
  65. package/dist/shared/api.d.ts +53 -0
  66. package/dist/shared/api.d.ts.map +1 -1
  67. package/package.json +7 -7
  68. package/src/launch/launch.ts +5 -2
  69. package/src/main/air.ts +18 -8
  70. package/src/main/case-paths.ts +97 -0
  71. package/src/main/connections.ts +90 -8
  72. package/src/main/main.ts +174 -10
  73. package/src/main/netlog.ts +108 -0
  74. package/src/main/network.ts +140 -37
  75. package/src/main/proxy.ts +497 -0
  76. package/src/main/sandbox.ts +2 -1
  77. package/src/main/settings.ts +5 -0
  78. package/src/main/sockets.ts +22 -3
  79. package/src/main/websocket-connections.ts +344 -0
  80. package/src/main/websockets.ts +117 -0
  81. package/src/preload/preload.cts +23 -0
  82. package/src/renderer/air.ts +1 -0
  83. package/src/renderer/full-screen.ts +44 -0
  84. package/src/renderer/index.ts +4 -0
  85. package/src/renderer/websockets.ts +43 -0
  86. 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":"AAkBA,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"}
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"}
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/main/sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/main/sandbox.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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":"AAAA,uEAAuE;AACvE,qEAAqE;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAc1C,MAAM,MAAM,GAAG,EAAE,CAAC;AAElB,MAAM,OAAO,GAAG,CAAC,KAAc,EAAY,EAAE,CAC3C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAEtF,MAAM,OAAO,YAAY;IACN,IAAI,CAAS;IACtB,OAAO,CAAW;IAE1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,iGAAiG;IACjG,SAAS;QACP,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,8DAA8D;IAC9D,UAAU,CAAC,IAAiB,EAAE,IAAY;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,+CAA+C;IAC/C,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC;YACV,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;SAClF,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,aAAa,CAAC,GAAW,EAAE,QAAgB;QACzC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClG,CAAC;IAED,8EAA8E;IAC9E,WAAW,CAAC,GAAW,EAAE,QAAgB;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,IAAwB;QACpC,OAAO,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACjF,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI;gBAC9B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC5B,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CACZ,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAC9E,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CACvD;aACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,MAAyB;QACtC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;QAC9C,uEAAuE;QACvE,4CAA4C;QAC5C,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAAC;QACpE,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,aAAa,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACvE,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/main/settings.ts"],"names":[],"mappings":"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"}
@@ -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>): void;
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;AAGxE;;;;GAIG;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,GAC3E,IAAI,CAkEN"}
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"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"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"}