procsi 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -469
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +1 -0
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/off.d.ts.map +1 -1
- package/dist/cli/commands/off.js +11 -2
- package/dist/cli/commands/off.js.map +1 -1
- package/dist/cli/commands/on.d.ts +33 -0
- package/dist/cli/commands/on.d.ts.map +1 -1
- package/dist/cli/commands/on.js +91 -3
- package/dist/cli/commands/on.js.map +1 -1
- package/dist/daemon/index.js +34 -2
- package/dist/daemon/index.js.map +1 -1
- package/dist/overrides/php.d.ts +15 -0
- package/dist/overrides/php.d.ts.map +1 -0
- package/dist/overrides/php.js +29 -0
- package/dist/overrides/php.js.map +1 -0
- package/dist/overrides/python.d.ts +19 -0
- package/dist/overrides/python.d.ts.map +1 -0
- package/dist/overrides/python.js +74 -0
- package/dist/overrides/python.js.map +1 -0
- package/dist/overrides/ruby.d.ts +17 -0
- package/dist/overrides/ruby.d.ts.map +1 -0
- package/dist/overrides/ruby.js +55 -0
- package/dist/overrides/ruby.js.map +1 -0
- package/dist/shared/daemon.js +1 -0
- package/dist/shared/daemon.js.map +1 -1
- package/dist/shared/project.d.ts +4 -0
- package/dist/shared/project.d.ts.map +1 -1
- package/dist/shared/project.js +4 -0
- package/dist/shared/project.js.map +1 -1
- package/dist/shared/proxy-info.d.ts.map +1 -1
- package/dist/shared/proxy-info.js +5 -0
- package/dist/shared/proxy-info.js.map +1 -1
- package/package.json +1 -1
|
@@ -32,5 +32,38 @@ export declare function formatNodeOptionsExport(preloadPath: string): string;
|
|
|
32
32
|
* value (or unset it if it was empty before procsi set it).
|
|
33
33
|
*/
|
|
34
34
|
export declare function formatNodeOptionsRestore(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Generate shell statements that save the current PYTHONPATH and prepend
|
|
37
|
+
* the override directory so Python auto-imports our sitecustomize.py.
|
|
38
|
+
*
|
|
39
|
+
* Same idempotency pattern as formatNodeOptionsExport.
|
|
40
|
+
*/
|
|
41
|
+
export declare function formatPythonPathExport(overrideDir: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Generate shell statements that restore PYTHONPATH to its original value.
|
|
44
|
+
*/
|
|
45
|
+
export declare function formatPythonPathRestore(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Generate shell statements that save the current RUBYOPT and append
|
|
48
|
+
* a -r flag for the procsi intercept script.
|
|
49
|
+
*
|
|
50
|
+
* Same idempotency pattern as formatNodeOptionsExport.
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatRubyOptExport(overridePath: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Generate shell statements that restore RUBYOPT to its original value.
|
|
55
|
+
*/
|
|
56
|
+
export declare function formatRubyOptRestore(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Generate shell statements that save the current PHP_INI_SCAN_DIR and
|
|
59
|
+
* set it with a `:` prefix so PHP scans both default dirs and our override.
|
|
60
|
+
*
|
|
61
|
+
* Same idempotency pattern as formatNodeOptionsExport.
|
|
62
|
+
*/
|
|
63
|
+
export declare function formatPhpIniScanDirExport(overrideDir: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Generate shell statements that restore PHP_INI_SCAN_DIR to its original value.
|
|
66
|
+
*/
|
|
67
|
+
export declare function formatPhpIniScanDirRestore(): string;
|
|
35
68
|
export declare const onCommand: Command;
|
|
36
69
|
//# sourceMappingURL=on.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/on.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"on.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/on.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAIlE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CASnE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAMjD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAKhD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAK7C;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAOrE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAKnD;AAED,eAAO,MAAM,SAAS,SAoInB,CAAC"}
|
package/dist/cli/commands/on.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
1
2
|
import { Command } from "commander";
|
|
2
3
|
import { findOrCreateProjectRoot, ensureProcsiDir, getProcsiPaths } from "../../shared/project.js";
|
|
3
4
|
import { startDaemon } from "../../shared/daemon.js";
|
|
@@ -5,6 +6,9 @@ import { ControlClient } from "../../shared/control-client.js";
|
|
|
5
6
|
import { parseVerbosity } from "../../shared/logger.js";
|
|
6
7
|
import { getErrorMessage, getGlobalOptions } from "./helpers.js";
|
|
7
8
|
import { writeNodePreloadScript, getNodeEnvVars } from "../../overrides/node.js";
|
|
9
|
+
import { writePythonOverride } from "../../overrides/python.js";
|
|
10
|
+
import { writeRubyOverride } from "../../overrides/ruby.js";
|
|
11
|
+
import { writePhpOverride } from "../../overrides/php.js";
|
|
8
12
|
/**
|
|
9
13
|
* Escape a string for safe use inside double-quoted shell context.
|
|
10
14
|
* Within double quotes, `\`, `"`, `$`, `` ` ``, and `!` are interpreted by the shell.
|
|
@@ -71,6 +75,73 @@ export function formatNodeOptionsRestore() {
|
|
|
71
75
|
"unset PROCSI_ORIG_NODE_OPTIONS 2>/dev/null",
|
|
72
76
|
].join("\n");
|
|
73
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Generate shell statements that save the current PYTHONPATH and prepend
|
|
80
|
+
* the override directory so Python auto-imports our sitecustomize.py.
|
|
81
|
+
*
|
|
82
|
+
* Same idempotency pattern as formatNodeOptionsExport.
|
|
83
|
+
*/
|
|
84
|
+
export function formatPythonPathExport(overrideDir) {
|
|
85
|
+
const escaped = escapeDoubleQuoted(overrideDir);
|
|
86
|
+
return [
|
|
87
|
+
`export PROCSI_ORIG_PYTHONPATH="\${PROCSI_ORIG_PYTHONPATH-\${PYTHONPATH:-}}"`,
|
|
88
|
+
`export PYTHONPATH="${escaped}\${PROCSI_ORIG_PYTHONPATH:+:\${PROCSI_ORIG_PYTHONPATH}}"`,
|
|
89
|
+
].join("\n");
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Generate shell statements that restore PYTHONPATH to its original value.
|
|
93
|
+
*/
|
|
94
|
+
export function formatPythonPathRestore() {
|
|
95
|
+
return [
|
|
96
|
+
`test -n "\${PROCSI_ORIG_PYTHONPATH:-}" && export PYTHONPATH="\${PROCSI_ORIG_PYTHONPATH}" || unset PYTHONPATH 2>/dev/null`,
|
|
97
|
+
"unset PROCSI_ORIG_PYTHONPATH 2>/dev/null",
|
|
98
|
+
].join("\n");
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Generate shell statements that save the current RUBYOPT and append
|
|
102
|
+
* a -r flag for the procsi intercept script.
|
|
103
|
+
*
|
|
104
|
+
* Same idempotency pattern as formatNodeOptionsExport.
|
|
105
|
+
*/
|
|
106
|
+
export function formatRubyOptExport(overridePath) {
|
|
107
|
+
const escaped = escapeDoubleQuoted(overridePath);
|
|
108
|
+
return [
|
|
109
|
+
`export PROCSI_ORIG_RUBYOPT="\${PROCSI_ORIG_RUBYOPT-\${RUBYOPT:-}}"`,
|
|
110
|
+
`export RUBYOPT="\${PROCSI_ORIG_RUBYOPT:+\${PROCSI_ORIG_RUBYOPT} }-r ${escaped}"`,
|
|
111
|
+
].join("\n");
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Generate shell statements that restore RUBYOPT to its original value.
|
|
115
|
+
*/
|
|
116
|
+
export function formatRubyOptRestore() {
|
|
117
|
+
return [
|
|
118
|
+
`test -n "\${PROCSI_ORIG_RUBYOPT:-}" && export RUBYOPT="\${PROCSI_ORIG_RUBYOPT}" || unset RUBYOPT 2>/dev/null`,
|
|
119
|
+
"unset PROCSI_ORIG_RUBYOPT 2>/dev/null",
|
|
120
|
+
].join("\n");
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Generate shell statements that save the current PHP_INI_SCAN_DIR and
|
|
124
|
+
* set it with a `:` prefix so PHP scans both default dirs and our override.
|
|
125
|
+
*
|
|
126
|
+
* Same idempotency pattern as formatNodeOptionsExport.
|
|
127
|
+
*/
|
|
128
|
+
export function formatPhpIniScanDirExport(overrideDir) {
|
|
129
|
+
const escaped = escapeDoubleQuoted(overrideDir);
|
|
130
|
+
return [
|
|
131
|
+
`export PROCSI_ORIG_PHP_INI_SCAN_DIR="\${PROCSI_ORIG_PHP_INI_SCAN_DIR-\${PHP_INI_SCAN_DIR:-}}"`,
|
|
132
|
+
// The `:` prefix tells PHP to scan default dirs plus our override dir
|
|
133
|
+
`export PHP_INI_SCAN_DIR=":\${PROCSI_ORIG_PHP_INI_SCAN_DIR:+\${PROCSI_ORIG_PHP_INI_SCAN_DIR}:}${escaped}"`,
|
|
134
|
+
].join("\n");
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Generate shell statements that restore PHP_INI_SCAN_DIR to its original value.
|
|
138
|
+
*/
|
|
139
|
+
export function formatPhpIniScanDirRestore() {
|
|
140
|
+
return [
|
|
141
|
+
`test -n "\${PROCSI_ORIG_PHP_INI_SCAN_DIR:-}" && export PHP_INI_SCAN_DIR="\${PROCSI_ORIG_PHP_INI_SCAN_DIR}" || unset PHP_INI_SCAN_DIR 2>/dev/null`,
|
|
142
|
+
"unset PROCSI_ORIG_PHP_INI_SCAN_DIR 2>/dev/null",
|
|
143
|
+
].join("\n");
|
|
144
|
+
}
|
|
74
145
|
export const onCommand = new Command("on")
|
|
75
146
|
.description("Output shell export statements to start intercepting HTTP traffic")
|
|
76
147
|
.option("-l, --label <label>", "Label for this session")
|
|
@@ -111,8 +182,11 @@ export const onCommand = new Command("on")
|
|
|
111
182
|
},
|
|
112
183
|
});
|
|
113
184
|
const proxyUrl = `http://127.0.0.1:${proxyPort}`;
|
|
114
|
-
// Write
|
|
185
|
+
// Write runtime override scripts to .procsi/overrides/
|
|
115
186
|
writeNodePreloadScript(paths.proxyPreloadFile);
|
|
187
|
+
writePythonOverride(paths.pythonOverrideDir, paths.caCertFile);
|
|
188
|
+
writeRubyOverride(path.dirname(paths.rubyOverrideFile), paths.caCertFile);
|
|
189
|
+
writePhpOverride(paths.phpOverrideDir, paths.caCertFile);
|
|
116
190
|
// Register session with daemon
|
|
117
191
|
const client = new ControlClient(paths.controlSocketFile);
|
|
118
192
|
try {
|
|
@@ -124,11 +198,22 @@ export const onCommand = new Command("on")
|
|
|
124
198
|
// Lowercase variants — many Unix tools check lowercase only
|
|
125
199
|
http_proxy: proxyUrl,
|
|
126
200
|
https_proxy: proxyUrl,
|
|
127
|
-
// Python requests
|
|
201
|
+
// CA cert trust — covers Python requests, curl, OpenSSL-based clients
|
|
128
202
|
SSL_CERT_FILE: paths.caCertFile,
|
|
129
203
|
REQUESTS_CA_BUNDLE: paths.caCertFile,
|
|
204
|
+
CURL_CA_BUNDLE: paths.caCertFile,
|
|
130
205
|
// Node.js
|
|
131
206
|
NODE_EXTRA_CA_CERTS: paths.caCertFile,
|
|
207
|
+
// Deno
|
|
208
|
+
DENO_CERT: paths.caCertFile,
|
|
209
|
+
// Rust Cargo
|
|
210
|
+
CARGO_HTTP_CAINFO: paths.caCertFile,
|
|
211
|
+
// Git
|
|
212
|
+
GIT_SSL_CAINFO: paths.caCertFile,
|
|
213
|
+
// AWS CLI
|
|
214
|
+
AWS_CA_BUNDLE: paths.caCertFile,
|
|
215
|
+
// PHP HTTPoxy-safe proxy variable
|
|
216
|
+
CGI_HTTP_PROXY: proxyUrl,
|
|
132
217
|
// Node.js runtime overrides (global-agent + undici)
|
|
133
218
|
...getNodeEnvVars(proxyUrl),
|
|
134
219
|
// procsi session tracking
|
|
@@ -157,8 +242,11 @@ export const onCommand = new Command("on")
|
|
|
157
242
|
}
|
|
158
243
|
// Output env vars for eval
|
|
159
244
|
console.log(formatEnvVars(envVars));
|
|
160
|
-
//
|
|
245
|
+
// Runtime overrides require raw shell expansion, output separately
|
|
161
246
|
console.log(formatNodeOptionsExport(paths.proxyPreloadFile));
|
|
247
|
+
console.log(formatPythonPathExport(paths.pythonOverrideDir));
|
|
248
|
+
console.log(formatRubyOptExport(paths.rubyOverrideFile));
|
|
249
|
+
console.log(formatPhpIniScanDirExport(paths.phpOverrideDir));
|
|
162
250
|
// Output confirmation as a comment (shown but not executed)
|
|
163
251
|
const labelInfo = label ? ` (label: ${label})` : "";
|
|
164
252
|
console.log(`# procsi: intercepting traffic${labelInfo}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on.js","sourceRoot":"","sources":["../../../src/cli/commands/on.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"on.js","sourceRoot":"","sources":["../../../src/cli/commands/on.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/index.js
CHANGED
|
@@ -77,8 +77,11 @@ async function main() {
|
|
|
77
77
|
eventLog: interceptorEventLog,
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
|
-
// Find a
|
|
81
|
-
const
|
|
80
|
+
// Find a port for the proxy, preferring the previously used one
|
|
81
|
+
const preferred = fs.existsSync(paths.preferredPortFile)
|
|
82
|
+
? parseInt(fs.readFileSync(paths.preferredPortFile, "utf-8").trim(), 10) || undefined
|
|
83
|
+
: undefined;
|
|
84
|
+
const proxyPort = await findPreferredPort(preferred);
|
|
82
85
|
// Ensure daemon session exists (handles restarts gracefully)
|
|
83
86
|
const DAEMON_SESSION_ID = "daemon";
|
|
84
87
|
storage.ensureSession(DAEMON_SESSION_ID, "daemon", process.pid, "daemon");
|
|
@@ -97,6 +100,8 @@ async function main() {
|
|
|
97
100
|
});
|
|
98
101
|
// Write proxy port to file
|
|
99
102
|
writeProxyPort(projectRoot, proxy.port);
|
|
103
|
+
// Write preferred port for next restart
|
|
104
|
+
fs.writeFileSync(paths.preferredPortFile, proxy.port.toString(), "utf-8");
|
|
100
105
|
// Start control server
|
|
101
106
|
const daemonVersion = getProcsiVersion();
|
|
102
107
|
logger.info("Starting control server", {
|
|
@@ -156,6 +161,33 @@ async function main() {
|
|
|
156
161
|
process.on("SIGTERM", () => void shutdown("SIGTERM"));
|
|
157
162
|
process.on("SIGINT", () => void shutdown("SIGINT"));
|
|
158
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Try to bind to a specific port.
|
|
166
|
+
* Returns true if successful, false otherwise.
|
|
167
|
+
*/
|
|
168
|
+
async function tryBindPort(port) {
|
|
169
|
+
return new Promise((resolve) => {
|
|
170
|
+
const server = net.createServer();
|
|
171
|
+
server.listen(port, "127.0.0.1", () => {
|
|
172
|
+
server.close(() => resolve(true));
|
|
173
|
+
});
|
|
174
|
+
server.on("error", () => {
|
|
175
|
+
resolve(false);
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Find a port for the proxy, preferring the given port if available.
|
|
181
|
+
* Falls back to finding a free port if the preferred port is not available.
|
|
182
|
+
*/
|
|
183
|
+
async function findPreferredPort(preferred) {
|
|
184
|
+
if (preferred !== undefined) {
|
|
185
|
+
if (await tryBindPort(preferred)) {
|
|
186
|
+
return preferred;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return findFreePort();
|
|
190
|
+
}
|
|
159
191
|
/**
|
|
160
192
|
* Find a free port to use for the proxy.
|
|
161
193
|
*/
|
package/dist/daemon/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the contents of a procsi.ini file that configures PHP's
|
|
3
|
+
* curl and OpenSSL extensions to trust the proxy CA certificate.
|
|
4
|
+
*
|
|
5
|
+
* PHP INI directives don't require quotes around values.
|
|
6
|
+
*/
|
|
7
|
+
export declare function generatePhpOverrideIni(caCertPath: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Write the procsi.ini file to the given directory (typically
|
|
10
|
+
* `.procsi/php/`). Creates parent directories if needed.
|
|
11
|
+
*
|
|
12
|
+
* Returns the directory path (for use in PHP_INI_SCAN_DIR).
|
|
13
|
+
*/
|
|
14
|
+
export declare function writePhpOverride(outputDir: string, caCertPath: string): string;
|
|
15
|
+
//# sourceMappingURL=php.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../src/overrides/php.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK9E"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Generate the contents of a procsi.ini file that configures PHP's
|
|
5
|
+
* curl and OpenSSL extensions to trust the proxy CA certificate.
|
|
6
|
+
*
|
|
7
|
+
* PHP INI directives don't require quotes around values.
|
|
8
|
+
*/
|
|
9
|
+
export function generatePhpOverrideIni(caCertPath) {
|
|
10
|
+
return [
|
|
11
|
+
"; Generated by procsi — ensures PHP trusts the proxy CA certificate",
|
|
12
|
+
`curl.cainfo=${caCertPath}`,
|
|
13
|
+
`openssl.cafile=${caCertPath}`,
|
|
14
|
+
"",
|
|
15
|
+
].join("\n");
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Write the procsi.ini file to the given directory (typically
|
|
19
|
+
* `.procsi/php/`). Creates parent directories if needed.
|
|
20
|
+
*
|
|
21
|
+
* Returns the directory path (for use in PHP_INI_SCAN_DIR).
|
|
22
|
+
*/
|
|
23
|
+
export function writePhpOverride(outputDir, caCertPath) {
|
|
24
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
25
|
+
const iniPath = path.join(outputDir, "procsi.ini");
|
|
26
|
+
fs.writeFileSync(iniPath, generatePhpOverrideIni(caCertPath), "utf-8");
|
|
27
|
+
return outputDir;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=php.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../src/overrides/php.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO;QACL,qEAAqE;QACrE,eAAe,UAAU,EAAE;QAC3B,kBAAkB,UAAU,EAAE;QAC9B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,UAAkB;IACpE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACnD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACvE,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the contents of `sitecustomize.py` that patches Python
|
|
3
|
+
* HTTP clients to use the procsi proxy and trust the CA certificate.
|
|
4
|
+
*
|
|
5
|
+
* The script patches httplib2 to respect HTTP_PROXY env vars and
|
|
6
|
+
* use the procsi CA certificate. All patching is wrapped in try/except
|
|
7
|
+
* so failures never break the user's Python environment.
|
|
8
|
+
*
|
|
9
|
+
* The caCertPath is embedded as a string literal in the generated Python.
|
|
10
|
+
*/
|
|
11
|
+
export declare function generatePythonOverrideScript(caCertPath: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Write the `sitecustomize.py` override script to the given directory.
|
|
14
|
+
* Creates the directory recursively if it doesn't exist.
|
|
15
|
+
*
|
|
16
|
+
* Returns the absolute path to the directory where the script was written.
|
|
17
|
+
*/
|
|
18
|
+
export declare function writePythonOverride(outputDir: string, caCertPath: string): string;
|
|
19
|
+
//# sourceMappingURL=python.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/overrides/python.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA2CvE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYjF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Generate the contents of `sitecustomize.py` that patches Python
|
|
5
|
+
* HTTP clients to use the procsi proxy and trust the CA certificate.
|
|
6
|
+
*
|
|
7
|
+
* The script patches httplib2 to respect HTTP_PROXY env vars and
|
|
8
|
+
* use the procsi CA certificate. All patching is wrapped in try/except
|
|
9
|
+
* so failures never break the user's Python environment.
|
|
10
|
+
*
|
|
11
|
+
* The caCertPath is embedded as a string literal in the generated Python.
|
|
12
|
+
*/
|
|
13
|
+
export function generatePythonOverrideScript(caCertPath) {
|
|
14
|
+
// Escape the path for Python string literals (backslashes and quotes)
|
|
15
|
+
const escapedCaCertPath = caCertPath.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
|
|
16
|
+
return [
|
|
17
|
+
"# Generated by procsi — patches Python HTTP clients to use the proxy",
|
|
18
|
+
"",
|
|
19
|
+
"import os",
|
|
20
|
+
"",
|
|
21
|
+
"# Patch httplib2 to trust procsi CA certificate and use proxy",
|
|
22
|
+
"try:",
|
|
23
|
+
" import httplib2",
|
|
24
|
+
"",
|
|
25
|
+
" # Override CA_CERTS to trust procsi's CA",
|
|
26
|
+
` httplib2.CA_CERTS = '${escapedCaCertPath}'`,
|
|
27
|
+
"",
|
|
28
|
+
" # Patch Http.__init__ to inject proxy from HTTP_PROXY env var",
|
|
29
|
+
" _original_httplib2_init = httplib2.Http.__init__",
|
|
30
|
+
"",
|
|
31
|
+
" def _patched_httplib2_init(self, *args, **kwargs):",
|
|
32
|
+
" # If proxy_info not provided and HTTP_PROXY env var exists, inject it",
|
|
33
|
+
" if 'proxy_info' not in kwargs:",
|
|
34
|
+
" http_proxy = os.environ.get('HTTP_PROXY') or os.environ.get('http_proxy')",
|
|
35
|
+
" if http_proxy:",
|
|
36
|
+
" try:",
|
|
37
|
+
" from httplib2 import socks",
|
|
38
|
+
" import urllib.parse",
|
|
39
|
+
" parsed = urllib.parse.urlparse(http_proxy)",
|
|
40
|
+
" kwargs['proxy_info'] = httplib2.ProxyInfo(",
|
|
41
|
+
" socks.PROXY_TYPE_HTTP,",
|
|
42
|
+
" parsed.hostname,",
|
|
43
|
+
" parsed.port or 8080,",
|
|
44
|
+
" )",
|
|
45
|
+
" except Exception:",
|
|
46
|
+
" pass # Silently ignore proxy injection failures",
|
|
47
|
+
" _original_httplib2_init(self, *args, **kwargs)",
|
|
48
|
+
"",
|
|
49
|
+
" httplib2.Http.__init__ = _patched_httplib2_init",
|
|
50
|
+
"",
|
|
51
|
+
"except Exception:",
|
|
52
|
+
" pass # Silently ignore if httplib2 is not available or patching fails",
|
|
53
|
+
"",
|
|
54
|
+
].join("\n");
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Write the `sitecustomize.py` override script to the given directory.
|
|
58
|
+
* Creates the directory recursively if it doesn't exist.
|
|
59
|
+
*
|
|
60
|
+
* Returns the absolute path to the directory where the script was written.
|
|
61
|
+
*/
|
|
62
|
+
export function writePythonOverride(outputDir, caCertPath) {
|
|
63
|
+
try {
|
|
64
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
65
|
+
const scriptPath = path.join(outputDir, "sitecustomize.py");
|
|
66
|
+
const scriptContent = generatePythonOverrideScript(caCertPath);
|
|
67
|
+
fs.writeFileSync(scriptPath, scriptContent, "utf-8");
|
|
68
|
+
return outputDir;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new Error(`Failed to write Python override to ${outputDir}: ${error instanceof Error ? error.message : String(error)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/overrides/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAAkB;IAC7D,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEjF,OAAO;QACL,sEAAsE;QACtE,EAAE;QACF,WAAW;QACX,EAAE;QACF,+DAA+D;QAC/D,MAAM;QACN,qBAAqB;QACrB,EAAE;QACF,8CAA8C;QAC9C,4BAA4B,iBAAiB,GAAG;QAChD,EAAE;QACF,mEAAmE;QACnE,sDAAsD;QACtD,EAAE;QACF,wDAAwD;QACxD,+EAA+E;QAC/E,wCAAwC;QACxC,uFAAuF;QACvF,4BAA4B;QAC5B,sBAAsB;QACtB,gDAAgD;QAChD,yCAAyC;QACzC,gEAAgE;QAChE,gEAAgE;QAChE,gDAAgD;QAChD,0CAA0C;QAC1C,8CAA8C;QAC9C,uBAAuB;QACvB,mCAAmC;QACnC,sEAAsE;QACtE,wDAAwD;QACxD,EAAE;QACF,qDAAqD;QACrD,EAAE;QACF,mBAAmB;QACnB,4EAA4E;QAC5E,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,UAAkB;IACvE,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAC/D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,sCAAsC,SAAS,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7G,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the contents of the Ruby preload script that monkey-patches
|
|
3
|
+
* OpenSSL::X509::Store to add the procsi CA certificate to the default
|
|
4
|
+
* certificate store.
|
|
5
|
+
*
|
|
6
|
+
* This ensures gems with bundled CAs (Stripe, Cloudinary, etc.) also
|
|
7
|
+
* trust the proxy certificate.
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateRubyOverrideScript(caCertPath: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Write the Ruby override script to the given directory.
|
|
12
|
+
* Creates the directory recursively if needed.
|
|
13
|
+
*
|
|
14
|
+
* Returns the absolute path to the written file (not the directory).
|
|
15
|
+
*/
|
|
16
|
+
export declare function writeRubyOverride(outputDir: string, caCertPath: string): string;
|
|
17
|
+
//# sourceMappingURL=ruby.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../src/overrides/ruby.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgCrE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK/E"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Generate the contents of the Ruby preload script that monkey-patches
|
|
5
|
+
* OpenSSL::X509::Store to add the procsi CA certificate to the default
|
|
6
|
+
* certificate store.
|
|
7
|
+
*
|
|
8
|
+
* This ensures gems with bundled CAs (Stripe, Cloudinary, etc.) also
|
|
9
|
+
* trust the proxy certificate.
|
|
10
|
+
*/
|
|
11
|
+
export function generateRubyOverrideScript(caCertPath) {
|
|
12
|
+
// Escape single quotes in the path for Ruby string literal
|
|
13
|
+
const escapedCaCertPath = caCertPath.replace(/'/g, "\\'");
|
|
14
|
+
return [
|
|
15
|
+
"# Generated by procsi — ensures Ruby trusts the proxy CA certificate",
|
|
16
|
+
"",
|
|
17
|
+
"begin",
|
|
18
|
+
" require 'openssl'",
|
|
19
|
+
"",
|
|
20
|
+
" # Store the original set_default_paths method",
|
|
21
|
+
" module OpenSSL",
|
|
22
|
+
" module X509",
|
|
23
|
+
" class Store",
|
|
24
|
+
" alias_method :original_set_default_paths, :set_default_paths",
|
|
25
|
+
"",
|
|
26
|
+
" # Monkey-patch to add procsi CA cert alongside system certs",
|
|
27
|
+
" def set_default_paths",
|
|
28
|
+
" original_set_default_paths",
|
|
29
|
+
` procsi_ca_path = '${escapedCaCertPath}'`,
|
|
30
|
+
" if File.exist?(procsi_ca_path)",
|
|
31
|
+
" add_file(procsi_ca_path)",
|
|
32
|
+
" end",
|
|
33
|
+
" end",
|
|
34
|
+
" end",
|
|
35
|
+
" end",
|
|
36
|
+
" end",
|
|
37
|
+
"rescue => e",
|
|
38
|
+
" # Silently fail to avoid breaking the user's Ruby application",
|
|
39
|
+
"end",
|
|
40
|
+
"",
|
|
41
|
+
].join("\n");
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Write the Ruby override script to the given directory.
|
|
45
|
+
* Creates the directory recursively if needed.
|
|
46
|
+
*
|
|
47
|
+
* Returns the absolute path to the written file (not the directory).
|
|
48
|
+
*/
|
|
49
|
+
export function writeRubyOverride(outputDir, caCertPath) {
|
|
50
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
51
|
+
const outputPath = path.join(outputDir, "procsi_intercept.rb");
|
|
52
|
+
fs.writeFileSync(outputPath, generateRubyOverrideScript(caCertPath), "utf-8");
|
|
53
|
+
return outputPath;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=ruby.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../src/overrides/ruby.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC3D,2DAA2D;IAC3D,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE1D,OAAO;QACL,sEAAsE;QACtE,EAAE;QACF,OAAO;QACP,qBAAqB;QACrB,EAAE;QACF,iDAAiD;QACjD,kBAAkB;QAClB,iBAAiB;QACjB,mBAAmB;QACnB,sEAAsE;QACtE,EAAE;QACF,qEAAqE;QACrE,+BAA+B;QAC/B,sCAAsC;QACtC,+BAA+B,iBAAiB,GAAG;QACnD,0CAA0C;QAC1C,sCAAsC;QACtC,eAAe;QACf,aAAa;QACb,WAAW;QACX,SAAS;QACT,OAAO;QACP,aAAa;QACb,iEAAiE;QACjE,KAAK;QACL,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;IACrE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAC/D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,0BAA0B,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/shared/daemon.js
CHANGED
|
@@ -211,6 +211,7 @@ async function waitForDaemonStop(pid, timeoutMs) {
|
|
|
211
211
|
}
|
|
212
212
|
/**
|
|
213
213
|
* Clean up daemon files (socket, port file, pid file).
|
|
214
|
+
* Note: preferredPortFile is intentionally not deleted so it persists across restarts.
|
|
214
215
|
*/
|
|
215
216
|
function cleanupDaemonFiles(paths) {
|
|
216
217
|
const files = [paths.controlSocketFile, paths.proxyPortFile, paths.pidFile];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/shared/daemon.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/shared/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;GAEG;AACH,SAAS,aAAa;IACpB,4CAA4C;IAC5C,oDAAoD;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC7D,CAAC;AAQD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE1C,uBAAuB;IACvB,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2CAA2C;IAC3C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,WAAqB,MAAM;IAE3B,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9B,OAAO,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,OAAuC;IAEvC,mDAAmD;IACnD,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAE1E,2BAA2B;IAC3B,IAAI,MAAM,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAE1C,gBAAgB;QAChB,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;QAEtC,IAAI,aAAa,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;YAClD,4BAA4B;YAC5B,IAAI,iBAAiB,EAAE,CAAC;gBACtB,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACzE,OAAO,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,QAAkB;IAChE,kCAAkC;IAClC,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE1C,8CAA8C;IAC9C,mEAAmE;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAEtC,4EAA4E;IAC5E,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,EACJ,YAAY,EAAE,SAAS,EACvB,wBAAwB,EAAE,aAAa,EACvC,GAAG,QAAQ,EACZ,GAAG,OAAO,CAAC,GAAG,CAAC;IAEhB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;QACxC,GAAG,EAAE;YACH,GAAG,QAAQ;YACX,YAAY,EAAE,WAAW;YACzB,gBAAgB,EAAE,QAAQ;SAC3B;QACD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC;KAC5B,CAAC,CAAC;IAEH,6BAA6B;IAC7B,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,+CAA+C;IAC/C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAErD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAmB;IAClD,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAEvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,kBAAkB;IAC5B,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,iDAAiD;QACjD,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC1C,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE7B,0BAA0B;IAC1B,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEnC,+BAA+B;IAC/B,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,SAAiB;IACjE,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;QAC1C,4BAA4B;QAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACzE,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,8BAA8B;gBAC9B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAC1D,IAAI,CAAC;oBACH,IAAI,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;wBACxB,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,iEAAiE;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACzD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;IACzD,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,SAAiB;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,KAAwC;IAClE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/shared/project.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare function ensureProcsiDir(projectRoot: string): string;
|
|
|
37
37
|
export declare function getProcsiPaths(projectRoot: string): {
|
|
38
38
|
procsiDir: string;
|
|
39
39
|
proxyPortFile: string;
|
|
40
|
+
preferredPortFile: string;
|
|
40
41
|
controlSocketFile: string;
|
|
41
42
|
databaseFile: string;
|
|
42
43
|
caKeyFile: string;
|
|
@@ -46,6 +47,9 @@ export declare function getProcsiPaths(projectRoot: string): {
|
|
|
46
47
|
configFile: string;
|
|
47
48
|
interceptorsDir: string;
|
|
48
49
|
proxyPreloadFile: string;
|
|
50
|
+
pythonOverrideDir: string;
|
|
51
|
+
rubyOverrideFile: string;
|
|
52
|
+
phpOverrideDir: string;
|
|
49
53
|
};
|
|
50
54
|
/**
|
|
51
55
|
* Read the proxy port from the .procsi directory.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/shared/project.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,GAAE,MAAsB,EAChC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CA8BpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,GAAE,MAAsB,EAChC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAyBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/shared/project.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,GAAE,MAAsB,EAChC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CA8BpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,GAAE,MAAsB,EAChC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAyBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM;;;;;;;;;;;;;;;;EAoBjD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGtE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAGrE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQrD"}
|
package/dist/shared/project.js
CHANGED
|
@@ -109,6 +109,7 @@ export function getProcsiPaths(projectRoot) {
|
|
|
109
109
|
return {
|
|
110
110
|
procsiDir,
|
|
111
111
|
proxyPortFile: path.join(procsiDir, "proxy.port"),
|
|
112
|
+
preferredPortFile: path.join(procsiDir, "preferred.port"),
|
|
112
113
|
controlSocketFile: path.join(procsiDir, "control.sock"),
|
|
113
114
|
databaseFile: path.join(procsiDir, "requests.db"),
|
|
114
115
|
caKeyFile: path.join(procsiDir, "ca-key.pem"),
|
|
@@ -118,6 +119,9 @@ export function getProcsiPaths(projectRoot) {
|
|
|
118
119
|
configFile: path.join(procsiDir, "config.json"),
|
|
119
120
|
interceptorsDir: path.join(procsiDir, "interceptors"),
|
|
120
121
|
proxyPreloadFile: path.join(procsiDir, "proxy-preload.cjs"),
|
|
122
|
+
pythonOverrideDir: path.join(procsiDir, "overrides", "python"),
|
|
123
|
+
rubyOverrideFile: path.join(procsiDir, "overrides", "ruby", "procsi_intercept.rb"),
|
|
124
|
+
phpOverrideDir: path.join(procsiDir, "overrides", "php"),
|
|
121
125
|
};
|
|
122
126
|
}
|
|
123
127
|
/**
|