vpn-split 21.0.21 → 21.0.22

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 (67) hide show
  1. package/bin/vpn-split +10 -10
  2. package/bin/vpn-split-debug +10 -10
  3. package/browser/README.md +24 -24
  4. package/browser/fesm2022/vpn-split-browser.mjs.map +1 -1
  5. package/browser/package.json +1 -1
  6. package/browser-prod/README.md +24 -24
  7. package/browser-prod/fesm2022/vpn-split-browser.mjs.map +1 -1
  8. package/browser-prod/package.json +1 -1
  9. package/lib/build-info._auto-generated_.d.ts +1 -1
  10. package/lib/build-info._auto-generated_.js +1 -1
  11. package/lib/package.json +1 -1
  12. package/lib-prod/build-info._auto-generated_.d.ts +24 -0
  13. package/lib-prod/build-info._auto-generated_.js +10 -6
  14. package/lib-prod/build-info._auto-generated_.js.map +1 -0
  15. package/lib-prod/env/env.angular-node-app.d.ts +64 -0
  16. package/lib-prod/env/env.angular-node-app.js +69 -64
  17. package/lib-prod/env/env.angular-node-app.js.map +1 -0
  18. package/lib-prod/env/env.docs-webapp.d.ts +64 -0
  19. package/lib-prod/env/env.docs-webapp.js +69 -64
  20. package/lib-prod/env/env.docs-webapp.js.map +1 -0
  21. package/lib-prod/env/env.electron-app.d.ts +64 -0
  22. package/lib-prod/env/env.electron-app.js +69 -64
  23. package/lib-prod/env/env.electron-app.js.map +1 -0
  24. package/lib-prod/env/env.mobile-app.d.ts +64 -0
  25. package/lib-prod/env/env.mobile-app.js +69 -64
  26. package/lib-prod/env/env.mobile-app.js.map +1 -0
  27. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +64 -0
  28. package/lib-prod/env/env.npm-lib-and-cli-tool.js +69 -64
  29. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -0
  30. package/lib-prod/env/env.vscode-plugin.d.ts +64 -0
  31. package/lib-prod/env/env.vscode-plugin.js +69 -64
  32. package/lib-prod/env/env.vscode-plugin.js.map +1 -0
  33. package/lib-prod/env/index.d.ts +6 -0
  34. package/lib-prod/env/index.js +23 -6
  35. package/lib-prod/env/index.js.map +1 -0
  36. package/lib-prod/hostile.backend.d.ts +37 -0
  37. package/lib-prod/hostile.backend.js +15 -10
  38. package/lib-prod/hostile.backend.js.map +1 -0
  39. package/lib-prod/index._auto-generated_.d.ts +0 -0
  40. package/lib-prod/index._auto-generated_.js +2 -1
  41. package/lib-prod/index._auto-generated_.js.map +1 -0
  42. package/lib-prod/index.d.ts +2 -0
  43. package/lib-prod/index.js +19 -2
  44. package/lib-prod/index.js.map +1 -0
  45. package/lib-prod/migrations/index.d.ts +1 -0
  46. package/lib-prod/migrations/index.js +18 -1
  47. package/lib-prod/migrations/index.js.map +1 -0
  48. package/lib-prod/migrations/migrations_index._auto-generated_.d.ts +0 -0
  49. package/lib-prod/migrations/migrations_index._auto-generated_.js +1 -0
  50. package/lib-prod/migrations/migrations_index._auto-generated_.js.map +1 -0
  51. package/lib-prod/models.d.ts +61 -0
  52. package/lib-prod/models.js +32 -26
  53. package/lib-prod/models.js.map +1 -0
  54. package/lib-prod/package.json +1 -1
  55. package/lib-prod/start.backend.d.ts +0 -0
  56. package/lib-prod/start.backend.js +1 -0
  57. package/lib-prod/start.backend.js.map +1 -0
  58. package/lib-prod/vpn-split.backend.d.ts +56 -0
  59. package/lib-prod/vpn-split.backend.js +107 -96
  60. package/lib-prod/vpn-split.backend.js.map +1 -0
  61. package/package.json +1 -1
  62. package/websql/README.md +24 -24
  63. package/websql/fesm2022/vpn-split-websql.mjs.map +1 -1
  64. package/websql/package.json +1 -1
  65. package/websql-prod/README.md +24 -24
  66. package/websql-prod/fesm2022/vpn-split-websql.mjs.map +1 -1
  67. package/websql-prod/package.json +1 -1
@@ -21,3 +21,4 @@
21
21
  // process.stdin.resume();
22
22
  // }
23
23
  //#endregion
