portless 0.4.2 → 0.5.0
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/chunk-P3DHZHEZ.js +1091 -0
- package/dist/cli.js +839 -252
- package/dist/index.d.ts +37 -1
- package/dist/index.js +17 -3
- package/package.json +1 -1
- package/dist/chunk-JMRTQAVX.js +0 -783
|
@@ -0,0 +1,1091 @@
|
|
|
1
|
+
// src/utils.ts
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
function fixOwnership(...paths) {
|
|
4
|
+
const uid = process.env.SUDO_UID;
|
|
5
|
+
const gid = process.env.SUDO_GID;
|
|
6
|
+
if (!uid || process.getuid?.() !== 0) return;
|
|
7
|
+
for (const p of paths) {
|
|
8
|
+
try {
|
|
9
|
+
fs.chownSync(p, parseInt(uid, 10), parseInt(gid || uid, 10));
|
|
10
|
+
} catch {
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function isErrnoException(err) {
|
|
15
|
+
return err instanceof Error && "code" in err && typeof err.code === "string";
|
|
16
|
+
}
|
|
17
|
+
function escapeHtml(str) {
|
|
18
|
+
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
19
|
+
}
|
|
20
|
+
function formatUrl(hostname, proxyPort, tls = false) {
|
|
21
|
+
const proto = tls ? "https" : "http";
|
|
22
|
+
const defaultPort = tls ? 443 : 80;
|
|
23
|
+
return proxyPort === defaultPort ? `${proto}://${hostname}` : `${proto}://${hostname}:${proxyPort}`;
|
|
24
|
+
}
|
|
25
|
+
function parseHostname(input) {
|
|
26
|
+
let hostname = input.trim().replace(/^https?:\/\//, "").split("/")[0].toLowerCase();
|
|
27
|
+
if (!hostname || hostname === ".localhost") {
|
|
28
|
+
throw new Error("Hostname cannot be empty");
|
|
29
|
+
}
|
|
30
|
+
if (!hostname.endsWith(".localhost")) {
|
|
31
|
+
hostname = `${hostname}.localhost`;
|
|
32
|
+
}
|
|
33
|
+
const name = hostname.replace(/\.localhost$/, "");
|
|
34
|
+
if (name.includes("..")) {
|
|
35
|
+
throw new Error(`Invalid hostname "${name}": consecutive dots are not allowed`);
|
|
36
|
+
}
|
|
37
|
+
if (!/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/.test(name)) {
|
|
38
|
+
throw new Error(
|
|
39
|
+
`Invalid hostname "${name}": must contain only lowercase letters, digits, hyphens, and dots`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
return hostname;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// src/proxy.ts
|
|
46
|
+
import * as http from "http";
|
|
47
|
+
import * as http2 from "http2";
|
|
48
|
+
import * as net from "net";
|
|
49
|
+
|
|
50
|
+
// src/fonts.ts
|
|
51
|
+
var GEIST_SANS_400 = "data:font/woff2;base64,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";
|
|
52
|
+
var GEIST_SANS_500 = "data:font/woff2;base64,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";
|
|
53
|
+
var GEIST_MONO_400 = "data:font/woff2;base64,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";
|
|
54
|
+
var GEIST_PIXEL = "data:font/woff2;base64,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";
|
|
55
|
+
|
|
56
|
+
// src/pages.ts
|
|
57
|
+
var ARROW_SVG = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M6.5 3.5L11 8l-4.5 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>';
|
|
58
|
+
var PAGE_STYLES = `
|
|
59
|
+
@font-face {
|
|
60
|
+
font-family: 'Geist';
|
|
61
|
+
src: url('${GEIST_SANS_400}') format('woff2');
|
|
62
|
+
font-weight: 400;
|
|
63
|
+
font-display: swap;
|
|
64
|
+
}
|
|
65
|
+
@font-face {
|
|
66
|
+
font-family: 'Geist';
|
|
67
|
+
src: url('${GEIST_SANS_500}') format('woff2');
|
|
68
|
+
font-weight: 500;
|
|
69
|
+
font-display: swap;
|
|
70
|
+
}
|
|
71
|
+
@font-face {
|
|
72
|
+
font-family: 'Geist Mono';
|
|
73
|
+
src: url('${GEIST_MONO_400}') format('woff2');
|
|
74
|
+
font-weight: 400;
|
|
75
|
+
font-display: swap;
|
|
76
|
+
}
|
|
77
|
+
@font-face {
|
|
78
|
+
font-family: 'Geist Pixel';
|
|
79
|
+
src: url('${GEIST_PIXEL}') format('woff2');
|
|
80
|
+
font-weight: 400;
|
|
81
|
+
font-display: swap;
|
|
82
|
+
}
|
|
83
|
+
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
|
|
84
|
+
:root {
|
|
85
|
+
--bg: #fff;
|
|
86
|
+
--fg: #171717;
|
|
87
|
+
--border: #eaeaea;
|
|
88
|
+
--surface: #fafafa;
|
|
89
|
+
--text-2: #666;
|
|
90
|
+
--text-3: #a1a1a1;
|
|
91
|
+
--accent: #0070f3;
|
|
92
|
+
--font-sans: 'Geist', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
93
|
+
--font-mono: 'Geist Mono', 'SFMono-Regular', Menlo, Monaco, Consolas, monospace;
|
|
94
|
+
}
|
|
95
|
+
@media (prefers-color-scheme: dark) {
|
|
96
|
+
:root {
|
|
97
|
+
--bg: #000;
|
|
98
|
+
--fg: #ededed;
|
|
99
|
+
--border: rgba(255,255,255,0.1);
|
|
100
|
+
--surface: #111;
|
|
101
|
+
--text-2: #888;
|
|
102
|
+
--text-3: #666;
|
|
103
|
+
--accent: #3291ff;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
html { height: 100%; }
|
|
107
|
+
body {
|
|
108
|
+
font-family: var(--font-sans);
|
|
109
|
+
background: var(--bg);
|
|
110
|
+
color: var(--fg);
|
|
111
|
+
min-height: 100%;
|
|
112
|
+
-webkit-font-smoothing: antialiased;
|
|
113
|
+
-moz-osx-font-smoothing: grayscale;
|
|
114
|
+
}
|
|
115
|
+
.page {
|
|
116
|
+
min-height: 100vh;
|
|
117
|
+
display: flex;
|
|
118
|
+
flex-direction: column;
|
|
119
|
+
align-items: center;
|
|
120
|
+
justify-content: center;
|
|
121
|
+
padding: 32px 24px;
|
|
122
|
+
}
|
|
123
|
+
.hero {
|
|
124
|
+
display: flex;
|
|
125
|
+
flex-direction: column;
|
|
126
|
+
align-items: center;
|
|
127
|
+
}
|
|
128
|
+
.hero h1 {
|
|
129
|
+
font-family: 'Geist Pixel', var(--font-mono);
|
|
130
|
+
font-size: clamp(80px, 15vw, 144px);
|
|
131
|
+
font-weight: 400;
|
|
132
|
+
line-height: 1;
|
|
133
|
+
letter-spacing: -0.04em;
|
|
134
|
+
color: var(--fg);
|
|
135
|
+
}
|
|
136
|
+
.hero h2 {
|
|
137
|
+
font-size: 13px;
|
|
138
|
+
font-weight: 400;
|
|
139
|
+
color: var(--text-3);
|
|
140
|
+
margin-top: 16px;
|
|
141
|
+
text-transform: uppercase;
|
|
142
|
+
letter-spacing: 0.15em;
|
|
143
|
+
}
|
|
144
|
+
.content {
|
|
145
|
+
margin-top: 56px;
|
|
146
|
+
width: 100%;
|
|
147
|
+
max-width: 480px;
|
|
148
|
+
}
|
|
149
|
+
.desc {
|
|
150
|
+
font-size: 14px;
|
|
151
|
+
color: var(--text-2);
|
|
152
|
+
text-align: center;
|
|
153
|
+
line-height: 1.7;
|
|
154
|
+
}
|
|
155
|
+
.desc strong {
|
|
156
|
+
color: var(--fg);
|
|
157
|
+
font-weight: 500;
|
|
158
|
+
}
|
|
159
|
+
.section { margin-top: 32px; }
|
|
160
|
+
.label {
|
|
161
|
+
font-size: 12px;
|
|
162
|
+
font-weight: 500;
|
|
163
|
+
color: var(--text-3);
|
|
164
|
+
text-transform: uppercase;
|
|
165
|
+
letter-spacing: 0.1em;
|
|
166
|
+
margin-bottom: 10px;
|
|
167
|
+
}
|
|
168
|
+
.card {
|
|
169
|
+
list-style: none;
|
|
170
|
+
border: 1px solid var(--border);
|
|
171
|
+
border-radius: 12px;
|
|
172
|
+
overflow: hidden;
|
|
173
|
+
}
|
|
174
|
+
.card > li {
|
|
175
|
+
border-bottom: 1px solid var(--border);
|
|
176
|
+
}
|
|
177
|
+
.card > li:last-child { border-bottom: none; }
|
|
178
|
+
.card-link {
|
|
179
|
+
display: flex;
|
|
180
|
+
align-items: center;
|
|
181
|
+
justify-content: space-between;
|
|
182
|
+
padding: 14px 16px;
|
|
183
|
+
text-decoration: none;
|
|
184
|
+
color: inherit;
|
|
185
|
+
transition: background 0.15s ease;
|
|
186
|
+
}
|
|
187
|
+
.card-link:hover { background: var(--surface); }
|
|
188
|
+
.card-link .name {
|
|
189
|
+
font-size: 14px;
|
|
190
|
+
font-weight: 500;
|
|
191
|
+
transition: color 0.15s ease;
|
|
192
|
+
}
|
|
193
|
+
.card-link:hover .name { color: var(--accent); }
|
|
194
|
+
.card-link .meta {
|
|
195
|
+
display: flex;
|
|
196
|
+
align-items: center;
|
|
197
|
+
gap: 10px;
|
|
198
|
+
}
|
|
199
|
+
.card-link .port {
|
|
200
|
+
font-family: var(--font-mono);
|
|
201
|
+
font-size: 13px;
|
|
202
|
+
color: var(--text-3);
|
|
203
|
+
}
|
|
204
|
+
.card-link .arrow {
|
|
205
|
+
color: var(--text-3);
|
|
206
|
+
display: flex;
|
|
207
|
+
transition: transform 0.2s ease, color 0.2s ease;
|
|
208
|
+
}
|
|
209
|
+
.card-link:hover .arrow {
|
|
210
|
+
transform: translateX(2px);
|
|
211
|
+
color: var(--text-2);
|
|
212
|
+
}
|
|
213
|
+
.terminal {
|
|
214
|
+
font-family: var(--font-mono);
|
|
215
|
+
font-size: 13px;
|
|
216
|
+
background: var(--surface);
|
|
217
|
+
border: 1px solid var(--border);
|
|
218
|
+
border-radius: 12px;
|
|
219
|
+
padding: 14px 20px;
|
|
220
|
+
line-height: 1.7;
|
|
221
|
+
color: var(--fg);
|
|
222
|
+
}
|
|
223
|
+
.terminal .prompt {
|
|
224
|
+
color: var(--text-3);
|
|
225
|
+
user-select: none;
|
|
226
|
+
}
|
|
227
|
+
pre.terminal { white-space: pre-wrap; }
|
|
228
|
+
.empty {
|
|
229
|
+
font-size: 14px;
|
|
230
|
+
color: var(--text-3);
|
|
231
|
+
text-align: center;
|
|
232
|
+
padding: 32px 0;
|
|
233
|
+
}
|
|
234
|
+
.footer {
|
|
235
|
+
margin-top: 64px;
|
|
236
|
+
font-size: 11px;
|
|
237
|
+
color: var(--text-3);
|
|
238
|
+
font-family: var(--font-mono);
|
|
239
|
+
letter-spacing: 0.08em;
|
|
240
|
+
}
|
|
241
|
+
`;
|
|
242
|
+
function renderPage(status, statusText, body) {
|
|
243
|
+
return `<!DOCTYPE html>
|
|
244
|
+
<html lang="en">
|
|
245
|
+
<head>
|
|
246
|
+
<meta charset="utf-8">
|
|
247
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
248
|
+
<meta name="color-scheme" content="light dark">
|
|
249
|
+
<title>${status} - ${statusText}</title>
|
|
250
|
+
<style>${PAGE_STYLES}</style>
|
|
251
|
+
</head>
|
|
252
|
+
<body>
|
|
253
|
+
<div class="page">
|
|
254
|
+
<div class="hero"><h1>${status}</h1><h2>${statusText}</h2></div>
|
|
255
|
+
${body}
|
|
256
|
+
<p class="footer">portless</p>
|
|
257
|
+
</div>
|
|
258
|
+
</body>
|
|
259
|
+
</html>`;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// src/proxy.ts
|
|
263
|
+
var PORTLESS_HEADER = "X-Portless";
|
|
264
|
+
var HOP_BY_HOP_HEADERS = /* @__PURE__ */ new Set([
|
|
265
|
+
"connection",
|
|
266
|
+
"keep-alive",
|
|
267
|
+
"proxy-connection",
|
|
268
|
+
"transfer-encoding",
|
|
269
|
+
"upgrade"
|
|
270
|
+
]);
|
|
271
|
+
function getRequestHost(req) {
|
|
272
|
+
const authority = req.headers[":authority"];
|
|
273
|
+
if (typeof authority === "string" && authority) return authority;
|
|
274
|
+
return req.headers.host || "";
|
|
275
|
+
}
|
|
276
|
+
function buildForwardedHeaders(req, tls) {
|
|
277
|
+
const headers = {};
|
|
278
|
+
const remoteAddress = req.socket.remoteAddress || "127.0.0.1";
|
|
279
|
+
const proto = tls ? "https" : "http";
|
|
280
|
+
const defaultPort = tls ? "443" : "80";
|
|
281
|
+
const hostHeader = getRequestHost(req);
|
|
282
|
+
headers["x-forwarded-for"] = req.headers["x-forwarded-for"] ? `${req.headers["x-forwarded-for"]}, ${remoteAddress}` : remoteAddress;
|
|
283
|
+
headers["x-forwarded-proto"] = req.headers["x-forwarded-proto"] || proto;
|
|
284
|
+
headers["x-forwarded-host"] = req.headers["x-forwarded-host"] || hostHeader;
|
|
285
|
+
headers["x-forwarded-port"] = req.headers["x-forwarded-port"] || hostHeader.split(":")[1] || defaultPort;
|
|
286
|
+
return headers;
|
|
287
|
+
}
|
|
288
|
+
var PORTLESS_HOPS_HEADER = "x-portless-hops";
|
|
289
|
+
var MAX_PROXY_HOPS = 5;
|
|
290
|
+
function findRoute(routes, host) {
|
|
291
|
+
return routes.find((r) => r.hostname === host) || routes.find((r) => host.endsWith("." + r.hostname));
|
|
292
|
+
}
|
|
293
|
+
function createProxyServer(options) {
|
|
294
|
+
const { getRoutes, proxyPort, onError = (msg) => console.error(msg), tls } = options;
|
|
295
|
+
const isTls = !!tls;
|
|
296
|
+
const handleRequest = (req, res) => {
|
|
297
|
+
res.setHeader(PORTLESS_HEADER, "1");
|
|
298
|
+
const routes = getRoutes();
|
|
299
|
+
const host = getRequestHost(req).split(":")[0];
|
|
300
|
+
if (!host) {
|
|
301
|
+
res.writeHead(400, { "Content-Type": "text/plain" });
|
|
302
|
+
res.end("Missing Host header");
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
const hops = parseInt(req.headers[PORTLESS_HOPS_HEADER], 10) || 0;
|
|
306
|
+
if (hops >= MAX_PROXY_HOPS) {
|
|
307
|
+
onError(
|
|
308
|
+
`Loop detected for ${host}: request has passed through portless ${hops} times. This usually means a backend is proxying back through portless without rewriting the Host header. If you use Vite/webpack proxy, set changeOrigin: true.`
|
|
309
|
+
);
|
|
310
|
+
res.writeHead(508, { "Content-Type": "text/html" });
|
|
311
|
+
res.end(
|
|
312
|
+
renderPage(
|
|
313
|
+
508,
|
|
314
|
+
"Loop Detected",
|
|
315
|
+
`<div class="content"><p class="desc">This request has passed through portless ${hops} times. This usually means a dev server (Vite, webpack, etc.) is proxying requests back through portless without rewriting the Host header.</p><div class="section"><p class="label">Fix: add changeOrigin to your proxy config</p><pre class="terminal">proxy: {
|
|
316
|
+
"/api": {
|
|
317
|
+
target: "http://<backend>.localhost:<port>",
|
|
318
|
+
changeOrigin: true,
|
|
319
|
+
},
|
|
320
|
+
}</pre></div></div>`
|
|
321
|
+
)
|
|
322
|
+
);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
const route = findRoute(routes, host);
|
|
326
|
+
if (!route) {
|
|
327
|
+
const safeHost = escapeHtml(host);
|
|
328
|
+
const routesList = routes.length > 0 ? `<div class="section"><p class="label">Active apps</p><ul class="card">${routes.map((r) => `<li><a href="${escapeHtml(formatUrl(r.hostname, proxyPort, isTls))}" class="card-link"><span class="name">${escapeHtml(r.hostname)}</span><span class="meta"><code class="port">localhost:${escapeHtml(String(r.port))}</code><span class="arrow">${ARROW_SVG}</span></span></a></li>`).join("")}</ul></div>` : '<p class="empty">No apps running.</p>';
|
|
329
|
+
res.writeHead(404, { "Content-Type": "text/html" });
|
|
330
|
+
res.end(
|
|
331
|
+
renderPage(
|
|
332
|
+
404,
|
|
333
|
+
"Not Found",
|
|
334
|
+
`<div class="content"><p class="desc">No app registered for <strong>${safeHost}</strong></p>${routesList}<div class="section"><div class="terminal"><span class="prompt">$ </span>portless ${safeHost.replace(".localhost", "")} your-command</div></div></div>`
|
|
335
|
+
)
|
|
336
|
+
);
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
const forwardedHeaders = buildForwardedHeaders(req, isTls);
|
|
340
|
+
const proxyReqHeaders = { ...req.headers };
|
|
341
|
+
for (const [key, value] of Object.entries(forwardedHeaders)) {
|
|
342
|
+
proxyReqHeaders[key] = value;
|
|
343
|
+
}
|
|
344
|
+
proxyReqHeaders[PORTLESS_HOPS_HEADER] = String(hops + 1);
|
|
345
|
+
for (const key of Object.keys(proxyReqHeaders)) {
|
|
346
|
+
if (key.startsWith(":")) {
|
|
347
|
+
delete proxyReqHeaders[key];
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
const proxyReq = http.request(
|
|
351
|
+
{
|
|
352
|
+
hostname: "127.0.0.1",
|
|
353
|
+
port: route.port,
|
|
354
|
+
path: req.url,
|
|
355
|
+
method: req.method,
|
|
356
|
+
headers: proxyReqHeaders
|
|
357
|
+
},
|
|
358
|
+
(proxyRes) => {
|
|
359
|
+
const responseHeaders = { ...proxyRes.headers };
|
|
360
|
+
if (isTls) {
|
|
361
|
+
for (const h of HOP_BY_HOP_HEADERS) {
|
|
362
|
+
delete responseHeaders[h];
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
res.writeHead(proxyRes.statusCode || 502, responseHeaders);
|
|
366
|
+
proxyRes.on("error", () => {
|
|
367
|
+
if (!res.headersSent) {
|
|
368
|
+
res.writeHead(502, { "Content-Type": "text/plain" });
|
|
369
|
+
}
|
|
370
|
+
res.end();
|
|
371
|
+
});
|
|
372
|
+
proxyRes.pipe(res);
|
|
373
|
+
}
|
|
374
|
+
);
|
|
375
|
+
proxyReq.on("error", (err) => {
|
|
376
|
+
onError(`Proxy error for ${getRequestHost(req)}: ${err.message}`);
|
|
377
|
+
if (!res.headersSent) {
|
|
378
|
+
const errWithCode = err;
|
|
379
|
+
const detail = errWithCode.code === "ECONNREFUSED" ? "The target app is not responding. It may have crashed." : "The target app may not be running.";
|
|
380
|
+
res.writeHead(502, { "Content-Type": "text/html" });
|
|
381
|
+
res.end(
|
|
382
|
+
renderPage(
|
|
383
|
+
502,
|
|
384
|
+
"Bad Gateway",
|
|
385
|
+
`<div class="content"><p class="desc">${escapeHtml(detail)}</p></div>`
|
|
386
|
+
)
|
|
387
|
+
);
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
res.on("close", () => {
|
|
391
|
+
if (!proxyReq.destroyed) {
|
|
392
|
+
proxyReq.destroy();
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
req.on("error", () => {
|
|
396
|
+
if (!proxyReq.destroyed) {
|
|
397
|
+
proxyReq.destroy();
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
req.pipe(proxyReq);
|
|
401
|
+
};
|
|
402
|
+
const handleUpgrade = (req, socket, head) => {
|
|
403
|
+
socket.on("error", () => socket.destroy());
|
|
404
|
+
const hops = parseInt(req.headers[PORTLESS_HOPS_HEADER], 10) || 0;
|
|
405
|
+
if (hops >= MAX_PROXY_HOPS) {
|
|
406
|
+
const host2 = getRequestHost(req).split(":")[0];
|
|
407
|
+
onError(
|
|
408
|
+
`WebSocket loop detected for ${host2}: request has passed through portless ${hops} times. Set changeOrigin: true in your proxy config.`
|
|
409
|
+
);
|
|
410
|
+
socket.end(
|
|
411
|
+
"HTTP/1.1 508 Loop Detected\r\nContent-Type: text/plain\r\n\r\nLoop Detected: request has passed through portless too many times.\nAdd changeOrigin: true to your dev server proxy config.\n"
|
|
412
|
+
);
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
const routes = getRoutes();
|
|
416
|
+
const host = getRequestHost(req).split(":")[0];
|
|
417
|
+
const route = findRoute(routes, host);
|
|
418
|
+
if (!route) {
|
|
419
|
+
socket.destroy();
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
const forwardedHeaders = buildForwardedHeaders(req, isTls);
|
|
423
|
+
const proxyReqHeaders = { ...req.headers };
|
|
424
|
+
for (const [key, value] of Object.entries(forwardedHeaders)) {
|
|
425
|
+
proxyReqHeaders[key] = value;
|
|
426
|
+
}
|
|
427
|
+
proxyReqHeaders[PORTLESS_HOPS_HEADER] = String(hops + 1);
|
|
428
|
+
for (const key of Object.keys(proxyReqHeaders)) {
|
|
429
|
+
if (key.startsWith(":")) {
|
|
430
|
+
delete proxyReqHeaders[key];
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
const proxyReq = http.request({
|
|
434
|
+
hostname: "127.0.0.1",
|
|
435
|
+
port: route.port,
|
|
436
|
+
path: req.url,
|
|
437
|
+
method: req.method,
|
|
438
|
+
headers: proxyReqHeaders
|
|
439
|
+
});
|
|
440
|
+
proxyReq.on("upgrade", (proxyRes, proxySocket, proxyHead) => {
|
|
441
|
+
let response = `HTTP/1.1 101 Switching Protocols\r
|
|
442
|
+
`;
|
|
443
|
+
for (let i = 0; i < proxyRes.rawHeaders.length; i += 2) {
|
|
444
|
+
response += `${proxyRes.rawHeaders[i]}: ${proxyRes.rawHeaders[i + 1]}\r
|
|
445
|
+
`;
|
|
446
|
+
}
|
|
447
|
+
response += "\r\n";
|
|
448
|
+
socket.write(response);
|
|
449
|
+
if (proxyHead.length > 0) {
|
|
450
|
+
socket.write(proxyHead);
|
|
451
|
+
}
|
|
452
|
+
proxySocket.pipe(socket);
|
|
453
|
+
socket.pipe(proxySocket);
|
|
454
|
+
proxySocket.on("error", () => socket.destroy());
|
|
455
|
+
socket.on("error", () => proxySocket.destroy());
|
|
456
|
+
});
|
|
457
|
+
proxyReq.on("error", (err) => {
|
|
458
|
+
onError(`WebSocket proxy error for ${getRequestHost(req)}: ${err.message}`);
|
|
459
|
+
socket.destroy();
|
|
460
|
+
});
|
|
461
|
+
proxyReq.on("response", (res) => {
|
|
462
|
+
if (!socket.destroyed) {
|
|
463
|
+
let response = `HTTP/1.1 ${res.statusCode} ${res.statusMessage}\r
|
|
464
|
+
`;
|
|
465
|
+
for (let i = 0; i < res.rawHeaders.length; i += 2) {
|
|
466
|
+
response += `${res.rawHeaders[i]}: ${res.rawHeaders[i + 1]}\r
|
|
467
|
+
`;
|
|
468
|
+
}
|
|
469
|
+
response += "\r\n";
|
|
470
|
+
socket.write(response);
|
|
471
|
+
res.on("error", () => socket.destroy());
|
|
472
|
+
res.pipe(socket);
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
if (head.length > 0) {
|
|
476
|
+
proxyReq.write(head);
|
|
477
|
+
}
|
|
478
|
+
proxyReq.end();
|
|
479
|
+
};
|
|
480
|
+
if (tls) {
|
|
481
|
+
const h2Server = http2.createSecureServer({
|
|
482
|
+
cert: tls.cert,
|
|
483
|
+
key: tls.key,
|
|
484
|
+
allowHTTP1: true,
|
|
485
|
+
...tls.SNICallback ? { SNICallback: tls.SNICallback } : {}
|
|
486
|
+
});
|
|
487
|
+
h2Server.on("request", (req, res) => {
|
|
488
|
+
handleRequest(req, res);
|
|
489
|
+
});
|
|
490
|
+
h2Server.on("upgrade", (req, socket, head) => {
|
|
491
|
+
handleUpgrade(req, socket, head);
|
|
492
|
+
});
|
|
493
|
+
const plainServer = http.createServer(handleRequest);
|
|
494
|
+
plainServer.on("upgrade", handleUpgrade);
|
|
495
|
+
const wrapper = net.createServer((socket) => {
|
|
496
|
+
socket.once("readable", () => {
|
|
497
|
+
const buf = socket.read(1);
|
|
498
|
+
if (!buf) {
|
|
499
|
+
socket.destroy();
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
socket.unshift(buf);
|
|
503
|
+
if (buf[0] === 22) {
|
|
504
|
+
h2Server.emit("connection", socket);
|
|
505
|
+
} else {
|
|
506
|
+
plainServer.emit("connection", socket);
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
});
|
|
510
|
+
const origClose = wrapper.close.bind(wrapper);
|
|
511
|
+
wrapper.close = function(cb) {
|
|
512
|
+
h2Server.close();
|
|
513
|
+
plainServer.close();
|
|
514
|
+
return origClose(cb);
|
|
515
|
+
};
|
|
516
|
+
return wrapper;
|
|
517
|
+
}
|
|
518
|
+
const httpServer = http.createServer(handleRequest);
|
|
519
|
+
httpServer.on("upgrade", handleUpgrade);
|
|
520
|
+
return httpServer;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
// src/hosts.ts
|
|
524
|
+
import * as fs2 from "fs";
|
|
525
|
+
import * as dns from "dns";
|
|
526
|
+
var HOSTS_PATH = "/etc/hosts";
|
|
527
|
+
var MARKER_START = "# portless-start";
|
|
528
|
+
var MARKER_END = "# portless-end";
|
|
529
|
+
function readHostsFile() {
|
|
530
|
+
try {
|
|
531
|
+
return fs2.readFileSync(HOSTS_PATH, "utf-8");
|
|
532
|
+
} catch {
|
|
533
|
+
return "";
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
function extractManagedBlock(content) {
|
|
537
|
+
const startIdx = content.indexOf(MARKER_START);
|
|
538
|
+
const endIdx = content.indexOf(MARKER_END);
|
|
539
|
+
if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx) return [];
|
|
540
|
+
const block = content.slice(startIdx + MARKER_START.length, endIdx);
|
|
541
|
+
return block.split("\n").map((l) => l.trim()).filter(Boolean);
|
|
542
|
+
}
|
|
543
|
+
function removeBlock(content) {
|
|
544
|
+
const startIdx = content.indexOf(MARKER_START);
|
|
545
|
+
const endIdx = content.indexOf(MARKER_END);
|
|
546
|
+
if (startIdx === -1 || endIdx === -1) return content;
|
|
547
|
+
const before = content.slice(0, startIdx);
|
|
548
|
+
const after = content.slice(endIdx + MARKER_END.length);
|
|
549
|
+
return (before + after).replace(/\n{3,}/g, "\n\n").trimEnd() + "\n";
|
|
550
|
+
}
|
|
551
|
+
function buildBlock(hostnames) {
|
|
552
|
+
if (hostnames.length === 0) return "";
|
|
553
|
+
const entries = hostnames.map((h) => `127.0.0.1 ${h}`).join("\n");
|
|
554
|
+
return `${MARKER_START}
|
|
555
|
+
${entries}
|
|
556
|
+
${MARKER_END}`;
|
|
557
|
+
}
|
|
558
|
+
function syncHostsFile(hostnames) {
|
|
559
|
+
try {
|
|
560
|
+
const content = readHostsFile();
|
|
561
|
+
const cleaned = removeBlock(content);
|
|
562
|
+
if (hostnames.length === 0) {
|
|
563
|
+
fs2.writeFileSync(HOSTS_PATH, cleaned);
|
|
564
|
+
} else {
|
|
565
|
+
const block = buildBlock(hostnames);
|
|
566
|
+
fs2.writeFileSync(HOSTS_PATH, cleaned.trimEnd() + "\n\n" + block + "\n");
|
|
567
|
+
}
|
|
568
|
+
return true;
|
|
569
|
+
} catch {
|
|
570
|
+
return false;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
function cleanHostsFile() {
|
|
574
|
+
try {
|
|
575
|
+
const content = readHostsFile();
|
|
576
|
+
if (!content.includes(MARKER_START)) return true;
|
|
577
|
+
fs2.writeFileSync(HOSTS_PATH, removeBlock(content));
|
|
578
|
+
return true;
|
|
579
|
+
} catch {
|
|
580
|
+
return false;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
function getManagedHostnames() {
|
|
584
|
+
const content = readHostsFile();
|
|
585
|
+
return extractManagedBlock(content).map((line) => {
|
|
586
|
+
const parts = line.split(/\s+/);
|
|
587
|
+
return parts.length >= 2 ? parts[1] : "";
|
|
588
|
+
}).filter(Boolean);
|
|
589
|
+
}
|
|
590
|
+
function checkLocalhostResolution(hostname) {
|
|
591
|
+
return new Promise((resolve) => {
|
|
592
|
+
dns.lookup(hostname, { family: 4 }, (err, address) => {
|
|
593
|
+
if (err) {
|
|
594
|
+
resolve(false);
|
|
595
|
+
return;
|
|
596
|
+
}
|
|
597
|
+
resolve(address === "127.0.0.1");
|
|
598
|
+
});
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
// src/cli-utils.ts
|
|
603
|
+
import * as fs3 from "fs";
|
|
604
|
+
import * as http3 from "http";
|
|
605
|
+
import * as https from "https";
|
|
606
|
+
import * as net2 from "net";
|
|
607
|
+
import * as os from "os";
|
|
608
|
+
import * as path from "path";
|
|
609
|
+
import * as readline from "readline";
|
|
610
|
+
import { execSync, spawn } from "child_process";
|
|
611
|
+
var DEFAULT_PROXY_PORT = 1355;
|
|
612
|
+
var PRIVILEGED_PORT_THRESHOLD = 1024;
|
|
613
|
+
var SYSTEM_STATE_DIR = "/tmp/portless";
|
|
614
|
+
var USER_STATE_DIR = path.join(os.homedir(), ".portless");
|
|
615
|
+
var MIN_APP_PORT = 4e3;
|
|
616
|
+
var MAX_APP_PORT = 4999;
|
|
617
|
+
var RANDOM_PORT_ATTEMPTS = 50;
|
|
618
|
+
var SOCKET_TIMEOUT_MS = 500;
|
|
619
|
+
var LSOF_TIMEOUT_MS = 5e3;
|
|
620
|
+
var WAIT_FOR_PROXY_MAX_ATTEMPTS = 20;
|
|
621
|
+
var WAIT_FOR_PROXY_INTERVAL_MS = 250;
|
|
622
|
+
var SIGNAL_CODES = {
|
|
623
|
+
SIGHUP: 1,
|
|
624
|
+
SIGINT: 2,
|
|
625
|
+
SIGQUIT: 3,
|
|
626
|
+
SIGABRT: 6,
|
|
627
|
+
SIGKILL: 9,
|
|
628
|
+
SIGTERM: 15
|
|
629
|
+
};
|
|
630
|
+
function getDefaultPort() {
|
|
631
|
+
const envPort = process.env.PORTLESS_PORT;
|
|
632
|
+
if (envPort) {
|
|
633
|
+
const port = parseInt(envPort, 10);
|
|
634
|
+
if (!isNaN(port) && port >= 1 && port <= 65535) return port;
|
|
635
|
+
}
|
|
636
|
+
return DEFAULT_PROXY_PORT;
|
|
637
|
+
}
|
|
638
|
+
function resolveStateDir(port) {
|
|
639
|
+
if (process.env.PORTLESS_STATE_DIR) return process.env.PORTLESS_STATE_DIR;
|
|
640
|
+
return port < PRIVILEGED_PORT_THRESHOLD ? SYSTEM_STATE_DIR : USER_STATE_DIR;
|
|
641
|
+
}
|
|
642
|
+
function readPortFromDir(dir) {
|
|
643
|
+
try {
|
|
644
|
+
const raw = fs3.readFileSync(path.join(dir, "proxy.port"), "utf-8").trim();
|
|
645
|
+
const port = parseInt(raw, 10);
|
|
646
|
+
return isNaN(port) ? null : port;
|
|
647
|
+
} catch {
|
|
648
|
+
return null;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
var TLS_MARKER_FILE = "proxy.tls";
|
|
652
|
+
function readTlsMarker(dir) {
|
|
653
|
+
try {
|
|
654
|
+
return fs3.existsSync(path.join(dir, TLS_MARKER_FILE));
|
|
655
|
+
} catch {
|
|
656
|
+
return false;
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
function writeTlsMarker(dir, enabled) {
|
|
660
|
+
const markerPath = path.join(dir, TLS_MARKER_FILE);
|
|
661
|
+
if (enabled) {
|
|
662
|
+
fs3.writeFileSync(markerPath, "1", { mode: 420 });
|
|
663
|
+
} else {
|
|
664
|
+
try {
|
|
665
|
+
fs3.unlinkSync(markerPath);
|
|
666
|
+
} catch {
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
function isHttpsEnvEnabled() {
|
|
671
|
+
const val = process.env.PORTLESS_HTTPS;
|
|
672
|
+
return val === "1" || val === "true";
|
|
673
|
+
}
|
|
674
|
+
async function discoverState() {
|
|
675
|
+
if (process.env.PORTLESS_STATE_DIR) {
|
|
676
|
+
const dir = process.env.PORTLESS_STATE_DIR;
|
|
677
|
+
const port = readPortFromDir(dir) ?? getDefaultPort();
|
|
678
|
+
const tls = readTlsMarker(dir);
|
|
679
|
+
return { dir, port, tls };
|
|
680
|
+
}
|
|
681
|
+
const userPort = readPortFromDir(USER_STATE_DIR);
|
|
682
|
+
if (userPort !== null) {
|
|
683
|
+
const tls = readTlsMarker(USER_STATE_DIR);
|
|
684
|
+
if (await isProxyRunning(userPort, tls)) {
|
|
685
|
+
return { dir: USER_STATE_DIR, port: userPort, tls };
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
const systemPort = readPortFromDir(SYSTEM_STATE_DIR);
|
|
689
|
+
if (systemPort !== null) {
|
|
690
|
+
const tls = readTlsMarker(SYSTEM_STATE_DIR);
|
|
691
|
+
if (await isProxyRunning(systemPort, tls)) {
|
|
692
|
+
return { dir: SYSTEM_STATE_DIR, port: systemPort, tls };
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
const defaultPort = getDefaultPort();
|
|
696
|
+
return { dir: resolveStateDir(defaultPort), port: defaultPort, tls: false };
|
|
697
|
+
}
|
|
698
|
+
async function findFreePort(minPort = MIN_APP_PORT, maxPort = MAX_APP_PORT) {
|
|
699
|
+
if (minPort > maxPort) {
|
|
700
|
+
throw new Error(`minPort (${minPort}) must be <= maxPort (${maxPort})`);
|
|
701
|
+
}
|
|
702
|
+
const tryPort = (port) => {
|
|
703
|
+
return new Promise((resolve) => {
|
|
704
|
+
const server = net2.createServer();
|
|
705
|
+
server.listen(port, () => {
|
|
706
|
+
server.close(() => resolve(true));
|
|
707
|
+
});
|
|
708
|
+
server.on("error", () => resolve(false));
|
|
709
|
+
});
|
|
710
|
+
};
|
|
711
|
+
for (let i = 0; i < RANDOM_PORT_ATTEMPTS; i++) {
|
|
712
|
+
const port = minPort + Math.floor(Math.random() * (maxPort - minPort + 1));
|
|
713
|
+
if (await tryPort(port)) {
|
|
714
|
+
return port;
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
for (let port = minPort; port <= maxPort; port++) {
|
|
718
|
+
if (await tryPort(port)) {
|
|
719
|
+
return port;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
throw new Error(`No free port found in range ${minPort}-${maxPort}`);
|
|
723
|
+
}
|
|
724
|
+
function isProxyRunning(port, tls = false) {
|
|
725
|
+
return new Promise((resolve) => {
|
|
726
|
+
const requestFn = tls ? https.request : http3.request;
|
|
727
|
+
const req = requestFn(
|
|
728
|
+
{
|
|
729
|
+
hostname: "127.0.0.1",
|
|
730
|
+
port,
|
|
731
|
+
path: "/",
|
|
732
|
+
method: "HEAD",
|
|
733
|
+
timeout: SOCKET_TIMEOUT_MS,
|
|
734
|
+
...tls ? { rejectUnauthorized: false } : {}
|
|
735
|
+
},
|
|
736
|
+
(res) => {
|
|
737
|
+
res.resume();
|
|
738
|
+
resolve(res.headers[PORTLESS_HEADER.toLowerCase()] === "1");
|
|
739
|
+
}
|
|
740
|
+
);
|
|
741
|
+
req.on("error", () => resolve(false));
|
|
742
|
+
req.on("timeout", () => {
|
|
743
|
+
req.destroy();
|
|
744
|
+
resolve(false);
|
|
745
|
+
});
|
|
746
|
+
req.end();
|
|
747
|
+
});
|
|
748
|
+
}
|
|
749
|
+
function findPidOnPort(port) {
|
|
750
|
+
try {
|
|
751
|
+
const output = execSync(`lsof -ti tcp:${port} -sTCP:LISTEN`, {
|
|
752
|
+
encoding: "utf-8",
|
|
753
|
+
timeout: LSOF_TIMEOUT_MS
|
|
754
|
+
});
|
|
755
|
+
const pid = parseInt(output.trim().split("\n")[0], 10);
|
|
756
|
+
return isNaN(pid) ? null : pid;
|
|
757
|
+
} catch {
|
|
758
|
+
return null;
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
async function waitForProxy(port, maxAttempts = WAIT_FOR_PROXY_MAX_ATTEMPTS, intervalMs = WAIT_FOR_PROXY_INTERVAL_MS, tls = false) {
|
|
762
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
763
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
764
|
+
if (await isProxyRunning(port, tls)) {
|
|
765
|
+
return true;
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
return false;
|
|
769
|
+
}
|
|
770
|
+
function shellEscape(arg) {
|
|
771
|
+
return `'${arg.replace(/'/g, "'\\''")}'`;
|
|
772
|
+
}
|
|
773
|
+
function collectBinPaths(cwd) {
|
|
774
|
+
const dirs = [];
|
|
775
|
+
let dir = cwd;
|
|
776
|
+
for (; ; ) {
|
|
777
|
+
const bin = path.join(dir, "node_modules", ".bin");
|
|
778
|
+
if (fs3.existsSync(bin)) {
|
|
779
|
+
dirs.push(bin);
|
|
780
|
+
}
|
|
781
|
+
const parent = path.dirname(dir);
|
|
782
|
+
if (parent === dir) break;
|
|
783
|
+
dir = parent;
|
|
784
|
+
}
|
|
785
|
+
return dirs;
|
|
786
|
+
}
|
|
787
|
+
function augmentedPath(env) {
|
|
788
|
+
const base = (env ?? process.env).PATH ?? "";
|
|
789
|
+
const bins = collectBinPaths(process.cwd());
|
|
790
|
+
return bins.length > 0 ? bins.join(path.delimiter) + path.delimiter + base : base;
|
|
791
|
+
}
|
|
792
|
+
function spawnCommand(commandArgs, options) {
|
|
793
|
+
const env = { ...options?.env ?? process.env, PATH: augmentedPath(options?.env) };
|
|
794
|
+
const shellCmd = commandArgs.map(shellEscape).join(" ");
|
|
795
|
+
const child = spawn("/bin/sh", ["-c", shellCmd], {
|
|
796
|
+
stdio: "inherit",
|
|
797
|
+
env
|
|
798
|
+
});
|
|
799
|
+
let exiting = false;
|
|
800
|
+
const cleanup = () => {
|
|
801
|
+
process.removeListener("SIGINT", onSigInt);
|
|
802
|
+
process.removeListener("SIGTERM", onSigTerm);
|
|
803
|
+
options?.onCleanup?.();
|
|
804
|
+
};
|
|
805
|
+
const handleSignal = (signal) => {
|
|
806
|
+
if (exiting) return;
|
|
807
|
+
exiting = true;
|
|
808
|
+
child.kill(signal);
|
|
809
|
+
cleanup();
|
|
810
|
+
process.exit(128 + (SIGNAL_CODES[signal] || 15));
|
|
811
|
+
};
|
|
812
|
+
const onSigInt = () => handleSignal("SIGINT");
|
|
813
|
+
const onSigTerm = () => handleSignal("SIGTERM");
|
|
814
|
+
process.on("SIGINT", onSigInt);
|
|
815
|
+
process.on("SIGTERM", onSigTerm);
|
|
816
|
+
child.on("error", (err) => {
|
|
817
|
+
if (exiting) return;
|
|
818
|
+
exiting = true;
|
|
819
|
+
console.error(`Failed to run command: ${err.message}`);
|
|
820
|
+
if (err.code === "ENOENT") {
|
|
821
|
+
console.error(`Is "${commandArgs[0]}" installed and in your PATH?`);
|
|
822
|
+
}
|
|
823
|
+
cleanup();
|
|
824
|
+
process.exit(1);
|
|
825
|
+
});
|
|
826
|
+
child.on("exit", (code, signal) => {
|
|
827
|
+
if (exiting) return;
|
|
828
|
+
exiting = true;
|
|
829
|
+
cleanup();
|
|
830
|
+
if (signal) {
|
|
831
|
+
process.exit(128 + (SIGNAL_CODES[signal] || 15));
|
|
832
|
+
}
|
|
833
|
+
process.exit(code ?? 1);
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
var FRAMEWORKS_NEEDING_PORT = {
|
|
837
|
+
vite: { strictPort: true },
|
|
838
|
+
"react-router": { strictPort: true },
|
|
839
|
+
astro: { strictPort: false },
|
|
840
|
+
ng: { strictPort: false },
|
|
841
|
+
"react-native": { strictPort: false },
|
|
842
|
+
expo: { strictPort: false }
|
|
843
|
+
};
|
|
844
|
+
function injectFrameworkFlags(commandArgs, port) {
|
|
845
|
+
const cmd = commandArgs[0];
|
|
846
|
+
if (!cmd) return;
|
|
847
|
+
const basename2 = path.basename(cmd);
|
|
848
|
+
const framework = FRAMEWORKS_NEEDING_PORT[basename2];
|
|
849
|
+
if (!framework) return;
|
|
850
|
+
if (!commandArgs.includes("--port")) {
|
|
851
|
+
commandArgs.push("--port", port.toString());
|
|
852
|
+
if (framework.strictPort) {
|
|
853
|
+
commandArgs.push("--strictPort");
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
if (!commandArgs.includes("--host")) {
|
|
857
|
+
const hostValue = basename2 === "expo" ? "localhost" : "127.0.0.1";
|
|
858
|
+
commandArgs.push("--host", hostValue);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
function prompt(question) {
|
|
862
|
+
const rl = readline.createInterface({
|
|
863
|
+
input: process.stdin,
|
|
864
|
+
output: process.stdout
|
|
865
|
+
});
|
|
866
|
+
return new Promise((resolve) => {
|
|
867
|
+
rl.on("close", () => resolve(""));
|
|
868
|
+
rl.question(question, (answer) => {
|
|
869
|
+
rl.close();
|
|
870
|
+
resolve(answer.trim().toLowerCase());
|
|
871
|
+
});
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
// src/routes.ts
|
|
876
|
+
import * as fs4 from "fs";
|
|
877
|
+
import * as path2 from "path";
|
|
878
|
+
var STALE_LOCK_THRESHOLD_MS = 1e4;
|
|
879
|
+
var LOCK_MAX_RETRIES = 20;
|
|
880
|
+
var LOCK_RETRY_DELAY_MS = 50;
|
|
881
|
+
var FILE_MODE = 420;
|
|
882
|
+
var DIR_MODE = 493;
|
|
883
|
+
var SYSTEM_DIR_MODE = 1023;
|
|
884
|
+
var SYSTEM_FILE_MODE = 438;
|
|
885
|
+
function isValidRoute(value) {
|
|
886
|
+
return typeof value === "object" && value !== null && typeof value.hostname === "string" && typeof value.port === "number" && typeof value.pid === "number";
|
|
887
|
+
}
|
|
888
|
+
var RouteConflictError = class extends Error {
|
|
889
|
+
hostname;
|
|
890
|
+
existingPid;
|
|
891
|
+
constructor(hostname, existingPid) {
|
|
892
|
+
super(
|
|
893
|
+
`"${hostname}" is already registered by a running process (PID ${existingPid}). Use --force to override.`
|
|
894
|
+
);
|
|
895
|
+
this.name = "RouteConflictError";
|
|
896
|
+
this.hostname = hostname;
|
|
897
|
+
this.existingPid = existingPid;
|
|
898
|
+
}
|
|
899
|
+
};
|
|
900
|
+
var RouteStore = class _RouteStore {
|
|
901
|
+
/** The state directory path. */
|
|
902
|
+
dir;
|
|
903
|
+
routesPath;
|
|
904
|
+
lockPath;
|
|
905
|
+
pidPath;
|
|
906
|
+
portFilePath;
|
|
907
|
+
onWarning;
|
|
908
|
+
constructor(dir, options) {
|
|
909
|
+
this.dir = dir;
|
|
910
|
+
this.routesPath = path2.join(dir, "routes.json");
|
|
911
|
+
this.lockPath = path2.join(dir, "routes.lock");
|
|
912
|
+
this.pidPath = path2.join(dir, "proxy.pid");
|
|
913
|
+
this.portFilePath = path2.join(dir, "proxy.port");
|
|
914
|
+
this.onWarning = options?.onWarning;
|
|
915
|
+
}
|
|
916
|
+
isSystemDir() {
|
|
917
|
+
return this.dir === SYSTEM_STATE_DIR;
|
|
918
|
+
}
|
|
919
|
+
get dirMode() {
|
|
920
|
+
return this.isSystemDir() ? SYSTEM_DIR_MODE : DIR_MODE;
|
|
921
|
+
}
|
|
922
|
+
get fileMode() {
|
|
923
|
+
return this.isSystemDir() ? SYSTEM_FILE_MODE : FILE_MODE;
|
|
924
|
+
}
|
|
925
|
+
ensureDir() {
|
|
926
|
+
if (!fs4.existsSync(this.dir)) {
|
|
927
|
+
fs4.mkdirSync(this.dir, { recursive: true, mode: this.dirMode });
|
|
928
|
+
}
|
|
929
|
+
try {
|
|
930
|
+
fs4.chmodSync(this.dir, this.dirMode);
|
|
931
|
+
} catch {
|
|
932
|
+
}
|
|
933
|
+
fixOwnership(this.dir);
|
|
934
|
+
}
|
|
935
|
+
getRoutesPath() {
|
|
936
|
+
return this.routesPath;
|
|
937
|
+
}
|
|
938
|
+
// -- Locking ---------------------------------------------------------------
|
|
939
|
+
static sleepBuffer = new Int32Array(new SharedArrayBuffer(4));
|
|
940
|
+
syncSleep(ms) {
|
|
941
|
+
Atomics.wait(_RouteStore.sleepBuffer, 0, 0, ms);
|
|
942
|
+
}
|
|
943
|
+
acquireLock(maxRetries = LOCK_MAX_RETRIES, retryDelayMs = LOCK_RETRY_DELAY_MS) {
|
|
944
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
945
|
+
try {
|
|
946
|
+
fs4.mkdirSync(this.lockPath);
|
|
947
|
+
return true;
|
|
948
|
+
} catch (err) {
|
|
949
|
+
if (isErrnoException(err) && err.code === "EEXIST") {
|
|
950
|
+
try {
|
|
951
|
+
const stat = fs4.statSync(this.lockPath);
|
|
952
|
+
if (Date.now() - stat.mtimeMs > STALE_LOCK_THRESHOLD_MS) {
|
|
953
|
+
fs4.rmSync(this.lockPath, { recursive: true });
|
|
954
|
+
continue;
|
|
955
|
+
}
|
|
956
|
+
} catch {
|
|
957
|
+
continue;
|
|
958
|
+
}
|
|
959
|
+
this.syncSleep(retryDelayMs);
|
|
960
|
+
} else {
|
|
961
|
+
return false;
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
return false;
|
|
966
|
+
}
|
|
967
|
+
releaseLock() {
|
|
968
|
+
try {
|
|
969
|
+
fs4.rmSync(this.lockPath, { recursive: true });
|
|
970
|
+
} catch {
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
// -- Route I/O -------------------------------------------------------------
|
|
974
|
+
isProcessAlive(pid) {
|
|
975
|
+
try {
|
|
976
|
+
process.kill(pid, 0);
|
|
977
|
+
return true;
|
|
978
|
+
} catch {
|
|
979
|
+
return false;
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
/**
|
|
983
|
+
* Load routes from disk, filtering out stale entries whose owning process
|
|
984
|
+
* is no longer alive. Stale-route cleanup is only persisted when the caller
|
|
985
|
+
* already holds the lock (i.e. inside addRoute/removeRoute) to avoid
|
|
986
|
+
* unprotected concurrent writes.
|
|
987
|
+
*/
|
|
988
|
+
loadRoutes(persistCleanup = false) {
|
|
989
|
+
if (!fs4.existsSync(this.routesPath)) {
|
|
990
|
+
return [];
|
|
991
|
+
}
|
|
992
|
+
try {
|
|
993
|
+
const raw = fs4.readFileSync(this.routesPath, "utf-8");
|
|
994
|
+
let parsed;
|
|
995
|
+
try {
|
|
996
|
+
parsed = JSON.parse(raw);
|
|
997
|
+
} catch {
|
|
998
|
+
this.onWarning?.(`Corrupted routes file (invalid JSON): ${this.routesPath}`);
|
|
999
|
+
return [];
|
|
1000
|
+
}
|
|
1001
|
+
if (!Array.isArray(parsed)) {
|
|
1002
|
+
this.onWarning?.(`Corrupted routes file (expected array): ${this.routesPath}`);
|
|
1003
|
+
return [];
|
|
1004
|
+
}
|
|
1005
|
+
const routes = parsed.filter(isValidRoute);
|
|
1006
|
+
const alive = routes.filter((r) => r.pid === 0 || this.isProcessAlive(r.pid));
|
|
1007
|
+
if (persistCleanup && alive.length !== routes.length) {
|
|
1008
|
+
try {
|
|
1009
|
+
fs4.writeFileSync(this.routesPath, JSON.stringify(alive, null, 2), {
|
|
1010
|
+
mode: this.fileMode
|
|
1011
|
+
});
|
|
1012
|
+
} catch {
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
return alive;
|
|
1016
|
+
} catch {
|
|
1017
|
+
return [];
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
saveRoutes(routes) {
|
|
1021
|
+
fs4.writeFileSync(this.routesPath, JSON.stringify(routes, null, 2), { mode: this.fileMode });
|
|
1022
|
+
fixOwnership(this.routesPath);
|
|
1023
|
+
}
|
|
1024
|
+
addRoute(hostname, port, pid, force = false) {
|
|
1025
|
+
this.ensureDir();
|
|
1026
|
+
if (!this.acquireLock()) {
|
|
1027
|
+
throw new Error("Failed to acquire route lock");
|
|
1028
|
+
}
|
|
1029
|
+
try {
|
|
1030
|
+
const routes = this.loadRoutes(true);
|
|
1031
|
+
const existing = routes.find((r) => r.hostname === hostname);
|
|
1032
|
+
if (existing && existing.pid !== pid && this.isProcessAlive(existing.pid) && !force) {
|
|
1033
|
+
throw new RouteConflictError(hostname, existing.pid);
|
|
1034
|
+
}
|
|
1035
|
+
const filtered = routes.filter((r) => r.hostname !== hostname);
|
|
1036
|
+
filtered.push({ hostname, port, pid });
|
|
1037
|
+
this.saveRoutes(filtered);
|
|
1038
|
+
} finally {
|
|
1039
|
+
this.releaseLock();
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
removeRoute(hostname) {
|
|
1043
|
+
this.ensureDir();
|
|
1044
|
+
if (!this.acquireLock()) {
|
|
1045
|
+
throw new Error("Failed to acquire route lock");
|
|
1046
|
+
}
|
|
1047
|
+
try {
|
|
1048
|
+
const routes = this.loadRoutes(true).filter((r) => r.hostname !== hostname);
|
|
1049
|
+
this.saveRoutes(routes);
|
|
1050
|
+
} finally {
|
|
1051
|
+
this.releaseLock();
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
};
|
|
1055
|
+
|
|
1056
|
+
export {
|
|
1057
|
+
fixOwnership,
|
|
1058
|
+
isErrnoException,
|
|
1059
|
+
escapeHtml,
|
|
1060
|
+
formatUrl,
|
|
1061
|
+
parseHostname,
|
|
1062
|
+
PORTLESS_HEADER,
|
|
1063
|
+
createProxyServer,
|
|
1064
|
+
extractManagedBlock,
|
|
1065
|
+
removeBlock,
|
|
1066
|
+
buildBlock,
|
|
1067
|
+
syncHostsFile,
|
|
1068
|
+
cleanHostsFile,
|
|
1069
|
+
getManagedHostnames,
|
|
1070
|
+
checkLocalhostResolution,
|
|
1071
|
+
PRIVILEGED_PORT_THRESHOLD,
|
|
1072
|
+
getDefaultPort,
|
|
1073
|
+
resolveStateDir,
|
|
1074
|
+
readTlsMarker,
|
|
1075
|
+
writeTlsMarker,
|
|
1076
|
+
isHttpsEnvEnabled,
|
|
1077
|
+
discoverState,
|
|
1078
|
+
findFreePort,
|
|
1079
|
+
isProxyRunning,
|
|
1080
|
+
findPidOnPort,
|
|
1081
|
+
waitForProxy,
|
|
1082
|
+
spawnCommand,
|
|
1083
|
+
injectFrameworkFlags,
|
|
1084
|
+
prompt,
|
|
1085
|
+
FILE_MODE,
|
|
1086
|
+
DIR_MODE,
|
|
1087
|
+
SYSTEM_DIR_MODE,
|
|
1088
|
+
SYSTEM_FILE_MODE,
|
|
1089
|
+
RouteConflictError,
|
|
1090
|
+
RouteStore
|
|
1091
|
+
};
|