bdy 1.12.8-beta → 1.12.8-dev-pipeline-run

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 (156) hide show
  1. package/distTs/package.json +1 -1
  2. package/package.json +1 -1
  3. package/distTs/bin/cli.js +0 -5
  4. package/distTs/src/agent/agent.js +0 -328
  5. package/distTs/src/agent/linux.js +0 -124
  6. package/distTs/src/agent/manager.js +0 -519
  7. package/distTs/src/agent/osx.js +0 -146
  8. package/distTs/src/agent/socket/client.js +0 -178
  9. package/distTs/src/agent/socket/tunnel.js +0 -237
  10. package/distTs/src/agent/socket.js +0 -242
  11. package/distTs/src/agent/system.js +0 -179
  12. package/distTs/src/agent/wait.js +0 -23
  13. package/distTs/src/agent/windows.js +0 -159
  14. package/distTs/src/agent.js +0 -302
  15. package/distTs/src/api/agent.js +0 -99
  16. package/distTs/src/api/buddy.js +0 -139
  17. package/distTs/src/api/socket.js +0 -159
  18. package/distTs/src/cfg.js +0 -234
  19. package/distTs/src/command/agent/disable.js +0 -27
  20. package/distTs/src/command/agent/enable.js +0 -27
  21. package/distTs/src/command/agent/install.js +0 -117
  22. package/distTs/src/command/agent/restart.js +0 -27
  23. package/distTs/src/command/agent/run.js +0 -19
  24. package/distTs/src/command/agent/start.js +0 -28
  25. package/distTs/src/command/agent/status.js +0 -34
  26. package/distTs/src/command/agent/stop.js +0 -28
  27. package/distTs/src/command/agent/target/disable.js +0 -27
  28. package/distTs/src/command/agent/target/enable.js +0 -27
  29. package/distTs/src/command/agent/target/status.js +0 -32
  30. package/distTs/src/command/agent/target.js +0 -15
  31. package/distTs/src/command/agent/tunnel/http.js +0 -43
  32. package/distTs/src/command/agent/tunnel/list.js +0 -27
  33. package/distTs/src/command/agent/tunnel/remove.js +0 -28
  34. package/distTs/src/command/agent/tunnel/start.js +0 -34
  35. package/distTs/src/command/agent/tunnel/status.js +0 -31
  36. package/distTs/src/command/agent/tunnel/tcp.js +0 -43
  37. package/distTs/src/command/agent/tunnel/tls.js +0 -43
  38. package/distTs/src/command/agent/tunnel.js +0 -23
  39. package/distTs/src/command/agent/uninstall.js +0 -44
  40. package/distTs/src/command/agent/update.js +0 -38
  41. package/distTs/src/command/agent/version.js +0 -21
  42. package/distTs/src/command/agent.js +0 -35
  43. package/distTs/src/command/config/add/http.js +0 -25
  44. package/distTs/src/command/config/add/tcp.js +0 -25
  45. package/distTs/src/command/config/add/tls.js +0 -25
  46. package/distTs/src/command/config/add.js +0 -15
  47. package/distTs/src/command/config/get/region.js +0 -15
  48. package/distTs/src/command/config/get/timeout.js +0 -15
  49. package/distTs/src/command/config/get/token.js +0 -15
  50. package/distTs/src/command/config/get/tunnel.js +0 -19
  51. package/distTs/src/command/config/get/tunnels.js +0 -15
  52. package/distTs/src/command/config/get/whitelist.js +0 -15
  53. package/distTs/src/command/config/get.js +0 -21
  54. package/distTs/src/command/config/remove/tunnel.js +0 -19
  55. package/distTs/src/command/config/remove.js +0 -11
  56. package/distTs/src/command/config/set/region.js +0 -17
  57. package/distTs/src/command/config/set/timeout.js +0 -17
  58. package/distTs/src/command/config/set/token.js +0 -16
  59. package/distTs/src/command/config/set/whitelist.js +0 -17
  60. package/distTs/src/command/config/set.js +0 -17
  61. package/distTs/src/command/config.js +0 -17
  62. package/distTs/src/command/http.js +0 -30
  63. package/distTs/src/command/pre.js +0 -49
  64. package/distTs/src/command/start.js +0 -28
  65. package/distTs/src/command/tcp.js +0 -30
  66. package/distTs/src/command/tls.js +0 -30
  67. package/distTs/src/command/tunnel/config.js +0 -17
  68. package/distTs/src/command/tunnel/http.js +0 -31
  69. package/distTs/src/command/tunnel/start.js +0 -28
  70. package/distTs/src/command/tunnel/tcp.js +0 -30
  71. package/distTs/src/command/tunnel/tls.js +0 -30
  72. package/distTs/src/command/tunnel.js +0 -19
  73. package/distTs/src/command/ut/upload.js +0 -108
  74. package/distTs/src/command/ut.js +0 -12
  75. package/distTs/src/command/version.js +0 -13
  76. package/distTs/src/command/vt/close.js +0 -27
  77. package/distTs/src/command/vt/compare/validation.js +0 -173
  78. package/distTs/src/command/vt/compare.js +0 -97
  79. package/distTs/src/command/vt/exec.js +0 -81
  80. package/distTs/src/command/vt/installBrowser.js +0 -20
  81. package/distTs/src/command/vt/scrap.js +0 -193
  82. package/distTs/src/command/vt/storybook.js +0 -92
  83. package/distTs/src/command/vt.js +0 -22
  84. package/distTs/src/format.js +0 -174
  85. package/distTs/src/index.js +0 -34
  86. package/distTs/src/input.js +0 -270
  87. package/distTs/src/logger.js +0 -95
  88. package/distTs/src/output/interactive/tunnel.js +0 -860
  89. package/distTs/src/output/noninteractive/agent/tunnels.js +0 -43
  90. package/distTs/src/output/noninteractive/config/tunnel.js +0 -65
  91. package/distTs/src/output/noninteractive/config/tunnels.js +0 -18
  92. package/distTs/src/output/noninteractive/tunnel.js +0 -59
  93. package/distTs/src/output.js +0 -143
  94. package/distTs/src/server/cert.js +0 -52
  95. package/distTs/src/server/http1.js +0 -75
  96. package/distTs/src/server/http2.js +0 -78
  97. package/distTs/src/server/sftp.js +0 -497
  98. package/distTs/src/server/ssh.js +0 -446
  99. package/distTs/src/server/tls.js +0 -41
  100. package/distTs/src/ssh/client.js +0 -197
  101. package/distTs/src/texts.js +0 -421
  102. package/distTs/src/tunnel/agent.js +0 -103
  103. package/distTs/src/tunnel/api/agent.js +0 -100
  104. package/distTs/src/tunnel/api/buddy.js +0 -141
  105. package/distTs/src/tunnel/cfg.js +0 -243
  106. package/distTs/src/tunnel/compression.js +0 -44
  107. package/distTs/src/tunnel/dns.js +0 -53
  108. package/distTs/src/tunnel/html/503.html +0 -338
  109. package/distTs/src/tunnel/html.js +0 -33
  110. package/distTs/src/tunnel/http/log.js +0 -218
  111. package/distTs/src/tunnel/http/serve.js +0 -133
  112. package/distTs/src/tunnel/http/stream.js +0 -34
  113. package/distTs/src/tunnel/http.js +0 -508
  114. package/distTs/src/tunnel/identification.js +0 -103
  115. package/distTs/src/tunnel/latency.js +0 -83
  116. package/distTs/src/tunnel/output/interactive/tunnel.js +0 -867
  117. package/distTs/src/tunnel/output/noninteractive/agent/tunnels.js +0 -45
  118. package/distTs/src/tunnel/output/noninteractive/config/tunnel.js +0 -67
  119. package/distTs/src/tunnel/output/noninteractive/config/tunnels.js +0 -20
  120. package/distTs/src/tunnel/output/noninteractive/tunnel.js +0 -61
  121. package/distTs/src/tunnel/server/cert.js +0 -54
  122. package/distTs/src/tunnel/server/http1.js +0 -80
  123. package/distTs/src/tunnel/server/http2.js +0 -84
  124. package/distTs/src/tunnel/server/sftp.js +0 -514
  125. package/distTs/src/tunnel/server/ssh.js +0 -464
  126. package/distTs/src/tunnel/server/tls.js +0 -47
  127. package/distTs/src/tunnel/ssh/client.js +0 -211
  128. package/distTs/src/tunnel/tcp.js +0 -113
  129. package/distTs/src/tunnel/tunnel.js +0 -1010
  130. package/distTs/src/tunnel.js +0 -656
  131. package/distTs/src/types/ciInfo.js +0 -10
  132. package/distTs/src/types/options.js +0 -2
  133. package/distTs/src/types/plugin.js +0 -2
  134. package/distTs/src/types/queue.js +0 -2
  135. package/distTs/src/types/requests.js +0 -2
  136. package/distTs/src/types/resources.js +0 -2
  137. package/distTs/src/types/schemas.js +0 -54
  138. package/distTs/src/types/scrape.js +0 -2
  139. package/distTs/src/types/snapshots.js +0 -2
  140. package/distTs/src/types/storybook.js +0 -2
  141. package/distTs/src/types/tunnel.js +0 -141
  142. package/distTs/src/unitTest/ci.js +0 -108
  143. package/distTs/src/unitTest/requests.js +0 -72
  144. package/distTs/src/utils.js +0 -378
  145. package/distTs/src/visualTest/browser.js +0 -39
  146. package/distTs/src/visualTest/ci.js +0 -241
  147. package/distTs/src/visualTest/context.js +0 -52
  148. package/distTs/src/visualTest/exec.js +0 -51
  149. package/distTs/src/visualTest/linkUtils.js +0 -21
  150. package/distTs/src/visualTest/queue.js +0 -43
  151. package/distTs/src/visualTest/requests.js +0 -365
  152. package/distTs/src/visualTest/resources.js +0 -259
  153. package/distTs/src/visualTest/server.js +0 -109
  154. package/distTs/src/visualTest/snapshots.js +0 -129
  155. package/distTs/src/visualTest/utils/parseDom.js +0 -238
  156. package/distTs/src/visualTest/validation.js +0 -18
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const utils_js_1 = require("../../../utils.js");
7
- const texts_js_1 = require("../../../texts.js");
8
- const format_1 = __importDefault(require("../../../format"));
9
- class OutputNoninteractiveAgentTunnels {
10
- constructor(terminal, tunnels) {
11
- this.terminal = terminal;
12
- this.tunnels = tunnels;
13
- }
14
- start(output) {
15
- if (!this.tunnels.length) {
16
- output.exitNormal(texts_js_1.NO_TUNNELS_STARTED);
17
- }
18
- else {
19
- const tunnels = [
20
- ['Id', 'Type', 'Target / Latency', 'Entry / Latency', 'Status'],
21
- ];
22
- this.tunnels.forEach((tunnel) => {
23
- let target;
24
- let status;
25
- if (tunnel.serve)
26
- target = format_1.default.serve(tunnel.serve) + ' / 0ms';
27
- else
28
- target =
29
- format_1.default.target(tunnel.type, tunnel.target) +
30
- ` / ${format_1.default.latency(tunnel.targetLatency)}`;
31
- const entry = format_1.default.entry(tunnel) + ` / ${format_1.default.latency(tunnel.regionLatency)}`;
32
- if (tunnel.status === utils_js_1.TUNNEL_OPEN)
33
- status = 'Open';
34
- else
35
- status = 'Closed';
36
- tunnels.push([tunnel.id, tunnel.type, target, entry, status]);
37
- });
38
- output.table(tunnels);
39
- output.exitNormal();
40
- }
41
- }
42
- }
43
- exports.default = OutputNoninteractiveAgentTunnels;
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const utils_js_1 = require("../../../utils.js");
7
- const format_1 = __importDefault(require("../../../format"));
8
- class OutputNoninteractiveConfigTunnel {
9
- constructor(terminal, tunnel) {
10
- this.terminal = terminal;
11
- this.tunnel = tunnel;
12
- }
13
- start(output) {
14
- const data = [
15
- ['Name', this.tunnel.name],
16
- ['Type', format_1.default.type(this.tunnel.type)],
17
- ];
18
- if (this.tunnel.type === utils_js_1.TUNNEL_HTTP && this.tunnel.serve) {
19
- data.push(['Serve', format_1.default.serve(this.tunnel.serve)]);
20
- }
21
- else {
22
- data.push([
23
- 'Target',
24
- format_1.default.target(this.tunnel.type, this.tunnel.target),
25
- ]);
26
- }
27
- data.push(['Region', format_1.default.tunnelRegion(this.tunnel.region)]);
28
- data.push(['Timeout', format_1.default.tunnelTimeout(this.tunnel.timeout)]);
29
- data.push(['Whitelist', format_1.default.tunnelWhitelist(this.tunnel.whitelist)]);
30
- if (this.tunnel.type === utils_js_1.TUNNEL_HTTP) {
31
- data.push(['Host Header', format_1.default.hostHeader(this.tunnel.host)]);
32
- data.push([
33
- 'Basic Auth',
34
- format_1.default.basicAuth(this.tunnel.login, this.tunnel.password),
35
- ]);
36
- data.push([
37
- 'User Agents',
38
- format_1.default.tunnelUserAgent(this.tunnel.useragents),
39
- ]);
40
- data.push(['Request Headers', format_1.default.tunnelHeaders(this.tunnel.headers)]);
41
- data.push([
42
- 'Response Headers',
43
- format_1.default.tunnelHeaders(this.tunnel.responseHeaders),
44
- ]);
45
- data.push([
46
- 'Circuit Breaker',
47
- format_1.default.tunnelCircuitBreaker(this.tunnel.circuitBreaker),
48
- ]);
49
- data.push(['Log Requests', format_1.default.yesNo(this.tunnel.log)]);
50
- data.push(['TLS Auth', format_1.default.yesNo(!!this.tunnel.ca)]);
51
- data.push(['TLS Verify', format_1.default.yesNo(this.tunnel.verify)]);
52
- data.push(['Force HTTP/2', format_1.default.yesNo(this.tunnel.http2)]);
53
- data.push(['Compression', format_1.default.yesNo(this.tunnel.compression)]);
54
- }
55
- else if (this.tunnel.type === utils_js_1.TUNNEL_TLS) {
56
- data.push(['Terminate TLS At', this.tunnel.terminate]);
57
- data.push(['TLS Key', format_1.default.yesNo(!!this.tunnel.key)]);
58
- data.push(['TLS Cert', format_1.default.yesNo(!!this.tunnel.cert)]);
59
- data.push(['TLS Auth', format_1.default.yesNo(!!this.tunnel.ca)]);
60
- }
61
- output.table(data);
62
- output.exitNormal();
63
- }
64
- }
65
- exports.default = OutputNoninteractiveConfigTunnel;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class OutputNoninteractiveConfigTunnels {
4
- constructor(terminal, tunnels) {
5
- this.terminal = terminal;
6
- this.tunnels = tunnels;
7
- }
8
- start(output) {
9
- const data = [['Name', 'Type', 'Target']];
10
- Object.keys(this.tunnels).forEach((name) => {
11
- const t = this.tunnels[name];
12
- data.push([name, t.type, String(t.target)]);
13
- });
14
- output.table(data);
15
- output.exitNormal();
16
- }
17
- }
18
- exports.default = OutputNoninteractiveConfigTunnels;
@@ -1,59 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const utils_1 = require("../../utils");
7
- const format_1 = __importDefault(require("../../format"));
8
- class OutputNoninteractiveTunnel {
9
- constructor(terminal, tunnel) {
10
- this.tunnel = tunnel;
11
- this.terminal = terminal;
12
- }
13
- status(t, status) {
14
- this.terminal(`${format_1.default.date()}: Tunnel ${t.type} to ${t.serve || t.target} ${status}\n`);
15
- }
16
- onOpen(t) {
17
- this.status(t, `open. Entry: ${format_1.default.entry(t)}`);
18
- }
19
- onClosed(t) {
20
- this.status(t, 'closed');
21
- }
22
- onTcpOpen(t) {
23
- this.status(t, 'has incoming tcp connection');
24
- }
25
- onTcpClosed(t) {
26
- this.status(t, 'closed tcp connection');
27
- }
28
- onTlsOpen(t) {
29
- this.status(t, 'has incoming tls connection');
30
- }
31
- onTlsClosed(t) {
32
- this.status(t, 'closed tls connection');
33
- }
34
- onHttpIdentified(t, type) {
35
- this.status(t, `identified as ${type}`);
36
- }
37
- onHttpRequest(t, logRequest) {
38
- this.status(t, `Request ${logRequest.method} ${logRequest.url}`);
39
- }
40
- onHttpResponse(t, logRequest) {
41
- this.status(t, `Response ${logRequest.method} ${logRequest.url} ${logRequest.status} in ${logRequest.time}ms`);
42
- }
43
- onStopped() {
44
- process.exit();
45
- }
46
- start() {
47
- this.tunnel.on(utils_1.TUNNEL_EVENT_OPEN, (t) => this.onOpen(t));
48
- this.tunnel.on(utils_1.TUNNEL_EVENT_CLOSED, (t) => this.onClosed(t));
49
- this.tunnel.on(utils_1.TUNNEL_EVENT_TCP_OPEN, (t) => this.onTcpOpen(t));
50
- this.tunnel.on(utils_1.TUNNEL_EVENT_TCP_CLOSED, (t) => this.onTcpClosed(t));
51
- this.tunnel.on(utils_1.TUNNEL_EVENT_TLS_OPEN, (t) => this.onTlsOpen(t));
52
- this.tunnel.on(utils_1.TUNNEL_EVENT_TLS_CLOSED, (t) => this.onTlsClosed(t));
53
- this.tunnel.on(utils_1.TUNNEL_EVENT_HTTP_IDENTIFIED, (t, type) => this.onHttpIdentified(t, type));
54
- this.tunnel.on(utils_1.TUNNEL_EVENT_HTTP_REQUEST, (t, logRequest) => this.onHttpRequest(t, logRequest));
55
- this.tunnel.on(utils_1.TUNNEL_EVENT_HTTP_RESPONSE, (t, logRequest) => this.onHttpResponse(t, logRequest));
56
- this.tunnel.on(utils_1.TUNNEL_EVENT_STOPPED, (t) => this.onStopped(t));
57
- }
58
- }
59
- exports.default = OutputNoninteractiveTunnel;
@@ -1,143 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- // @ts-ignore
7
- const termkit_no_lazy_require_1 = __importDefault(require("terminal-kit/lib/termkit-no-lazy-require"));
8
- const tunnel_1 = __importDefault(require("./tunnel/output/interactive/tunnel"));
9
- const tunnel_2 = __importDefault(require("./tunnel/output/noninteractive/tunnel"));
10
- const tunnel_3 = __importDefault(require("./tunnel/output/noninteractive/config/tunnel"));
11
- const tunnels_1 = __importDefault(require("./tunnel/output/noninteractive/config/tunnels"));
12
- const texts_1 = require("./texts");
13
- const tunnels_2 = __importDefault(require("./tunnel/output/noninteractive/agent/tunnels"));
14
- const context_1 = require("./visualTest/context");
15
- const terminal = termkit_no_lazy_require_1.default.terminal;
16
- class Output {
17
- static s;
18
- static exitSuccess(msg) {
19
- this.killSpinner();
20
- terminal.green(`${msg}\n`);
21
- process.exit(0);
22
- }
23
- static exitNormal(msg) {
24
- this.killSpinner();
25
- if (msg)
26
- terminal(`${msg}\n`);
27
- process.exit(0);
28
- }
29
- static newline() {
30
- terminal('\n');
31
- }
32
- static normal(txt) {
33
- terminal(`${txt}\n`);
34
- }
35
- static warning(txt) {
36
- terminal.yellow(`${txt}\n`);
37
- }
38
- static error(txt) {
39
- terminal.red(`${txt}\n`);
40
- }
41
- static debug(txt) {
42
- if (context_1.debug) {
43
- this.normal(txt);
44
- }
45
- }
46
- static async debugAction(text, action) {
47
- if (context_1.debug) {
48
- const t1 = performance.now();
49
- const result = await action;
50
- const t2 = performance.now();
51
- this.normal(`${text} time: ${t2 - t1}`);
52
- return result;
53
- }
54
- else {
55
- return action;
56
- }
57
- }
58
- static killSpinner() {
59
- if (this.s) {
60
- this.s.destroy();
61
- this.s = null;
62
- terminal.eraseLine();
63
- terminal.left();
64
- }
65
- }
66
- static async spinner(txt) {
67
- if (!this.s && terminal.isTTY) {
68
- this.s = await terminal.spinner();
69
- if (txt)
70
- terminal(` ${txt}`);
71
- }
72
- }
73
- static agentTunnels(tunnels) {
74
- const on = new tunnels_2.default(terminal, tunnels);
75
- on.start(this);
76
- }
77
- static tunnelInteractive(tunnel) {
78
- this.killSpinner();
79
- const oi = new tunnel_1.default(terminal, tunnel);
80
- oi.start();
81
- }
82
- static tunnelNonInteractive(tunnel) {
83
- this.killSpinner();
84
- const on = new tunnel_2.default(terminal, tunnel);
85
- on.start();
86
- }
87
- static newCliVersion(version) {
88
- terminal.gray((0, texts_1.TXT_NEW_CLI_VERSION)(version));
89
- }
90
- static newCliDockerVersion(version) {
91
- terminal.gray((0, texts_1.TXT_NEW_CLI_DOCKER_VERSION)(version));
92
- }
93
- static newAgentVersion() {
94
- terminal.gray(texts_1.TXT_NEW_AGENT_VERSION);
95
- }
96
- static tunnel(tunnel) {
97
- if (terminal.isTTY)
98
- this.tunnelInteractive(tunnel);
99
- else
100
- this.tunnelNonInteractive(tunnel);
101
- }
102
- static table(data) {
103
- // apply padding
104
- for (let i = 0; i < data.length; i += 1) {
105
- for (let j = 0; j < data[i].length; j += 1) {
106
- const s = data[i][j].split('\n');
107
- const tmp = [];
108
- for (let k = 0; k < s.length; k += 1) {
109
- tmp.push(` ${s[k]} `);
110
- }
111
- data[i][j] = tmp.join('\n');
112
- }
113
- }
114
- terminal.table(data, {
115
- fit: false,
116
- });
117
- }
118
- static configTunnels(tunnels) {
119
- const on = new tunnels_1.default(terminal, tunnels);
120
- on.start(this);
121
- }
122
- static configTunnel(tunnel) {
123
- const on = new tunnel_3.default(terminal, tunnel);
124
- on.start(this);
125
- }
126
- static exitError(err) {
127
- this.killSpinner();
128
- terminal.fullscreen(false);
129
- terminal.hideCursor(false);
130
- terminal.grabInput(false);
131
- let msg;
132
- if (err instanceof Error) {
133
- msg = err.message;
134
- if (process.env.DEBUG === '1')
135
- msg += `\n${err.stack}`;
136
- }
137
- else
138
- msg = err;
139
- terminal.red.error(`${msg}\n`);
140
- process.exit(1);
141
- }
142
- }
143
- exports.default = Output;
@@ -1,52 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_forge_1 = __importDefault(require("node-forge"));
7
- const toPositiveHex = (hexString) => {
8
- let hexAsInt = parseInt(hexString[0], 16);
9
- if (hexAsInt < 8) {
10
- return hexString;
11
- }
12
- hexAsInt -= 8;
13
- return hexAsInt.toString() + hexString.substring(1);
14
- };
15
- class ServerCert {
16
- constructor() {
17
- const keyPair = node_forge_1.default.pki.rsa.generateKeyPair(2048);
18
- const cert = node_forge_1.default.pki.createCertificate();
19
- cert.serialNumber = toPositiveHex(node_forge_1.default.util.bytesToHex(node_forge_1.default.random.getBytesSync(9)));
20
- cert.validity.notBefore = new Date();
21
- const notAfter = new Date();
22
- notAfter.setTime(notAfter.getTime() + 622080000000);
23
- cert.validity.notAfter = notAfter;
24
- const attrs = [
25
- {
26
- name: 'commonName',
27
- value: 'buddy.tunnel',
28
- },
29
- ];
30
- cert.setSubject(attrs);
31
- cert.setIssuer(attrs);
32
- cert.publicKey = keyPair.publicKey;
33
- cert.setExtensions([
34
- {
35
- name: 'basicConstraints',
36
- cA: true,
37
- },
38
- {
39
- name: 'keyUsage',
40
- keyCertSign: true,
41
- digitalSignature: true,
42
- nonRepudiation: true,
43
- keyEncipherment: true,
44
- dataEncipherment: true,
45
- },
46
- ]);
47
- cert.sign(keyPair.privateKey, node_forge_1.default.md.sha256.create());
48
- this.key = node_forge_1.default.pki.privateKeyToPem(keyPair.privateKey);
49
- this.cert = node_forge_1.default.pki.certificateToPem(cert);
50
- }
51
- }
52
- exports.default = ServerCert;
@@ -1,75 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const events_1 = __importDefault(require("events"));
7
- const logger_js_1 = __importDefault(require("../logger.js"));
8
- const uuid_1 = require("uuid");
9
- const http_1 = __importDefault(require("http"));
10
- const texts_js_1 = require("../texts.js");
11
- const utils_1 = require("../utils");
12
- class ServerHttp1 extends events_1.default {
13
- constructor(host) {
14
- super();
15
- this.server = http_1.default.createServer((req, res) => this.processRequest(req, res, host));
16
- this.server.on('connection', (socket) => {
17
- socket.id = (0, uuid_1.v4)();
18
- this.emit(utils_1.HTTP1_SOCKET_OPEN, socket);
19
- socket.once('close', () => {
20
- this.emit(utils_1.HTTP1_SOCKET_CLOSED, socket);
21
- });
22
- });
23
- this.server.listen();
24
- }
25
- stop() {
26
- this.server.close();
27
- this.server.removeAllListeners();
28
- this.server = null;
29
- }
30
- handleSshTunnel(stream, info, ip) {
31
- logger_js_1.default.debug((0, texts_js_1.LOG_HTTP1_CONNECTION)(ip));
32
- stream.remoteAddress = ip;
33
- this.server.emit('connection', stream);
34
- }
35
- retryRequest(logRequest) {
36
- const address = this.server.address();
37
- if (!address || !address.port)
38
- return;
39
- let req = http_1.default.request({
40
- host: 'localhost',
41
- port: address.port,
42
- method: logRequest.method,
43
- setHost: false,
44
- path: logRequest.url,
45
- headers: logRequest.headers,
46
- });
47
- if (logRequest.requestBody.data.length > 0)
48
- req.write(logRequest.requestBody.data);
49
- req.on('response', (res) => {
50
- res.resume();
51
- });
52
- req.on('close', () => {
53
- req.removeAllListeners();
54
- req = null;
55
- });
56
- req.end();
57
- }
58
- checkHostHeader(req, res, host) {
59
- const headerHost = (req.headers.host || '').split(':')[0];
60
- if (headerHost === host)
61
- return true;
62
- else {
63
- res.statusCode = 421;
64
- res.end('Misdirected Request');
65
- return false;
66
- }
67
- }
68
- async processRequest(req, res, host) {
69
- if (!this.checkHostHeader(req, res, host))
70
- return;
71
- logger_js_1.default.debug((0, texts_js_1.LOG_HTTP1_REQUEST)(req.method, req.url));
72
- this.emit(utils_1.HTTP1_REQUEST, req, res);
73
- }
74
- }
75
- exports.default = ServerHttp1;
@@ -1,78 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const events_1 = __importDefault(require("events"));
7
- const http2_1 = __importDefault(require("http2"));
8
- const logger_js_1 = __importDefault(require("../logger.js"));
9
- const uuid_1 = require("uuid");
10
- const texts_js_1 = require("../texts.js");
11
- const utils_1 = require("../utils");
12
- class ServerHttp2 extends events_1.default {
13
- constructor(host) {
14
- super();
15
- this.server = http2_1.default.createServer((req, res) => this.processRequest(req, res, host));
16
- this.server.on('session', (session) => {
17
- session.id = (0, uuid_1.v4)();
18
- this.emit(utils_1.HTTP2_SESSION_OPEN, session);
19
- session.once('close', () => {
20
- this.emit(utils_1.HTTP2_SESSION_CLOSED, session);
21
- });
22
- });
23
- this.server.listen();
24
- }
25
- stop() {
26
- this.server.close();
27
- this.server.removeAllListeners();
28
- this.server = null;
29
- }
30
- handleSshTunnel(stream, info, ip) {
31
- logger_js_1.default.debug((0, texts_js_1.LOG_HTTP2_CONNECTION)(ip));
32
- stream.remoteAddress = ip;
33
- this.server.emit('connection', stream);
34
- }
35
- retryRequest(logRequest) {
36
- const address = this.server.address();
37
- if (!address || !address.port)
38
- return;
39
- let client = http2_1.default.connect(`http://localhost:${address.port}`, {
40
- maxSessionMemory: 100,
41
- noDelay: true
42
- });
43
- let req = client.request(logRequest.headers);
44
- if (logRequest.requestBody.data.length > 0)
45
- req.write(logRequest.requestBody.data);
46
- req.on('response', () => {
47
- req.resume();
48
- });
49
- req.on('error', (err) => {
50
- logger_js_1.default.debug(texts_js_1.LOG_ERROR);
51
- logger_js_1.default.debug(err);
52
- });
53
- req.on('close', () => {
54
- req.removeAllListeners();
55
- client.close();
56
- req = null;
57
- client = null;
58
- });
59
- req.end();
60
- }
61
- checkHostHeader(req, res, host) {
62
- const headerHost = (req.headers[':authority'] || '').split(':')[0];
63
- if (headerHost === host)
64
- return true;
65
- else {
66
- res.statusCode = 421;
67
- res.end('Misdirected Request');
68
- return false;
69
- }
70
- }
71
- async processRequest(req, res, host) {
72
- if (!this.checkHostHeader(req, res, host))
73
- return;
74
- logger_js_1.default.debug((0, texts_js_1.LOG_HTTP2_REQUEST)(req.method, req.url));
75
- this.emit(utils_1.HTTP2_REQUEST, req, res);
76
- }
77
- }
78
- exports.default = ServerHttp2;