24
+ //# sourceMappingURL=start.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,kBAAkB;AAClB,yCAAyC;AACzC,kDAAkD;AAClD,8DAA8D;AAE9D,oCAAoC;AAEpC,8CAA8C;AAC9C,4BAA4B;AAC5B,qEAAqE;AACrE,0CAA0C;AAC1C,6DAA6D;AAE7D,0CAA0C;AAC1C,yCAAyC;AACzC,2CAA2C;AAC3C,QAAQ;AAER,qCAAqC;AACrC,mDAAmD;AACnD,aAAa;AACb,2EAA2E;AAC3E,qEAAqE;AACrE,MAAM;AAEN,4BAA4B;AAC5B,IAAI;AACJ,YAAY"}
@@ -0,0 +1,56 @@
1
+ import { URL } from 'url';
2
+ import { EtcHosts, HostForServer } from './models';
3
+ export declare class VpnSplit {
4
+ private portsToPass;
5
+ private hosts;
6
+ private cwd;
7
+ get hostsArr(): HostForServer[];
8
+ get hostsArrWithoutDefault(): HostForServer[];
9
+ private get serveKeyName();
10
+ private get serveKeyPath();
11
+ private get serveCertName();
12
+ private get serveCertPath();
13
+ private get serveCertChainName();
14
+ private get serveCertChainPath();
15
+ private readonly __hostile;
16
+ private static _instances;
17
+ private constructor();
18
+ static Instance({ ports, additionalDefaultHosts, cwd, allowNotSudo, }?: {
19
+ ports?: number[];
20
+ additionalDefaultHosts?: EtcHosts;
21
+ cwd?: string;
22
+ allowNotSudo?: boolean;
23
+ }): Promise<VpnSplit>;
24
+ startServer(saveHostInUserFolder?: boolean): Promise<void>;
25
+ applyHosts(hosts: EtcHosts): void;
26
+ applyHostsLocal(hosts: EtcHosts): void;
27
+ startClient(vpnServerTargets: URL[] | URL, options: {
28
+ saveHostInUserFolder?: boolean;
29
+ useHost?: EtcHosts;
30
+ }): Promise<void>;
31
+ private getRemoteHosts;
32
+ private createCertificateIfNotExists;
33
+ private getTarget;
34
+ private getProxyConfig;
35
+ private getNotFoundMsg;
36
+ private getMaybeChangeOriginTrueMsg;
37
+ private filterHeaders;
38
+ private isHttpsPort;
39
+ private serverPassthrough;
40
+ private clientPassthrough;
41
+ /**
42
+ * Start a UDP socket for “server” mode on a given port.
43
+ * This example forwards inbound messages right back to the sender,
44
+ * or you can forward them to an external IP:port if desired.
45
+ */
46
+ private serverUdpPassthrough;
47
+ /**
48
+ * Start a UDP socket for “client” mode on a given port.
49
+ * This example also just does a trivial pass-through or echo,
50
+ * but you can adapt to forward to a remote server.
51
+ */
52
+ private clientUdpPassthrough;
53
+ private getPortFromRequest;
54
+ private ensureMkcertCertificate;
55
+ private preventBadTargetForClient;
56
+ }
@@ -1,30 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VpnSplit = void 0;
1
4
  //#region imports
2
- import { execSync } from 'child_process';
5
+ const child_process_1 = require("child_process");
3
6
  // TODO I am using TCP ugrade not UDP!
4
- import * as dgram from 'dgram'; // <-- For UDP sockets
5
- import * as http from 'http';
6
- import axios from 'axios';
7
- import * as express from 'express';
8
- import * as httpProxy from 'http-proxy';
9
- import { Log, Level } from 'ng2-logger/lib-prod';
10
- import { config } from 'tnp-core/lib-prod';
11
- import { path, fse, https, isElevated, crossPlatformPath, ___NS__includes, ___NS__isArray, ___NS__keys, ___NS__merge, ___NS__values, UtilsNetwork__NS__getEtcHostsPath, UtilsNetwork__NS__getFirstIpV4LocalActiveIpAddress, UtilsNetwork__NS__getLocalIpAddresses, UtilsOs__NS__commandExistsSync, UtilsOs__NS__getRealHomeDir, UtilsOs__NS__isRunningInWindowsPowerShell } from 'tnp-core/lib-prod';
12
- import { CoreModels__NS__localhostDomain, CoreModels__NS__localhostIp127 } from 'tnp-core/lib-prod';
13
- import { Helpers__NS__error, Helpers__NS__exists, Helpers__NS__info, Helpers__NS__killProcessByPort, Helpers__NS__run, Helpers__NS__writeFile, HelpersTaon__NS__arrays__NS__from } from 'tnp-helpers/lib-prod';
14
- import { Hostile } from './hostile.backend';
15
- import { HostForServer } from './models';
16
- const HOST_FILE_PATH = UtilsNetwork__NS__getEtcHostsPath();
17
- const log = Log.create('vpn-split', Level.INFO);
7
+ const dgram = require("dgram"); // <-- For UDP sockets
8
+ const http = require("http");
9
+ const axios_1 = require("axios");
10
+ const express = require("express");
11
+ const httpProxy = require("http-proxy");
12
+ const lib_prod_1 = require("ng2-logger/lib-prod");
13
+ const lib_prod_2 = require("tnp-core/lib-prod");
14
+ const lib_prod_3 = require("tnp-core/lib-prod");
15
+ const lib_prod_4 = require("tnp-core/lib-prod");
16
+ const lib_prod_5 = require("tnp-helpers/lib-prod");
17
+ const hostile_backend_1 = require("./hostile.backend");
18
+ const models_1 = require("./models");
19
+ const HOST_FILE_PATH = (0, lib_prod_3.UtilsNetwork__NS__getEtcHostsPath)();
20
+ const log = lib_prod_1.Log.create('vpn-split', lib_prod_1.Level.INFO);
18
21
  //#endregion
