unplugin-https-reverse-proxy 0.0.12 → 0.0.14
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 +5 -1
- package/dist/{chunk-ARWX57QE.js → chunk-5OTBSQ6U.js} +1 -1
- package/dist/chunk-CQC5SSJR.js +37 -0
- package/dist/{chunk-WUSTJHAZ.js → chunk-IOQLAF3J.js} +162 -69
- package/dist/{chunk-YP6CZ57A.js → chunk-YJCVUFTG.js} +1 -1
- package/dist/esbuild.cjs +181 -67
- package/dist/esbuild.js +2 -2
- package/dist/index.cjs +181 -67
- package/dist/index.js +2 -2
- package/dist/nuxt.cjs +181 -67
- package/dist/nuxt.d.cts +1 -1
- package/dist/nuxt.d.ts +1 -1
- package/dist/nuxt.js +4 -4
- package/dist/rollup.cjs +181 -67
- package/dist/rollup.d.cts +1 -1
- package/dist/rollup.d.ts +1 -1
- package/dist/rollup.js +2 -2
- package/dist/types.d.cts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/utils.cjs +13 -2
- package/dist/utils.d.cts +2 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.js +5 -3
- package/dist/vite.cjs +181 -67
- package/dist/vite.js +3 -3
- package/dist/webpack.cjs +181 -67
- package/dist/webpack.js +3 -3
- package/package.json +6 -4
- package/src/caddy/index.ts +68 -57
- package/src/caddy/utils.ts +41 -0
- package/src/index.ts +91 -21
- package/src/utils.ts +10 -0
- package/dist/chunk-3HKPYCSE.js +0 -9
package/README.md
CHANGED
|
@@ -56,6 +56,8 @@ module.exports = {
|
|
|
56
56
|
port: 443,
|
|
57
57
|
},
|
|
58
58
|
},
|
|
59
|
+
setupExitSignals: true,
|
|
60
|
+
allowedHosts: 'all',
|
|
59
61
|
},
|
|
60
62
|
plugins: [
|
|
61
63
|
require('unplugin-https-reverse-proxy/webpack')({ /* options */ })
|
|
@@ -96,6 +98,8 @@ module.exports = {
|
|
|
96
98
|
port: 443,
|
|
97
99
|
},
|
|
98
100
|
},
|
|
101
|
+
setupExitSignals: true,
|
|
102
|
+
allowedHosts: 'all',
|
|
99
103
|
},
|
|
100
104
|
configureWebpack: {
|
|
101
105
|
plugins: [
|
|
@@ -123,4 +127,4 @@ If your broswer shows a not trusted certificate warning, please check the keycha
|
|
|
123
127
|
|
|
124
128
|

|
|
125
129
|
|
|
126
|
-
More info, you can check [caddy about CA Root](https://caddyserver.com/docs/automatic-https#ca-root).
|
|
130
|
+
More info, you can check [caddy about CA Root](https://caddyserver.com/docs/automatic-https#ca-root).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// src/utils.ts
|
|
19
|
+
import { createConsola } from "consola";
|
|
20
|
+
var consola = createConsola({
|
|
21
|
+
level: 3
|
|
22
|
+
}).withTag("reverse-proxy");
|
|
23
|
+
function once(fn) {
|
|
24
|
+
let called = false;
|
|
25
|
+
return (...args) => {
|
|
26
|
+
if (called)
|
|
27
|
+
return;
|
|
28
|
+
called = true;
|
|
29
|
+
return fn(...args);
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
__spreadValues,
|
|
35
|
+
consola,
|
|
36
|
+
once
|
|
37
|
+
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
__spreadValues,
|
|
3
|
+
consola,
|
|
4
|
+
once
|
|
5
|
+
} from "./chunk-CQC5SSJR.js";
|
|
4
6
|
|
|
5
7
|
// src/index.ts
|
|
6
8
|
import process3 from "process";
|
|
@@ -15,7 +17,7 @@ import { spawn } from "child_process";
|
|
|
15
17
|
import { got } from "got-cjs";
|
|
16
18
|
import { HttpProxyAgent } from "http-proxy-agent";
|
|
17
19
|
import { HttpsProxyAgent } from "https-proxy-agent";
|
|
18
|
-
import
|
|
20
|
+
import _Hosts from "hosts-so-easy";
|
|
19
21
|
import kill from "kill-port";
|
|
20
22
|
|
|
21
23
|
// src/caddy/constants.ts
|
|
@@ -137,6 +139,8 @@ var supportList = [
|
|
|
137
139
|
|
|
138
140
|
// src/caddy/utils.ts
|
|
139
141
|
import { createServer } from "net";
|
|
142
|
+
import ora from "ora";
|
|
143
|
+
var spinner;
|
|
140
144
|
function tryPort(port) {
|
|
141
145
|
return new Promise((resolve, reject) => {
|
|
142
146
|
try {
|
|
@@ -155,8 +159,41 @@ function tryPort(port) {
|
|
|
155
159
|
}
|
|
156
160
|
});
|
|
157
161
|
}
|
|
162
|
+
function getNumber(number) {
|
|
163
|
+
if (number <= 0)
|
|
164
|
+
return "0%";
|
|
165
|
+
else if (number < 100)
|
|
166
|
+
return `${number.toFixed(2)}%`;
|
|
167
|
+
else
|
|
168
|
+
return "100%";
|
|
169
|
+
}
|
|
170
|
+
function logProgress(percent) {
|
|
171
|
+
if (!spinner) {
|
|
172
|
+
consola.log("");
|
|
173
|
+
spinner = ora({
|
|
174
|
+
text: "Start Download Caddy: 0%",
|
|
175
|
+
indent: 2
|
|
176
|
+
});
|
|
177
|
+
spinner.start();
|
|
178
|
+
} else {
|
|
179
|
+
spinner.text = `Download Caddy: ${getNumber(Number(percent) * 100)}`;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function logProgressOver() {
|
|
183
|
+
if (!spinner) {
|
|
184
|
+
spinner = ora({
|
|
185
|
+
text: "Start Download Caddy: 100%",
|
|
186
|
+
indent: 2
|
|
187
|
+
});
|
|
188
|
+
spinner.start();
|
|
189
|
+
} else {
|
|
190
|
+
spinner.succeed();
|
|
191
|
+
consola.log("");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
158
194
|
|
|
159
195
|
// src/caddy/index.ts
|
|
196
|
+
var Hosts = _Hosts.default || _Hosts;
|
|
160
197
|
async function download() {
|
|
161
198
|
if (await testCaddy())
|
|
162
199
|
return caddyPath;
|
|
@@ -180,7 +217,10 @@ async function download() {
|
|
|
180
217
|
http: httpAgent,
|
|
181
218
|
https: httpsAgent
|
|
182
219
|
}
|
|
220
|
+
}).on("downloadProgress", (progress) => {
|
|
221
|
+
logProgress(progress.percent);
|
|
183
222
|
}).pipe(file).on("finish", () => {
|
|
223
|
+
logProgressOver();
|
|
184
224
|
if (process2.platform === "win32")
|
|
185
225
|
return resolve(caddyPath);
|
|
186
226
|
chmodSync(caddyPath, 493);
|
|
@@ -195,7 +235,7 @@ function testCaddy() {
|
|
|
195
235
|
if (!existsSync(caddyPath))
|
|
196
236
|
return resolve(false);
|
|
197
237
|
chmodSync(caddyPath, 493);
|
|
198
|
-
const child = process2.platform === "win32" ? spawn(caddyPath, []) : spawn("sudo", [caddyPath]);
|
|
238
|
+
const child = process2.platform === "win32" ? spawn(caddyPath, []) : spawn("sudo", ["-E", caddyPath]);
|
|
199
239
|
child.on("close", () => {
|
|
200
240
|
return resolve(false);
|
|
201
241
|
});
|
|
@@ -210,6 +250,8 @@ function testCaddy() {
|
|
|
210
250
|
var CaddyInstant = class {
|
|
211
251
|
constructor() {
|
|
212
252
|
this.inited = false;
|
|
253
|
+
this.stoped = false;
|
|
254
|
+
this.host = new Hosts();
|
|
213
255
|
testCaddy().then(() => {
|
|
214
256
|
this.inited = true;
|
|
215
257
|
});
|
|
@@ -218,52 +260,46 @@ var CaddyInstant = class {
|
|
|
218
260
|
await download();
|
|
219
261
|
this.inited = true;
|
|
220
262
|
}
|
|
221
|
-
|
|
263
|
+
updateHost(ip, host) {
|
|
222
264
|
["localhost", "0.0.0.0"].includes(ip) && (ip = "127.0.0.1");
|
|
265
|
+
this.host.add(ip, host);
|
|
223
266
|
return new Promise((resolve, reject) => {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
});
|
|
267
|
+
if (process2.platform === "win32") {
|
|
268
|
+
spawn("ipconfig", ["/flushdns"]).on("error", (err) => {
|
|
269
|
+
consola.error(err);
|
|
270
|
+
return resolve(false);
|
|
271
|
+
}).on("close", () => {
|
|
272
|
+
resolve(true);
|
|
273
|
+
});
|
|
274
|
+
} else {
|
|
275
|
+
spawn("sudo", ["-E", "killall", "-HUP", "mDNSResponder"]).on("error", (err) => {
|
|
276
|
+
consola.error(err);
|
|
277
|
+
return resolve(false);
|
|
278
|
+
}).on("close", () => {
|
|
279
|
+
resolve(true);
|
|
280
|
+
});
|
|
281
|
+
}
|
|
243
282
|
});
|
|
244
283
|
}
|
|
245
|
-
|
|
284
|
+
restoreHost(ip, host) {
|
|
246
285
|
["localhost", "0.0.0.0"].includes(ip) && (ip = "127.0.0.1");
|
|
286
|
+
this.host.remove(ip, host);
|
|
247
287
|
return new Promise((resolve, reject) => {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
});
|
|
288
|
+
if (process2.platform === "win32") {
|
|
289
|
+
spawn("ipconfig", ["/flushdns"]).on("error", (err) => {
|
|
290
|
+
consola.error(err);
|
|
291
|
+
return resolve(false);
|
|
292
|
+
}).on("close", () => {
|
|
293
|
+
resolve(true);
|
|
294
|
+
});
|
|
295
|
+
} else {
|
|
296
|
+
spawn("sudo", ["-E", "killall", "-HUP", "mDNSResponder"]).on("error", (err) => {
|
|
297
|
+
consola.error(err);
|
|
298
|
+
return resolve(false);
|
|
299
|
+
}).on("close", () => {
|
|
300
|
+
resolve(true);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
267
303
|
});
|
|
268
304
|
}
|
|
269
305
|
/**
|
|
@@ -280,14 +316,15 @@ var CaddyInstant = class {
|
|
|
280
316
|
} = options || {};
|
|
281
317
|
if (!this.inited)
|
|
282
318
|
await this.init();
|
|
283
|
-
if (!await this.updateHost(source.split(":")[0], target.split(":")[0]))
|
|
284
|
-
throw new Error("update host failed");
|
|
285
319
|
if (await tryPort(443))
|
|
286
320
|
await kill(443, "tcp");
|
|
287
321
|
if (process2.platform === "win32" && await tryPort(80))
|
|
288
322
|
await kill(80, "tcp");
|
|
323
|
+
if (!await this.updateHost(source.split(":")[0], target.split(":")[0]))
|
|
324
|
+
throw new Error("update host failed");
|
|
325
|
+
consola.success("update host success\n");
|
|
289
326
|
return new Promise((resolve, reject) => {
|
|
290
|
-
const child = process2.platform !== "win32" ? spawn("sudo", [caddyPath, "reverse-proxy", "--from", `${target.split(":")[0]}`, "--to", `${source}`, "--internal-certs"]) : spawn(caddyPath, ["reverse-proxy", "--from", `${target.split(":")[0]}`, "--to", `${source}`, "--internal-certs"]);
|
|
327
|
+
const child = process2.platform !== "win32" ? spawn("sudo", ["-E", caddyPath, "reverse-proxy", "--from", `${target.split(":")[0]}`, "--to", `${source}`, "--internal-certs"]) : spawn(caddyPath, ["reverse-proxy", "--from", `${target.split(":")[0]}`, "--to", `${source}`, "--internal-certs"]);
|
|
291
328
|
child.on("error", (err) => {
|
|
292
329
|
return reject(err);
|
|
293
330
|
});
|
|
@@ -303,14 +340,21 @@ var CaddyInstant = class {
|
|
|
303
340
|
});
|
|
304
341
|
child.stdout.on("data", (_data) => {
|
|
305
342
|
consola.info(_data.toString());
|
|
306
|
-
resolve(async () => {
|
|
307
|
-
if (!restore)
|
|
343
|
+
resolve(async (callback) => {
|
|
344
|
+
if (!restore || this.stoped)
|
|
308
345
|
return;
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
346
|
+
try {
|
|
347
|
+
if (await this.restoreHost(source.split(":")[0], target.split(":")[0]))
|
|
348
|
+
consola.success("restore host success\n");
|
|
349
|
+
else
|
|
350
|
+
consola.fail("restore host failed\n");
|
|
351
|
+
} catch (e) {
|
|
352
|
+
consola.error(e);
|
|
312
353
|
consola.fail("restore host failed\n");
|
|
354
|
+
}
|
|
355
|
+
this.stoped = true;
|
|
313
356
|
child.kill();
|
|
357
|
+
callback && callback();
|
|
314
358
|
});
|
|
315
359
|
});
|
|
316
360
|
});
|
|
@@ -320,12 +364,53 @@ var CaddyInstant = class {
|
|
|
320
364
|
// src/index.ts
|
|
321
365
|
var config;
|
|
322
366
|
var caddy;
|
|
367
|
+
var _stop;
|
|
368
|
+
var _servce;
|
|
369
|
+
function registerExit(clear) {
|
|
370
|
+
process3.on("beforeExit", async (_code) => {
|
|
371
|
+
await clear();
|
|
372
|
+
});
|
|
373
|
+
process3.on("uncaughtException", async (err) => {
|
|
374
|
+
console.error("An uncaught error occurred!", err.stack);
|
|
375
|
+
await clear();
|
|
376
|
+
process3.nextTick(() => {
|
|
377
|
+
process3.exit(1);
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
process3.on("unhandledRejection", async (reason, promise) => {
|
|
381
|
+
console.error("Unhandled Rejection at:", promise, "reason:", reason);
|
|
382
|
+
await clear();
|
|
383
|
+
process3.nextTick(() => {
|
|
384
|
+
process3.exit(1);
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
process3.once("SIGINT", async () => {
|
|
388
|
+
await clear();
|
|
389
|
+
process3.emit("SIGINT");
|
|
390
|
+
});
|
|
391
|
+
process3.once("SIGTERM", async () => {
|
|
392
|
+
await clear();
|
|
393
|
+
process3.emit("SIGTERM");
|
|
394
|
+
});
|
|
395
|
+
}
|
|
323
396
|
var unpluginFactory = (options) => ({
|
|
324
397
|
name: "unplugin-https-reverse-proxy",
|
|
325
|
-
enforce: "
|
|
398
|
+
enforce: "pre",
|
|
326
399
|
vite: {
|
|
327
400
|
configResolved(_config) {
|
|
328
401
|
config = _config;
|
|
402
|
+
registerExit(async () => {
|
|
403
|
+
var _a;
|
|
404
|
+
try {
|
|
405
|
+
_servce && _servce.close();
|
|
406
|
+
(_a = _servce.httpServer) == null ? void 0 : _a.close(async () => {
|
|
407
|
+
_stop && await _stop();
|
|
408
|
+
});
|
|
409
|
+
_stop && await _stop();
|
|
410
|
+
} catch (e) {
|
|
411
|
+
consola.error(e);
|
|
412
|
+
}
|
|
413
|
+
});
|
|
329
414
|
},
|
|
330
415
|
configureServer(server) {
|
|
331
416
|
const {
|
|
@@ -338,6 +423,7 @@ var unpluginFactory = (options) => ({
|
|
|
338
423
|
consola.fail("please provide target");
|
|
339
424
|
return;
|
|
340
425
|
}
|
|
426
|
+
_servce = server;
|
|
341
427
|
const _printUrls = server.printUrls;
|
|
342
428
|
server.printUrls = () => {
|
|
343
429
|
var _a;
|
|
@@ -350,18 +436,16 @@ var unpluginFactory = (options) => ({
|
|
|
350
436
|
}
|
|
351
437
|
const base = server.config.base || "/";
|
|
352
438
|
try {
|
|
353
|
-
|
|
354
|
-
|
|
439
|
+
if (caddy)
|
|
440
|
+
return;
|
|
441
|
+
caddy = new CaddyInstant();
|
|
442
|
+
caddy.run(source, target, {
|
|
355
443
|
base,
|
|
356
444
|
showCaddyLog: options.showCaddyLog
|
|
357
445
|
}).then((stop) => {
|
|
358
446
|
const colorUrl = (url2) => c.green(url2.replace(/:(\d+)\//, (_, port) => `:${c.bold(port)}/`));
|
|
359
447
|
consola.success(` ${c.green("\u279C")} ${c.bold("run caddy reverse proxy success")}: ${colorUrl(`https://${target}${base}`)}`);
|
|
360
|
-
|
|
361
|
-
await stop();
|
|
362
|
-
server.close();
|
|
363
|
-
process3.exit();
|
|
364
|
-
});
|
|
448
|
+
!_stop && (_stop = once(stop));
|
|
365
449
|
}).catch((e) => {
|
|
366
450
|
throw e;
|
|
367
451
|
});
|
|
@@ -383,23 +467,32 @@ var unpluginFactory = (options) => ({
|
|
|
383
467
|
return;
|
|
384
468
|
}
|
|
385
469
|
try {
|
|
386
|
-
const devServer =
|
|
387
|
-
|
|
470
|
+
const devServer = __spreadValues(__spreadValues({
|
|
471
|
+
host: "127.0.0.1",
|
|
472
|
+
port: 8080
|
|
473
|
+
}, compiler.options.devServer), process3.VUE_CLI_SERVICE.projectOptions.devServer);
|
|
474
|
+
const source = `${devServer.host}:${devServer.port}`;
|
|
388
475
|
if (caddy)
|
|
389
476
|
return;
|
|
477
|
+
const _close = compiler.close.bind(compiler);
|
|
478
|
+
compiler.close = async (callback) => {
|
|
479
|
+
try {
|
|
480
|
+
_stop && await _stop(() => {
|
|
481
|
+
_close && _close(callback);
|
|
482
|
+
});
|
|
483
|
+
} catch (e) {
|
|
484
|
+
consola.error(e);
|
|
485
|
+
process3.exit(1);
|
|
486
|
+
}
|
|
487
|
+
};
|
|
390
488
|
caddy = new CaddyInstant();
|
|
391
489
|
caddy.run(source, target, {
|
|
392
490
|
showCaddyLog: options.showCaddyLog
|
|
393
491
|
}).then((stop) => {
|
|
394
492
|
const colorUrl = (url) => c.green(url.replace(/:(\d+)\//, (_, port) => `:${c.bold(port)}/`));
|
|
395
|
-
compiler.hooks.done.tap("unplugin-https-reverse-proxy", (
|
|
396
|
-
if (stats.hasErrors())
|
|
397
|
-
return;
|
|
493
|
+
compiler.hooks.done.tap("unplugin-https-reverse-proxy", () => {
|
|
398
494
|
consola.success(` ${c.green("\u279C")} ${c.bold("run caddy reverse proxy success")}: ${colorUrl(`https://${target}`)}`);
|
|
399
|
-
|
|
400
|
-
process3.on("SIGINT", async () => {
|
|
401
|
-
await stop();
|
|
402
|
-
process3.exit();
|
|
495
|
+
!_stop && (_stop = once(stop));
|
|
403
496
|
});
|
|
404
497
|
}).catch((e) => {
|
|
405
498
|
throw e;
|