@stanleysun233/oneproxy-cli 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/monitor.d.ts CHANGED
@@ -1,13 +1,43 @@
1
1
  import type { CliContext } from './main.ts';
2
- type MonitorProxy = {
3
- port: number;
4
- close: () => Promise<void>;
2
+ type ProcessInfo = {
3
+ pid: number;
4
+ parentPid: number;
5
+ name: string;
6
+ };
7
+ type Endpoint = {
8
+ address: string;
9
+ port: number | null;
10
+ };
11
+ type MonitorLogEvent = {
12
+ timestamp: string;
13
+ source: 'netstat' | 'procfs' | 'lsof';
14
+ process: string;
15
+ pid: number;
16
+ protocol: 'tcp' | 'udp';
17
+ localAddress: string;
18
+ localPort: number | null;
19
+ remoteAddress: string;
20
+ remotePort: number | null;
21
+ remoteHost: string;
22
+ domain: string | null;
23
+ domainSource: null;
24
+ state: string | null;
5
25
  };
6
26
  declare function monitorLogName(executable: string, now?: Date): string;
7
- declare function startMonitorProxy(logPath: string, onActivity?: () => void): Promise<MonitorProxy>;
27
+ declare function parseEndpoint(value: string): Endpoint;
28
+ declare function parseWindowsNetstat(output: string): MonitorLogEvent[];
29
+ declare function parseWindowsProcesses(output: string): ProcessInfo[];
30
+ declare function watchedProcesses(rootPid: number, previousPids: Set<number>, processes: ProcessInfo[]): Set<number>;
31
+ declare function parseLinuxEndpoint(value: string, family: 'ipv4' | 'ipv6'): Endpoint;
32
+ declare function parseLsof(output: string): MonitorLogEvent[];
8
33
  export declare function monitorCommand(args: string[], _context: CliContext): Promise<number>;
9
34
  export declare const monitorInternals: {
10
35
  monitorLogName: typeof monitorLogName;
11
- startMonitorProxy: typeof startMonitorProxy;
36
+ parseEndpoint: typeof parseEndpoint;
37
+ parseLsof: typeof parseLsof;
38
+ parseLinuxEndpoint: typeof parseLinuxEndpoint;
39
+ parseWindowsNetstat: typeof parseWindowsNetstat;
40
+ parseWindowsProcesses: typeof parseWindowsProcesses;
41
+ watchedProcesses: typeof watchedProcesses;
12
42
  };
13
43
  export {};
package/dist/monitor.js CHANGED
@@ -1,10 +1,22 @@
1
- import { spawn } from 'node:child_process';
1
+ import { execFile, spawn } from 'node:child_process';
2
2
  import * as fs from 'node:fs/promises';
3
- import * as http from 'node:http';
4
- import * as net from 'node:net';
5
3
  import * as path from 'node:path';
6
- import { allocateLoopbackPort, closeServer, listenHttpServer, loopbackHost } from "./daemon/lifecycle.js";
4
+ import { promisify } from 'node:util';
5
+ const execFileAsync = promisify(execFile);
7
6
  const monitorIdleTimeoutSeconds = 300;
7
+ const linuxTcpStates = {
8
+ '01': 'ESTABLISHED',
9
+ '02': 'SYN_SENT',
10
+ '03': 'SYN_RECV',
11
+ '04': 'FIN_WAIT1',
12
+ '05': 'FIN_WAIT2',
13
+ '06': 'TIME_WAIT',
14
+ '07': 'CLOSE',
15
+ '08': 'CLOSE_WAIT',
16
+ '09': 'LAST_ACK',
17
+ '0A': 'LISTEN',
18
+ '0B': 'CLOSING'
19
+ };
8
20
  function monitorLogName(executable, now = new Date()) {
9
21
  const stamp = now.toISOString().replace(/[-:]/g, '').replace(/\..+$/, '').replace('T', '-');
10
22
  const app = path.basename(executable).replace(/[^a-zA-Z0-9._-]+/g, '_') || 'app';
@@ -12,167 +24,335 @@ function monitorLogName(executable, now = new Date()) {
12
24
  }
13
25
  async function appendMonitorEvent(logPath, event) {
14
26
  await fs.appendFile(logPath, `${JSON.stringify(event)}\n`, { mode: 0o600 });
27
+ process.stderr.write(`onep monitor: ${event.process}[${event.pid}] ${event.protocol} ${event.remoteHost}:${event.remotePort ?? '*'} ${event.state ?? ''}\n`);
28
+ }
29
+ function quoteWindowsCommand(value) {
30
+ return `"${value.replace(/"/g, '""')}"`;
15
31
  }
16
- function parseConnectTarget(value) {
32
+ function spawnMonitoredCommand(executable, args) {
33
+ if (process.platform === 'win32') {
34
+ const shell = process.env.ComSpec || 'cmd.exe';
35
+ const command = ['start', '""', '/wait', quoteWindowsCommand(executable), ...args.map(quoteWindowsCommand)].join(' ');
36
+ return spawn(shell, ['/d', '/s', '/c', command], {
37
+ stdio: 'inherit',
38
+ windowsHide: false
39
+ });
40
+ }
41
+ return spawn(executable, args, { stdio: 'inherit' });
42
+ }
43
+ function parseEndpoint(value) {
44
+ if (value === '*:*' || value === '*') {
45
+ return { address: '*', port: null };
46
+ }
47
+ if (value.startsWith('[')) {
48
+ const end = value.lastIndexOf(']:');
49
+ if (end >= 0) {
50
+ const port = Number(value.slice(end + 2));
51
+ return { address: value.slice(1, end), port: Number.isInteger(port) ? port : null };
52
+ }
53
+ }
17
54
  const index = value.lastIndexOf(':');
18
- if (index <= 0) {
19
- return null;
55
+ if (index < 0) {
56
+ return { address: value, port: null };
20
57
  }
21
- const host = value.slice(0, index).replace(/^\[|\]$/g, '').toLowerCase();
22
58
  const port = Number(value.slice(index + 1));
23
- if (!host || !Number.isInteger(port) || port < 1 || port > 65535) {
24
- return null;
59
+ return {
60
+ address: value.slice(0, index),
61
+ port: Number.isInteger(port) ? port : null
62
+ };
63
+ }
64
+ function parseWindowsNetstat(output) {
65
+ const events = [];
66
+ for (const line of output.split(/\r?\n/)) {
67
+ const parts = line.trim().split(/\s+/);
68
+ const protocol = parts[0]?.toLowerCase();
69
+ if (protocol !== 'tcp' && protocol !== 'udp') {
70
+ continue;
71
+ }
72
+ const local = parseEndpoint(parts[1] ?? '');
73
+ const remote = parseEndpoint(parts[2] ?? '');
74
+ const state = protocol === 'tcp' ? parts[3] ?? null : null;
75
+ const pidText = protocol === 'tcp' ? parts[4] : parts[3];
76
+ const pid = Number(pidText);
77
+ if (!Number.isInteger(pid)) {
78
+ continue;
79
+ }
80
+ events.push(baseEvent('netstat', pid, protocol, local, remote, state));
25
81
  }
26
- return { host, port };
27
- }
28
- function parseHttpTarget(request) {
29
- const rawUrl = request.url ?? '';
30
- const hostHeader = Array.isArray(request.headers.host) ? request.headers.host[0] : request.headers.host;
31
- const url = /^[a-z][a-z0-9+.-]*:\/\//i.test(rawUrl)
32
- ? new URL(rawUrl)
33
- : new URL(rawUrl || '/', `http://${hostHeader ?? ''}`);
34
- const host = url.hostname.toLowerCase();
35
- const port = url.port ? Number(url.port) : url.protocol === 'https:' ? 443 : 80;
36
- if (!host || !Number.isInteger(port)) {
37
- return null;
82
+ return events;
83
+ }
84
+ function parseWindowsProcesses(output) {
85
+ const processes = [];
86
+ for (const line of output.split(/\r?\n/)) {
87
+ const trimmed = line.trim();
88
+ if (!trimmed || trimmed.startsWith('Node,')) {
89
+ continue;
90
+ }
91
+ const parts = trimmed.split(',');
92
+ const name = parts[1];
93
+ const parentPid = Number(parts[2]);
94
+ const pid = Number(parts[3]);
95
+ if (!name || !Number.isInteger(parentPid) || !Number.isInteger(pid)) {
96
+ continue;
97
+ }
98
+ processes.push({ name, parentPid, pid });
38
99
  }
100
+ return processes;
101
+ }
102
+ function watchedProcesses(rootPid, previousPids, processes) {
103
+ const watched = new Set([rootPid, ...previousPids]);
104
+ let changed = true;
105
+ while (changed) {
106
+ changed = false;
107
+ for (const processInfo of processes) {
108
+ if (watched.has(processInfo.parentPid) && !watched.has(processInfo.pid)) {
109
+ watched.add(processInfo.pid);
110
+ changed = true;
111
+ }
112
+ }
113
+ }
114
+ return watched;
115
+ }
116
+ async function windowsProcesses() {
117
+ const { stdout } = await execFileAsync('wmic', ['process', 'get', 'Name,ParentProcessId,ProcessId', '/format:csv'], { windowsHide: true, maxBuffer: 1024 * 1024 * 8 });
118
+ return parseWindowsProcesses(stdout);
119
+ }
120
+ async function windowsConnections() {
121
+ const { stdout } = await execFileAsync('netstat', ['-ano'], { windowsHide: true, maxBuffer: 1024 * 1024 * 16 });
122
+ return parseWindowsNetstat(stdout);
123
+ }
124
+ function baseEvent(source, pid, protocol, local, remote, state) {
39
125
  return {
40
- host,
41
- port,
42
- path: `${url.pathname}${url.search}`,
43
- target: url.toString()
126
+ timestamp: new Date().toISOString(),
127
+ source,
128
+ process: '',
129
+ pid,
130
+ protocol,
131
+ localAddress: local.address,
132
+ localPort: local.port,
133
+ remoteAddress: remote.address,
134
+ remotePort: remote.port,
135
+ remoteHost: remote.address,
136
+ domain: null,
137
+ domainSource: null,
138
+ state
44
139
  };
45
140
  }
46
- async function startMonitorProxy(logPath, onActivity) {
47
- const server = http.createServer((request, response) => {
48
- onActivity?.();
49
- void proxyHttpRequest(logPath, request, response);
50
- });
51
- server.on('connect', (request, clientSocket, head) => {
52
- onActivity?.();
53
- void proxyConnect(logPath, request, clientSocket, head);
54
- });
55
- const port = await allocateLoopbackPort();
56
- await listenHttpServer(server, port);
141
+ function eventKey(event) {
142
+ return [
143
+ event.pid,
144
+ event.protocol,
145
+ event.localAddress,
146
+ event.localPort ?? '*',
147
+ event.remoteAddress,
148
+ event.remotePort ?? '*',
149
+ event.state ?? ''
150
+ ].join('|');
151
+ }
152
+ async function sampleWindowsConnections(rootPid, trackedPids, seenEvents, logPath) {
153
+ const processes = await windowsProcesses();
154
+ const watched = watchedProcesses(rootPid, trackedPids, processes);
155
+ for (const pid of watched) {
156
+ trackedPids.add(pid);
157
+ }
158
+ const processNames = new Map(processes.map((processInfo) => [processInfo.pid, processInfo.name]));
159
+ return writeNewEvents(await windowsConnections(), watched, processNames, seenEvents, logPath);
160
+ }
161
+ async function linuxProcesses() {
162
+ const processes = [];
163
+ for (const entry of await fs.readdir('/proc')) {
164
+ const pid = Number(entry);
165
+ if (!Number.isInteger(pid)) {
166
+ continue;
167
+ }
168
+ const stat = await fs.readFile(`/proc/${pid}/stat`, 'utf8').catch(() => '');
169
+ const end = stat.lastIndexOf(')');
170
+ if (end < 0) {
171
+ continue;
172
+ }
173
+ const name = stat.slice(stat.indexOf('(') + 1, end);
174
+ const fields = stat.slice(end + 2).split(/\s+/);
175
+ const parentPid = Number(fields[1]);
176
+ if (Number.isInteger(parentPid)) {
177
+ processes.push({ pid, parentPid, name });
178
+ }
179
+ }
180
+ return processes;
181
+ }
182
+ function parseLinuxIpv4(hex) {
183
+ const parts = hex.match(/../g) ?? [];
184
+ return parts.reverse().map((part) => Number.parseInt(part, 16)).join('.');
185
+ }
186
+ function parseLinuxIpv6(hex) {
187
+ const groups = hex.match(/.{8}/g) ?? [];
188
+ return groups.map((group) => {
189
+ const bytes = group.match(/../g) ?? [];
190
+ return [
191
+ `${bytes[1] ?? '00'}${bytes[0] ?? '00'}`,
192
+ `${bytes[3] ?? '00'}${bytes[2] ?? '00'}`
193
+ ].join(':');
194
+ }).join(':').replace(/(^|:)0(:0)+(:|$)/, '::');
195
+ }
196
+ function parseLinuxEndpoint(value, family) {
197
+ const [addressHex, portHex] = value.split(':');
198
+ const port = Number.parseInt(portHex ?? '', 16);
57
199
  return {
58
- port,
59
- close: () => closeServer(server)
200
+ address: family === 'ipv4' ? parseLinuxIpv4(addressHex ?? '') : parseLinuxIpv6(addressHex ?? ''),
201
+ port: Number.isInteger(port) ? port : null
60
202
  };
61
203
  }
62
- async function proxyConnect(logPath, request, clientSocket, head) {
63
- const target = parseConnectTarget(request.url ?? '');
64
- if (!target) {
65
- clientSocket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
66
- return;
67
- }
68
- const upstreamSocket = net.connect(target.port, target.host, () => {
69
- clientSocket.write('HTTP/1.1 200 Connection Established\r\n\r\n');
70
- if (head.length > 0) {
71
- upstreamSocket.write(head);
72
- }
73
- clientSocket.pipe(upstreamSocket);
74
- upstreamSocket.pipe(clientSocket);
75
- void appendMonitorEvent(logPath, {
76
- timestamp: new Date().toISOString(),
77
- protocol: 'connect',
78
- method: 'CONNECT',
79
- host: target.host,
80
- port: target.port,
81
- target: `${target.host}:${target.port}`,
82
- status: 200
83
- });
84
- });
85
- upstreamSocket.on('error', () => {
86
- void appendMonitorEvent(logPath, {
87
- timestamp: new Date().toISOString(),
88
- protocol: 'connect',
89
- method: 'CONNECT',
90
- host: target.host,
91
- port: target.port,
92
- target: `${target.host}:${target.port}`,
93
- status: 502
94
- });
95
- clientSocket.destroy();
96
- });
97
- clientSocket.on('error', () => upstreamSocket.destroy());
98
- }
99
- async function proxyHttpRequest(logPath, request, response) {
100
- const target = parseHttpTarget(request);
101
- if (!target) {
102
- response.writeHead(400);
103
- response.end();
104
- return;
105
- }
106
- const headers = { ...request.headers };
107
- delete headers['proxy-connection'];
108
- const upstreamRequest = http.request({
109
- host: target.host,
110
- port: target.port,
111
- method: request.method,
112
- path: target.path,
113
- headers
114
- }, (upstreamResponse) => {
115
- const status = upstreamResponse.statusCode ?? 502;
116
- response.writeHead(status, upstreamResponse.headers);
117
- upstreamResponse.pipe(response);
118
- upstreamResponse.once('end', () => {
119
- void appendMonitorEvent(logPath, {
120
- timestamp: new Date().toISOString(),
121
- protocol: 'http',
122
- method: request.method ?? 'GET',
123
- host: target.host,
124
- port: target.port,
125
- target: target.target,
126
- status
127
- });
128
- });
129
- });
130
- upstreamRequest.on('error', () => {
131
- response.writeHead(502);
132
- response.end();
133
- void appendMonitorEvent(logPath, {
134
- timestamp: new Date().toISOString(),
135
- protocol: 'http',
136
- method: request.method ?? 'GET',
137
- host: target.host,
138
- port: target.port,
139
- target: target.target,
140
- status: 502
141
- });
142
- });
143
- request.pipe(upstreamRequest);
204
+ async function linuxSocketInodes(pids) {
205
+ const inodes = new Map();
206
+ for (const pid of pids) {
207
+ const fdDir = `/proc/${pid}/fd`;
208
+ const entries = await fs.readdir(fdDir).catch(() => []);
209
+ for (const entry of entries) {
210
+ const target = await fs.readlink(path.join(fdDir, entry)).catch(() => '');
211
+ const match = /^socket:\[(\d+)\]$/.exec(target);
212
+ if (match) {
213
+ inodes.set(match[1], pid);
214
+ }
215
+ }
216
+ }
217
+ return inodes;
218
+ }
219
+ async function parseLinuxConnectionFile(filePath, protocol, family, inodes) {
220
+ const content = await fs.readFile(filePath, 'utf8').catch(() => '');
221
+ const events = [];
222
+ for (const line of content.split(/\r?\n/).slice(1)) {
223
+ const parts = line.trim().split(/\s+/);
224
+ if (parts.length < 10) {
225
+ continue;
226
+ }
227
+ const pid = inodes.get(parts[9]);
228
+ if (!pid) {
229
+ continue;
230
+ }
231
+ const local = parseLinuxEndpoint(parts[1], family);
232
+ const remote = parseLinuxEndpoint(parts[2], family);
233
+ const state = protocol === 'tcp' ? linuxTcpStates[(parts[3] ?? '').toUpperCase()] ?? parts[3] : null;
234
+ if ((remote.address === '0.0.0.0' || remote.address === '::') && remote.port === 0) {
235
+ continue;
236
+ }
237
+ events.push(baseEvent('procfs', pid, protocol, local, remote, state));
238
+ }
239
+ return events;
144
240
  }
145
- function monitorEnv(port) {
146
- const proxy = `http://${loopbackHost}:${port}`;
241
+ async function linuxConnections(pids) {
242
+ const inodes = await linuxSocketInodes(pids);
243
+ return [
244
+ ...await parseLinuxConnectionFile('/proc/net/tcp', 'tcp', 'ipv4', inodes),
245
+ ...await parseLinuxConnectionFile('/proc/net/udp', 'udp', 'ipv4', inodes),
246
+ ...await parseLinuxConnectionFile('/proc/net/tcp6', 'tcp', 'ipv6', inodes),
247
+ ...await parseLinuxConnectionFile('/proc/net/udp6', 'udp', 'ipv6', inodes)
248
+ ];
249
+ }
250
+ async function sampleLinuxConnections(rootPid, trackedPids, seenEvents, logPath) {
251
+ const processes = await linuxProcesses();
252
+ const watched = watchedProcesses(rootPid, trackedPids, processes);
253
+ for (const pid of watched) {
254
+ trackedPids.add(pid);
255
+ }
256
+ const processNames = new Map(processes.map((processInfo) => [processInfo.pid, processInfo.name]));
257
+ return writeNewEvents(await linuxConnections(watched), watched, processNames, seenEvents, logPath);
258
+ }
259
+ async function darwinProcesses() {
260
+ const { stdout } = await execFileAsync('ps', ['-axo', 'pid=,ppid=,comm='], { maxBuffer: 1024 * 1024 * 8 });
261
+ const processes = [];
262
+ for (const line of stdout.split(/\r?\n/)) {
263
+ const match = /^\s*(\d+)\s+(\d+)\s+(.+)$/.exec(line);
264
+ if (match) {
265
+ processes.push({ pid: Number(match[1]), parentPid: Number(match[2]), name: path.basename(match[3]) });
266
+ }
267
+ }
268
+ return processes;
269
+ }
270
+ function parseLsofEndpoint(value) {
271
+ const stateMatch = /\(([^)]+)\)$/.exec(value);
272
+ const clean = value.replace(/\s+\([^)]+\)$/, '');
273
+ const [localText, remoteText] = clean.split('->');
274
+ if (!remoteText) {
275
+ return null;
276
+ }
147
277
  return {
148
- HTTP_PROXY: proxy,
149
- HTTPS_PROXY: proxy,
150
- ALL_PROXY: proxy,
151
- http_proxy: proxy,
152
- https_proxy: proxy,
153
- all_proxy: proxy,
154
- NO_PROXY: 'localhost,127.0.0.1,::1',
155
- no_proxy: 'localhost,127.0.0.1,::1',
156
- ONEPROXY_MONITOR_ACTIVE: '1',
157
- ONEPROXY_MONITOR_PORT: String(port)
278
+ local: parseEndpoint(localText),
279
+ remote: parseEndpoint(remoteText),
280
+ state: stateMatch?.[1] ?? null
158
281
  };
159
282
  }
160
- function quoteWindowsCommand(value) {
161
- return `"${value.replace(/"/g, '""')}"`;
283
+ function parseLsof(output) {
284
+ const events = [];
285
+ for (const line of output.split(/\r?\n/).slice(1)) {
286
+ const parts = line.trim().split(/\s+/);
287
+ const pid = Number(parts[1]);
288
+ if (!Number.isInteger(pid)) {
289
+ continue;
290
+ }
291
+ const node = parts[7]?.toLowerCase();
292
+ const protocol = node === 'tcp' || node === 'udp' ? node : null;
293
+ if (!protocol) {
294
+ continue;
295
+ }
296
+ const endpoint = parseLsofEndpoint(parts.slice(8).join(' '));
297
+ if (!endpoint) {
298
+ continue;
299
+ }
300
+ const event = baseEvent('lsof', pid, protocol, endpoint.local, endpoint.remote, endpoint.state);
301
+ event.process = parts[0] ?? '';
302
+ events.push(event);
303
+ }
304
+ return events;
162
305
  }
163
- function spawnWindowsCommand(executable, args, env) {
164
- const shell = process.env.ComSpec || 'cmd.exe';
165
- const command = ['start', '""', '/wait', quoteWindowsCommand(executable), ...args.map(quoteWindowsCommand)].join(' ');
166
- return spawn(shell, ['/d', '/s', '/c', command], {
167
- stdio: 'inherit',
168
- windowsHide: false,
169
- env
170
- });
306
+ async function sampleDarwinConnections(rootPid, trackedPids, seenEvents, logPath) {
307
+ const processes = await darwinProcesses();
308
+ const watched = watchedProcesses(rootPid, trackedPids, processes);
309
+ for (const pid of watched) {
310
+ trackedPids.add(pid);
311
+ }
312
+ const { stdout } = await execFileAsync('lsof', ['-nP', '-iTCP', '-iUDP'], { maxBuffer: 1024 * 1024 * 16 });
313
+ const processNames = new Map(processes.map((processInfo) => [processInfo.pid, processInfo.name]));
314
+ return writeNewEvents(parseLsof(stdout), watched, processNames, seenEvents, logPath);
315
+ }
316
+ async function writeNewEvents(events, watched, processNames, seenEvents, logPath) {
317
+ let eventCount = 0;
318
+ for (const event of events) {
319
+ if (!watched.has(event.pid)) {
320
+ continue;
321
+ }
322
+ const key = eventKey(event);
323
+ if (seenEvents.has(key)) {
324
+ continue;
325
+ }
326
+ seenEvents.add(key);
327
+ event.process = processNames.get(event.pid) ?? (event.process || `pid-${event.pid}`);
328
+ await appendMonitorEvent(logPath, event);
329
+ eventCount += 1;
330
+ }
331
+ return eventCount;
332
+ }
333
+ function connectionSampler() {
334
+ if (process.platform === 'win32') {
335
+ return sampleWindowsConnections;
336
+ }
337
+ if (process.platform === 'linux') {
338
+ return sampleLinuxConnections;
339
+ }
340
+ if (process.platform === 'darwin') {
341
+ return sampleDarwinConnections;
342
+ }
343
+ throw Object.assign(new Error(`onep monitor does not support ${process.platform}.`), { code: 'PLATFORM_UNSUPPORTED', exitCode: 2 });
171
344
  }
172
- async function waitForMonitorIdle(lastActivity) {
173
- while (Date.now() - lastActivity() < monitorIdleTimeoutSeconds * 1000) {
174
- const remaining = monitorIdleTimeoutSeconds * 1000 - (Date.now() - lastActivity());
175
- await new Promise((resolve) => setTimeout(resolve, Math.min(remaining, 1000)));
345
+ async function waitForMonitor(rootPid, logPath, childExit) {
346
+ const trackedPids = new Set();
347
+ const seenEvents = new Set();
348
+ const sampleConnections = connectionSampler();
349
+ let lastActivity = Date.now();
350
+ while (!childExit() || Date.now() - lastActivity < monitorIdleTimeoutSeconds * 1000) {
351
+ const count = await sampleConnections(rootPid, trackedPids, seenEvents, logPath);
352
+ if (count > 0) {
353
+ lastActivity = Date.now();
354
+ }
355
+ await new Promise((resolve) => setTimeout(resolve, 1000));
176
356
  }
177
357
  }
178
358
  export async function monitorCommand(args, _context) {
@@ -182,45 +362,30 @@ export async function monitorCommand(args, _context) {
182
362
  }
183
363
  const logPath = path.resolve(process.cwd(), monitorLogName(executable));
184
364
  await fs.writeFile(logPath, '', { flag: 'a', mode: 0o600 });
185
- let lastActivity = Date.now();
186
- const proxy = await startMonitorProxy(logPath, () => {
187
- lastActivity = Date.now();
188
- });
189
365
  process.stderr.write(`onep monitor: writing ${logPath}\n`);
190
- const env = {
191
- ...process.env,
192
- ...monitorEnv(proxy.port)
193
- };
194
- const child = process.platform === 'win32'
195
- ? spawnWindowsCommand(executable, args.slice(1), env)
196
- : spawn(executable, args.slice(1), {
197
- stdio: 'inherit',
198
- env
199
- });
366
+ const child = spawnMonitoredCommand(executable, args.slice(1));
367
+ if (!child.pid) {
368
+ throw Object.assign(new Error('Unable to determine monitor launcher pid.'), { code: 'MONITOR_UNAVAILABLE' });
369
+ }
370
+ let exited = false;
200
371
  return new Promise((resolve, reject) => {
201
- child.once('error', (error) => {
202
- proxy.close().then(() => {
203
- if (error.code === 'ENOENT') {
204
- reject(Object.assign(new Error(`Command not found: ${executable}`), { code: 'COMMAND_NOT_FOUND' }));
205
- return;
206
- }
207
- reject(error);
208
- }, reject);
209
- });
210
- child.once('exit', (code, signal) => {
211
- process.stderr.write(`onep monitor: command exited, stopping after ${monitorIdleTimeoutSeconds}s without requests\n`);
212
- waitForMonitorIdle(() => lastActivity).then(() => proxy.close()).then(() => {
213
- if (signal) {
214
- resolve(1);
215
- return;
216
- }
217
- resolve(code ?? 0);
218
- }, reject);
372
+ child.once('error', reject);
373
+ child.once('exit', () => {
374
+ exited = true;
375
+ process.stderr.write(`onep monitor: command exited, stopping after ${monitorIdleTimeoutSeconds}s without new connections\n`);
219
376
  });
377
+ waitForMonitor(child.pid, logPath, () => exited).then(() => {
378
+ resolve(child.exitCode ?? 0);
379
+ }, reject);
220
380
  });
221
381
  }
222
382
  export const monitorInternals = {
223
383
  monitorLogName,
224
- startMonitorProxy
384
+ parseEndpoint,
385
+ parseLsof,
386
+ parseLinuxEndpoint,
387
+ parseWindowsNetstat,
388
+ parseWindowsProcesses,
389
+ watchedProcesses
225
390
  };
226
391
  //# sourceMappingURL=monitor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../src/monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../src/monitor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stanleysun233/oneproxy-cli",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "OneProxy CLI session proxy client",
5
5
  "type": "module",
6
6
  "bin": {