19
22
  //#region consts
20
23
  const GENERATED = '#GENERATED_BY_CLI#';
21
24
  const EOL = process.platform === 'win32' ? '\r\n' : '\n';
22
25
  const SERVERS_PATH = '/$$$$servers$$$$';
23
- const HOST_FILE_PATHUSER = crossPlatformPath([
24
- UtilsOs__NS__getRealHomeDir(),
26
+ const HOST_FILE_PATHUSER = (0, lib_prod_3.crossPlatformPath)([
27
+ (0, lib_prod_3.UtilsOs__NS__getRealHomeDir)(),
25
28
  'hosts-file__vpn-split',
26
29
  ]);
27
- const from = HostForServer.From;
30
+ const from = models_1.HostForServer.From;
28
31
  const DefaultEtcHosts = {
29
32
  'localhost alias': from({
30
33
  ipOrDomain: '127.0.0.1',
@@ -43,11 +46,14 @@ const DefaultEtcHosts = {
43
46
  }),
44
47
  };
45
48
  //#endregion
46
- export class VpnSplit {
49
+ class VpnSplit {
50
+ portsToPass;
51
+ hosts;
52
+ cwd;
47
53
  //#region getters
48
54
  get hostsArr() {
49
55
  const hosts = this.hosts;
50
- return ___NS__keys(hosts).map(hostName => {
56
+ return (0, lib_prod_3.___NS__keys)(hosts).map(hostName => {
51
57
  const v = hosts[hostName];
52
58
  v.name = hostName;
53
59
  return v;
@@ -57,38 +63,41 @@ export class VpnSplit {
57
63
  return this.hostsArr.filter(f => !f.isDefault);
58
64
  }
59
65
  get serveKeyName() {
60
- return 'tmp-' + config.file.server_key;
66
+ return 'tmp-' + lib_prod_2.config.file.server_key;
61
67
  }
62
68
  get serveKeyPath() {
63
- return path.join(this.cwd, this.serveKeyName);
69
+ return lib_prod_3.path.join(this.cwd, this.serveKeyName);
64
70
  }
65
71
  get serveCertName() {
66
- return 'tmp-' + config.file.server_cert;
72
+ return 'tmp-' + lib_prod_2.config.file.server_cert;
67
73
  }
68
74
  get serveCertPath() {
69
- return path.join(this.cwd, this.serveCertName);
75
+ return lib_prod_3.path.join(this.cwd, this.serveCertName);
70
76
  }
71
77
  get serveCertChainName() {
72
- return 'tmp-' + config.file.server_chain_cert;
78
+ return 'tmp-' + lib_prod_2.config.file.server_chain_cert;
73
79
  }
74
80
  get serveCertChainPath() {
75
- return path.join(this.cwd, this.serveCertChainName);
81
+ return lib_prod_3.path.join(this.cwd, this.serveCertChainName);
76
82
  }
77
83
  //#endregion
84
+ //#region fields
85
+ __hostile;
86
+ //#endregion
78
87
  //#region singleton
79
- static { this._instances = {}; }
88
+ static _instances = {};
80
89
  constructor(portsToPass, hosts, cwd) {
81
90
  this.portsToPass = portsToPass;
82
91
  this.hosts = hosts;
83
92
  this.cwd = cwd;
84
- this.__hostile = new Hostile();
93
+ this.__hostile = new hostile_backend_1.Hostile();
85
94
  }
86
95
  static async Instance({ ports = [80, 443, 4443, 22, 2222, 8180, 8080, 4407, 7999, 9443], additionalDefaultHosts = {}, cwd = process.cwd(), allowNotSudo = false, } = {}) {
87
- if (!(await isElevated()) && !allowNotSudo) {
88
- Helpers__NS__error(`[vpn-split] Please run this program as sudo (or admin on windows)`, false, true);
96
+ if (!(await (0, lib_prod_3.isElevated)()) && !allowNotSudo) {
97
+ (0, lib_prod_5.Helpers__NS__error)(`[vpn-split] Please run this program as sudo (or admin on windows)`, false, true);
89
98
  }
90
99
  if (!VpnSplit._instances[cwd]) {
91
- VpnSplit._instances[cwd] = new VpnSplit(ports, ___NS__merge(DefaultEtcHosts, additionalDefaultHosts), cwd);
100
+ VpnSplit._instances[cwd] = new VpnSplit(ports, (0, lib_prod_3.___NS__merge)(DefaultEtcHosts, additionalDefaultHosts), cwd);
92
101
  }
93
102
  return VpnSplit._instances[cwd];
94
103
  }
@@ -120,7 +129,7 @@ export class VpnSplit {
120
129
  for (const portToPassthrough of this.portsToPass) {
121
130
  await this.serverUdpPassthrough(portToPassthrough);
122
131
  }
123
- Helpers__NS__info(`Activated (server).`);
132
+ (0, lib_prod_5.Helpers__NS__info)(`Activated (server).`);
124
133
  }
125
134
  //#endregion
126
135
  //#region apply hosts
@@ -156,9 +165,9 @@ export class VpnSplit {
156
165
  }
157
166
  // Merge with original, redirecting all non-default entries to 127.0.0.1
158
167
  const originalHosts = this.hostsArr;
159
- const combinedHostsObj = ___NS__values([
168
+ const combinedHostsObj = (0, lib_prod_3.___NS__values)([
160
169
  ...originalHosts,
161
- ...hosts.map(h => HostForServer.From({
170
+ ...hosts.map(h => models_1.HostForServer.From({
162
171
  aliases: h.alias,
163
172
  ipOrDomain: h.ip,
164
173
  originHostname: h.originHostname,
@@ -172,7 +181,7 @@ export class VpnSplit {
172
181
  return copy;
173
182
  })
174
183
  .reduce((prev, curr) => {
175
- return ___NS__merge(prev, {
184
+ return (0, lib_prod_3.___NS__merge)(prev, {
176
185
  [curr.aliases.join(' ')]: curr,
177
186
  });
178
187
  }, {}));
@@ -200,31 +209,31 @@ export class VpnSplit {
200
209
  for (const portToPassthrough of this.portsToPass) {
201
210
  await this.clientUdpPassthrough(portToPassthrough, vpnServerTargets, combinedHostsObj);
202
211
  }
203
- Helpers__NS__info(`Client activated`);
212
+ (0, lib_prod_5.Helpers__NS__info)(`Client activated`);
204
213
  }
205
214
  //#endregion
206
215
  //#region private methods / get remote hosts
207
216
  async getRemoteHosts(vpnServerTarget) {
208
217
  try {
209
218
  const url = `http://${vpnServerTarget.hostname}${SERVERS_PATH}`;
210
- const response = await axios({ url, method: 'GET' });
219
+ const response = await (0, axios_1.default)({ url, method: 'GET' });
211
220
  return response.data;
212
221
  }
213
222
  catch (err) {
214
- Helpers__NS__error(`Remote server: ${vpnServerTarget.hostname} may be inactive...`, true, true);
223
+ (0, lib_prod_5.Helpers__NS__error)(`Remote server: ${vpnServerTarget.hostname} may be inactive...`, true, true);
215
224
  return [];
216
225
  }
217
226
  }
218
227
  //#endregion
219
228
  //#region private methods / create certificate
220
229
  createCertificateIfNotExists() {
221
- if (!Helpers__NS__exists(this.serveKeyPath) ||
222
- !Helpers__NS__exists(this.serveCertPath)) {
223
- Helpers__NS__info(`[vpn-split] Generating new self-signed certificate for localhost...`);
224
- const commandGen = UtilsOs__NS__isRunningInWindowsPowerShell()
230
+ if (!(0, lib_prod_5.Helpers__NS__exists)(this.serveKeyPath) ||
231
+ !(0, lib_prod_5.Helpers__NS__exists)(this.serveCertPath)) {
232
+ (0, lib_prod_5.Helpers__NS__info)(`[vpn-split] Generating new self-signed certificate for localhost...`);
233
+ const commandGen = (0, lib_prod_3.UtilsOs__NS__isRunningInWindowsPowerShell)()
225
234
  ? `powershell -Command "& 'C:\\Program Files\\Git\\usr\\bin\\openssl.exe' req -nodes -new -x509 -keyout ${this.serveKeyName} -out ${this.serveCertName}"`
226
235
  : `openssl req -nodes -new -x509 -keyout ${this.serveKeyName} -out ${this.serveCertName}`;
227
- Helpers__NS__run(commandGen, { cwd: this.cwd, output: true }).sync();
236
+ (0, lib_prod_5.Helpers__NS__run)(commandGen, { cwd: this.cwd, output: true }).sync();
228
237
  }
229
238
  }
230
239
  //#endregion
@@ -251,8 +260,8 @@ export class VpnSplit {
251
260
  ? {
252
261
  target,
253
262
  ssl: {
254
- key: fse.readFileSync(this.serveKeyPath),
255
- cert: fse.readFileSync(this.serveCertPath),
263
+ key: lib_prod_3.fse.readFileSync(this.serveKeyPath),
264
+ cert: lib_prod_3.fse.readFileSync(this.serveCertPath),
256
265
  },
257
266
  // agent: new https.Agent({
258
267
  // secureOptions: crypto.constants.SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION,
@@ -301,10 +310,10 @@ Port: ${port}`;
301
310
  process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
302
311
  const app = express();
303
312
  const proxy = httpProxy.createProxyServer({});
304
- const localIp = await UtilsNetwork__NS__getLocalIpAddresses();
313
+ const localIp = await (0, lib_prod_3.UtilsNetwork__NS__getLocalIpAddresses)();
305
314
  const currentLocalIps = [
306
- CoreModels__NS__localhostDomain,
307
- CoreModels__NS__localhostIp127,
315
+ lib_prod_4.CoreModels__NS__localhostDomain,
316
+ lib_prod_4.CoreModels__NS__localhostIp127,
308
317
  ...localIp.map(a => a.address),
309
318
  ];
310
319
  app.use((req, res, next) => {
@@ -313,7 +322,7 @@ Port: ${port}`;
313
322
  if (req.method === 'GET' && req.originalUrl === SERVERS_PATH) {
314
323
  res.send(JSON.stringify(this.hostsArrWithoutDefault.map(h => ({
315
324
  ip: h.ip,
316
- alias: HelpersTaon__NS__arrays__NS__from(h.aliases).join(' '),
325
+ alias: (0, lib_prod_5.HelpersTaon__NS__arrays__NS__from)(h.aliases).join(' '),
317
326
  }))));
318
327
  }
319
328
  else {
@@ -328,12 +337,12 @@ Port: ${port}`;
328
337
  }
329
338
  });
330
339
  const server = isHttps
331
- ? https.createServer({
332
- key: fse.readFileSync(this.serveKeyPath),
333
- cert: fse.readFileSync(this.serveCertPath),
340
+ ? lib_prod_3.https.createServer({
341
+ key: lib_prod_3.fse.readFileSync(this.serveKeyPath),
342
+ cert: lib_prod_3.fse.readFileSync(this.serveCertPath),
334
343
  }, app)
335
344
  : http.createServer(app);
336
- await Helpers__NS__killProcessByPort(portToPassthrough, { silent: true });
345
+ await (0, lib_prod_5.Helpers__NS__killProcessByPort)(portToPassthrough, { silent: true });
337
346
  await new Promise((resolve, reject) => {
338
347
  server.listen(portToPassthrough, () => {
339
348
  console.log(`TCP/HTTPS server listening on port ${portToPassthrough} (secure=${isHttps})`);
@@ -392,12 +401,12 @@ Port: ${port}`;
392
401
  }), next);
393
402
  });
394
403
  const server = isHttps
395
- ? https.createServer({
396
- key: fse.readFileSync(this.serveKeyPath),
397
- cert: fse.readFileSync(this.serveCertPath),
404
+ ? lib_prod_3.https.createServer({
405
+ key: lib_prod_3.fse.readFileSync(this.serveKeyPath),
406
+ cert: lib_prod_3.fse.readFileSync(this.serveCertPath),
398
407
  }, app)
399
408
  : http.createServer(app);
400
- await Helpers__NS__killProcessByPort(portToPassthrough, { silent: true });
409
+ await (0, lib_prod_5.Helpers__NS__killProcessByPort)(portToPassthrough, { silent: true });
401
410
  await new Promise((resolve, reject) => {
402
411
  server.listen(portToPassthrough, () => {
403
412
  log.i(`TCP/HTTPS client listening on port ${portToPassthrough} (secure=${isHttps})`);
@@ -473,7 +482,7 @@ Port: ${port}`;
473
482
  // If the message is from the server, forward back to the correct client.
474
483
  //
475
484
  // Check if it’s from local or remote by address. This is simplistic:
476
- const isFromLocal = !___NS__includes(hostsArr.map(h => h.ipOrDomain), rinfo.address);
485
+ const isFromLocal = !(0, lib_prod_3.___NS__includes)(hostsArr.map(h => h.ipOrDomain), rinfo.address);
477
486
  if (isFromLocal) {
478
487
  // Received from local => forward to “server” (the VPN server)
479
488
  // Keep track of who we got this from (the local client)
@@ -533,8 +542,8 @@ Port: ${port}`;
533
542
  //#region @backendFunc
534
543
  // console.log('Domains for cert:', domains);
535
544
  // Helpers__NS__error(``,false,true);
536
- if (!UtilsOs__NS__commandExistsSync('mkcert')) {
537
- Helpers__NS__error('[vpn-split] mkcert is not installed.', false, true);
545
+ if (!(0, lib_prod_3.UtilsOs__NS__commandExistsSync)('mkcert')) {
546
+ (0, lib_prod_5.Helpers__NS__error)('[vpn-split] mkcert is not installed.', false, true);
538
547
  }
539
548
  const certPath = this.serveCertPath; // e.g. .../tmp-server_cert
540
549
  const keyPath = this.serveKeyPath; // e.g. .../tmp-server_key
@@ -551,12 +560,12 @@ Port: ${port}`;
551
560
  // Helper: run mkcert and capture output
552
561
  const runMkcert = (args) => {
553
562
  try {
554
- return execSync(`mkcert ${args}`, { stdio: 'pipe' }).toString().trim();
563
+ return (0, child_process_1.execSync)(`mkcert ${args}`, { stdio: 'pipe' }).toString().trim();
555
564
  }
556
565
  catch (err) {
557
566
  const stderr = err.stderr?.toString() || '';
558
567
  if (stderr.includes('command not found')) {
559
- Helpers__NS__error('[vpn-split] mkcert is not installed. Install it first: https://github.com/FiloSottile/mkcert', false, true);
568
+ (0, lib_prod_5.Helpers__NS__error)('[vpn-split] mkcert is not installed. Install it first: https://github.com/FiloSottile/mkcert', false, true);
560
569
  }
561
570
  throw err;
562
571
  }
@@ -566,28 +575,28 @@ Port: ${port}`;
566
575
  try {
567
576
  const output = runMkcert('-CAROOT');
568
577
  // If -CAROOT succeeds and the root files exist → CA is installed
569
- const rootDir = crossPlatformPath(output.trim());
578
+ const rootDir = (0, lib_prod_3.crossPlatformPath)(output.trim());
570
579
  if (rootDir &&
571
- fse.pathExistsSync(crossPlatformPath([rootDir, 'rootCA.pem']))) {
572
- Helpers__NS__info('[vpn-split] mkcert local CA is already installed');
580
+ lib_prod_3.fse.pathExistsSync((0, lib_prod_3.crossPlatformPath)([rootDir, 'rootCA.pem']))) {
581
+ (0, lib_prod_5.Helpers__NS__info)('[vpn-split] mkcert local CA is already installed');
573
582
  caInstalled = true;
574
583
  }
575
584
  else {
576
- Helpers__NS__info('[vpn-split] mkcert local CA is NOT installed');
585
+ (0, lib_prod_5.Helpers__NS__info)('[vpn-split] mkcert local CA is NOT installed');
577
586
  }
578
587
  }
579
588
  catch {
580
- Helpers__NS__info('[vpn-split] mkcert error checking local CA installation');
589
+ (0, lib_prod_5.Helpers__NS__info)('[vpn-split] mkcert error checking local CA installation');
581
590
  }
582
591
  // 2. Install the local CA if needed (requires sudo once)
583
592
  if (!caInstalled) {
584
- Helpers__NS__info('[vpn-split] Installing mkcert local CA (requires sudo once)...');
593
+ (0, lib_prod_5.Helpers__NS__info)('[vpn-split] Installing mkcert local CA (requires sudo once)...');
585
594
  try {
586
- execSync('mkcert -install', { stdio: 'inherit' });
587
- Helpers__NS__info('[vpn-split] Local CA installed and trusted system-wide');
595
+ (0, child_process_1.execSync)('mkcert -install', { stdio: 'inherit' });
596
+ (0, lib_prod_5.Helpers__NS__info)('[vpn-split] Local CA installed and trusted system-wide');
588
597
  }
589
598
  catch (err) {
590
- Helpers__NS__error('[vpn-split] Failed to run "mkcert -install". Run it manually with sudo.', false, true);
599
+ (0, lib_prod_5.Helpers__NS__error)('[vpn-split] Failed to run "mkcert -install". Run it manually with sudo.', false, true);
591
600
  }
592
601
  }
593
602
  const isWindows = process.platform === 'win32';
@@ -598,58 +607,59 @@ Port: ${port}`;
598
607
  // Small list or non-Windows: one shot
599
608
  const namesArg = allNames.map(d => `"${d}"`).join(' ');
600
609
  const mkcertCmd = `-key-file "${keyPath}" -cert-file "${certPath}" ${namesArg}`;
601
- fse.ensureDirSync(path.dirname(certPath));
610
+ lib_prod_3.fse.ensureDirSync(lib_prod_3.path.dirname(certPath));
602
611
  runMkcert(mkcertCmd);
603
612
  }
604
613
  else {
605
614
  // Big list on Windows: Batch into chunks of ~20 domains
606
615
  const chunkSize = 20;
607
- fse.ensureDirSync(path.dirname(certPath));
616
+ lib_prod_3.fse.ensureDirSync(lib_prod_3.path.dirname(certPath));
608
617
  for (let i = 0; i < allNames.length; i += chunkSize) {
609
618
  const chunk = allNames.slice(i, i + chunkSize);
610
619
  const tempCert = `${certPath}.${i}.pem`;
611
620
  const tempKey = `${keyPath}.${i}.pem`;
612
621
  const namesArg = chunk.map(d => `"${d}"`).join(' ');
613
622
  const mkcertCmd = `-key-file "${tempKey}" -cert-file "${tempCert}" ${namesArg}`;
614
- Helpers__NS__info(`[vpn-split] Generating batch ${Math.floor(i / chunkSize) + 1}/${Math.ceil(allNames.length / chunkSize)}...`);
623
+ (0, lib_prod_5.Helpers__NS__info)(`[vpn-split] Generating batch ${Math.floor(i / chunkSize) + 1}/${Math.ceil(allNames.length / chunkSize)}...`);
615
624
  runMkcert(mkcertCmd);
616
625
  tempCertFiles.push(tempCert);
617
626
  tempKeyFiles.push(tempKey);
618
627
  }
619
628
  // 3. Merge all temp certs into one (cert chain + leaves) and pick first key
620
- Helpers__NS__info('[vpn-split] Merging batches into final cert...');
629
+ (0, lib_prod_5.Helpers__NS__info)('[vpn-split] Merging batches into final cert...');
621
630
  const firstKey = tempKeyFiles[0];
622
- fse.copySync(firstKey, keyPath); // Use the first key (all are identical)
631
+ lib_prod_3.fse.copySync(firstKey, keyPath); // Use the first key (all are identical)
623
632
  // Concat all certs (mkcert output is already PEM-formatted)
624
633
  const mergedCertContent = tempCertFiles
625
- .map(f => fse.readFileSync(f, 'utf8'))
634
+ .map(f => lib_prod_3.fse.readFileSync(f, 'utf8'))
626
635
  .join('\n'); // PEM certs stack nicely
627
- fse.writeFileSync(certPath, mergedCertContent);
636
+ lib_prod_3.fse.writeFileSync(certPath, mergedCertContent);
628
637
  // Clean up temps
629
- tempCertFiles.forEach(f => fse.removeSync(f));
630
- tempKeyFiles.slice(1).forEach(f => fse.removeSync(f)); // Keep first key as backup if needed
631
- Helpers__NS__info('[vpn-split] Merged cert ready!');
638
+ tempCertFiles.forEach(f => lib_prod_3.fse.removeSync(f));
639
+ tempKeyFiles.slice(1).forEach(f => lib_prod_3.fse.removeSync(f)); // Keep first key as backup if needed
640
+ (0, lib_prod_5.Helpers__NS__info)('[vpn-split] Merged cert ready!');
632
641
  }
633
642
  // Verify
634
- if (!fse.existsSync(certPath) || !fse.existsSync(keyPath)) {
635
- Helpers__NS__error('[vpn-split] Files missing after generation!', false, true);
643
+ if (!lib_prod_3.fse.existsSync(certPath) || !lib_prod_3.fse.existsSync(keyPath)) {
644
+ (0, lib_prod_5.Helpers__NS__error)('[vpn-split] Files missing after generation!', false, true);
636
645
  }
637
646
  else {
638
- Helpers__NS__info(`[vpn-split] Trusted cert ready: ${allNames.length} hostnames covered`);
647
+ (0, lib_prod_5.Helpers__NS__info)(`[vpn-split] Trusted cert ready: ${allNames.length} hostnames covered`);
639
648
  }
640
649
  //#endregion
641
650
  }
642
651
  //#region private methods / prevent bad target for client
643
652
  async preventBadTargetForClient(vpnServerTarget) {
644
653
  if (!vpnServerTarget) {
645
- const currentLocalIp = await UtilsNetwork__NS__getFirstIpV4LocalActiveIpAddress();
646
- Helpers__NS__error(`[vpn-server] Please provide a correct target server.\n` +
654
+ const currentLocalIp = await (0, lib_prod_3.UtilsNetwork__NS__getFirstIpV4LocalActiveIpAddress)();
655
+ (0, lib_prod_5.Helpers__NS__error)(`[vpn-server] Please provide a correct target server.\n` +
647
656
  `Example:\n` +
648
657
  `vpn-server ${currentLocalIp}\n\n` +
649
658
  `Your local IP is: ${currentLocalIp}`, false, true);
650
659
  }
651
660
  }
652
661
  }
662
+ exports.VpnSplit = VpnSplit;
653
663
  //#region helper / gen msg
654
664
  const genMsg = `
655
665
  ################################################
@@ -660,36 +670,36 @@ const genMsg = `
660
670
  //#region helpers / save hosts
661
671
  function saveHosts(hosts, options) {
662
672
  const { saveHostInUserFolder } = options || {};
663
- if (___NS__isArray(hosts)) {
673
+ if ((0, lib_prod_3.___NS__isArray)(hosts)) {
664
674
  hosts = hosts.reduce((prev, curr) => {
665
- return ___NS__merge(prev, {
675
+ return (0, lib_prod_3.___NS__merge)(prev, {
666
676
  [curr.name]: curr,
667
677
  });
668
678
  }, {});
669
679
  }
670
680
  const toSave = parseHost(hosts, !!saveHostInUserFolder);
671
681
  if (saveHostInUserFolder) {
672
- Helpers__NS__writeFile(HOST_FILE_PATHUSER, toSave);
682
+ (0, lib_prod_5.Helpers__NS__writeFile)(HOST_FILE_PATHUSER, toSave);
673
683
  }
674
684
  else {
675
- Helpers__NS__writeFile(HOST_FILE_PATH, toSave);
685
+ (0, lib_prod_5.Helpers__NS__writeFile)(HOST_FILE_PATH, toSave);
676
686
  }
677
687
  }
678
688
  function saveHostsLocal(hosts, options) {
679
689
  const { saveHostInUserFolder } = options || {};
680
- if (___NS__isArray(hosts)) {
690
+ if ((0, lib_prod_3.___NS__isArray)(hosts)) {
681
691
  hosts = hosts.reduce((prev, curr) => {
682
- return ___NS__merge(prev, {
692
+ return (0, lib_prod_3.___NS__merge)(prev, {
683
693
  [curr.name]: curr,
684
694
  });
685
695
  }, {});
686
696
  }
687
697
  const toSave = parseHost(hosts, !!saveHostInUserFolder, true);
688
698
  if (saveHostInUserFolder) {
689
- Helpers__NS__writeFile(HOST_FILE_PATHUSER, toSave);
699
+ (0, lib_prod_5.Helpers__NS__writeFile)(HOST_FILE_PATHUSER, toSave);
690
700
  }
691
701
  else {
692
- Helpers__NS__writeFile(HOST_FILE_PATH, toSave);
702
+ (0, lib_prod_5.Helpers__NS__writeFile)(HOST_FILE_PATH, toSave);
693
703
  }
694
704
  }
695
705
  //#endregion
@@ -700,13 +710,13 @@ function parseHost(hosts, saveHostInUserFolder, useLocal = false) {
700
710
  ...DefaultEtcHosts,
701
711
  ...hosts,
702
712
  };
703
- ___NS__keys(hosts).forEach(hostName => {
713
+ (0, lib_prod_3.___NS__keys)(hosts).forEach(hostName => {
704
714
  const v = hosts[hostName];
705
715
  v.name = hostName;
706
716
  });
707
717
  return (genMsg +
708
718
  EOL +
709
- ___NS__keys(hosts)
719
+ (0, lib_prod_3.___NS__keys)(hosts)
710
720
  .map(hostName => {
711
721
  const v = hosts[hostName];
712
722
  if (v.skipUpdateOfServerEtcHosts) {
@@ -730,3 +740,4 @@ function parseHost(hosts, saveHostInUserFolder, useLocal = false) {
730
740
  genMsg);
731
741
  }
732
742
  //#endregion
743
+ //# sourceMappingURL=vpn-split.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpn-split.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vpn-split",
3
- "version": "21.0.21",
3
+ "version": "21.0.22",
4
4
  "scripts": {
5
5
  "taon init": "taon init",
6
6
  "taon start": "taon start",
package/websql/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # MyLib
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
- > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.