Add support for outgoing request proxying Closes #2824
| @@ -37,6 +37,16 @@ basicAuthUser: | ||
| 37 | 37 | password: "password" |
| 38 | 38 | # Enables CORS proxy middleware |
| 39 | 39 | enableCorsProxy: false |
| 40 | +# -- REQUEST PROXY CONFIGURATION -- | |
| 41 | +requestProxy: | |
| 42 | + # If a proxy is enabled, all outgoing HTTP/HTTPS requests will be routed through it. | |
| 43 | + enabled: false | |
| 44 | + # Proxy URL. Possible protocols: http, https, socks, socks5, socks4, pac | |
| 45 | + url: "socks5://username:password@example.com:1080" | |
| 46 | + # Proxy bypass list. Requests to these hosts won't be routed through the proxy. | |
| 47 | + bypass: | |
| 48 | + - localhost | |
| 49 | + - 127.0.0.1 | |
| 40 | 50 | # Enable multi-user mode |
| 41 | 51 | enableUserAccounts: false |
| 42 | 52 | # Enable discreet login mode: hides user list on the login screen |
| @@ -40,6 +40,7 @@ | ||
| 40 | 40 | "png-chunk-text": "^1.0.0", |
| 41 | 41 | "png-chunks-encode": "^1.0.0", |
| 42 | 42 | "png-chunks-extract": "^1.0.0", |
| 43 | + "proxy-agent": "^6.4.0", | |
| 43 | 44 | "rate-limiter-flexible": "^5.0.0", |
| 44 | 45 | "response-time": "^2.3.2", |
| 45 | 46 | "sanitize-filename": "^1.6.3", |
| @@ -941,6 +942,12 @@ | ||
| 941 | 942 | "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", |
| 942 | 943 | "license": "MIT" |
| 943 | 944 | }, |
| 945 | + "node_modules/@tootallnate/quickjs-emscripten": { | |
| 946 | + "version": "0.23.0", | |
| 947 | + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", | |
| 948 | + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", | |
| 949 | + "license": "MIT" | |
| 950 | + }, | |
| 944 | 951 | "node_modules/@types/cacheable-request": { |
| 945 | 952 | "version": "6.0.3", |
| 946 | 953 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", |
| @@ -1080,6 +1087,41 @@ | ||
| 1080 | 1087 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" |
| 1081 | 1088 | } |
| 1082 | 1089 | }, |
| 1090 | + "node_modules/agent-base": { | |
| 1091 | + "version": "7.1.1", | |
| 1092 | + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", | |
| 1093 | + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", | |
| 1094 | + "license": "MIT", | |
| 1095 | + "dependencies": { | |
| 1096 | + "debug": "^4.3.4" | |
| 1097 | + }, | |
| 1098 | + "engines": { | |
| 1099 | + "node": ">= 14" | |
| 1100 | + } | |
| 1101 | + }, | |
| 1102 | + "node_modules/agent-base/node_modules/debug": { | |
| 1103 | + "version": "4.3.7", | |
| 1104 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
| 1105 | + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
| 1106 | + "license": "MIT", | |
| 1107 | + "dependencies": { | |
| 1108 | + "ms": "^2.1.3" | |
| 1109 | + }, | |
| 1110 | + "engines": { | |
| 1111 | + "node": ">=6.0" | |
| 1112 | + }, | |
| 1113 | + "peerDependenciesMeta": { | |
| 1114 | + "supports-color": { | |
| 1115 | + "optional": true | |
| 1116 | + } | |
| 1117 | + } | |
| 1118 | + }, | |
| 1119 | + "node_modules/agent-base/node_modules/ms": { | |
| 1120 | + "version": "2.1.3", | |
| 1121 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | |
| 1122 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | |
| 1123 | + "license": "MIT" | |
| 1124 | + }, | |
| 1083 | 1125 | "node_modules/agentkeepalive": { |
| 1084 | 1126 | "version": "4.5.0", |
| 1085 | 1127 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", |
| @@ -1382,6 +1424,18 @@ | ||
| 1382 | 1424 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", |
| 1383 | 1425 | "license": "MIT" |
| 1384 | 1426 | }, |
| 1427 | + "node_modules/ast-types": { | |
| 1428 | + "version": "0.13.4", | |
| 1429 | + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", | |
| 1430 | + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", | |
| 1431 | + "license": "MIT", | |
| 1432 | + "dependencies": { | |
| 1433 | + "tslib": "^2.0.1" | |
| 1434 | + }, | |
| 1435 | + "engines": { | |
| 1436 | + "node": ">=4" | |
| 1437 | + } | |
| 1438 | + }, | |
| 1385 | 1439 | "node_modules/async": { |
| 1386 | 1440 | "version": "3.2.5", |
| 1387 | 1441 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", |
| @@ -1445,6 +1499,15 @@ | ||
| 1445 | 1499 | ], |
| 1446 | 1500 | "license": "MIT" |
| 1447 | 1501 | }, |
| 1502 | + "node_modules/basic-ftp": { | |
| 1503 | + "version": "5.0.5", | |
| 1504 | + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", | |
| 1505 | + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", | |
| 1506 | + "license": "MIT", | |
| 1507 | + "engines": { | |
| 1508 | + "node": ">=10.0.0" | |
| 1509 | + } | |
| 1510 | + }, | |
| 1448 | 1511 | "node_modules/bing-translate-api": { |
| 1449 | 1512 | "version": "2.9.1", |
| 1450 | 1513 | "resolved": "https://registry.npmjs.org/bing-translate-api/-/bing-translate-api-2.9.1.tgz", |
| @@ -2250,6 +2313,15 @@ | ||
| 2250 | 2313 | "url": "https://github.com/sponsors/fb55" |
| 2251 | 2314 | } |
| 2252 | 2315 | }, |
| 2316 | + "node_modules/data-uri-to-buffer": { | |
| 2317 | + "version": "6.0.2", | |
| 2318 | + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", | |
| 2319 | + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", | |
| 2320 | + "license": "MIT", | |
| 2321 | + "engines": { | |
| 2322 | + "node": ">= 14" | |
| 2323 | + } | |
| 2324 | + }, | |
| 2253 | 2325 | "node_modules/debug": { |
| 2254 | 2326 | "version": "2.6.9", |
| 2255 | 2327 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
| @@ -2316,6 +2388,20 @@ | ||
| 2316 | 2388 | "node": ">=8" |
| 2317 | 2389 | } |
| 2318 | 2390 | }, |
| 2391 | + "node_modules/degenerator": { | |
| 2392 | + "version": "5.0.1", | |
| 2393 | + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", | |
| 2394 | + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", | |
| 2395 | + "license": "MIT", | |
| 2396 | + "dependencies": { | |
| 2397 | + "ast-types": "^0.13.4", | |
| 2398 | + "escodegen": "^2.1.0", | |
| 2399 | + "esprima": "^4.0.1" | |
| 2400 | + }, | |
| 2401 | + "engines": { | |
| 2402 | + "node": ">= 14" | |
| 2403 | + } | |
| 2404 | + }, | |
| 2319 | 2405 | "node_modules/delayed-stream": { |
| 2320 | 2406 | "version": "1.0.0", |
| 2321 | 2407 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", |
| @@ -2528,6 +2614,27 @@ | ||
| 2528 | 2614 | "node": ">=0.8.0" |
| 2529 | 2615 | } |
| 2530 | 2616 | }, |
| 2617 | + "node_modules/escodegen": { | |
| 2618 | + "version": "2.1.0", | |
| 2619 | + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", | |
| 2620 | + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", | |
| 2621 | + "license": "BSD-2-Clause", | |
| 2622 | + "dependencies": { | |
| 2623 | + "esprima": "^4.0.1", | |
| 2624 | + "estraverse": "^5.2.0", | |
| 2625 | + "esutils": "^2.0.2" | |
| 2626 | + }, | |
| 2627 | + "bin": { | |
| 2628 | + "escodegen": "bin/escodegen.js", | |
| 2629 | + "esgenerate": "bin/esgenerate.js" | |
| 2630 | + }, | |
| 2631 | + "engines": { | |
| 2632 | + "node": ">=6.0" | |
| 2633 | + }, | |
| 2634 | + "optionalDependencies": { | |
| 2635 | + "source-map": "~0.6.1" | |
| 2636 | + } | |
| 2637 | + }, | |
| 2531 | 2638 | "node_modules/eslint": { |
| 2532 | 2639 | "version": "8.57.0", |
| 2533 | 2640 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", |
| @@ -2683,6 +2790,19 @@ | ||
| 2683 | 2790 | "url": "https://opencollective.com/eslint" |
| 2684 | 2791 | } |
| 2685 | 2792 | }, |
| 2793 | + "node_modules/esprima": { | |
| 2794 | + "version": "4.0.1", | |
| 2795 | + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", | |
| 2796 | + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", | |
| 2797 | + "license": "BSD-2-Clause", | |
| 2798 | + "bin": { | |
| 2799 | + "esparse": "bin/esparse.js", | |
| 2800 | + "esvalidate": "bin/esvalidate.js" | |
| 2801 | + }, | |
| 2802 | + "engines": { | |
| 2803 | + "node": ">=4" | |
| 2804 | + } | |
| 2805 | + }, | |
| 2686 | 2806 | "node_modules/esquery": { |
| 2687 | 2807 | "version": "1.5.0", |
| 2688 | 2808 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", |
| @@ -2713,7 +2833,6 @@ | ||
| 2713 | 2833 | "version": "5.3.0", |
| 2714 | 2834 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", |
| 2715 | 2835 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", |
| 2716 | - "dev": true, | |
| 2717 | 2836 | "license": "BSD-2-Clause", |
| 2718 | 2837 | "engines": { |
| 2719 | 2838 | "node": ">=4.0" |
| @@ -2723,7 +2842,6 @@ | ||
| 2723 | 2842 | "version": "2.0.3", |
| 2724 | 2843 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", |
| 2725 | 2844 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", |
| 2726 | - "dev": true, | |
| 2727 | 2845 | "license": "BSD-2-Clause", |
| 2728 | 2846 | "engines": { |
| 2729 | 2847 | "node": ">=0.10.0" |
| @@ -3071,6 +3189,20 @@ | ||
| 3071 | 3189 | "node": ">= 0.6" |
| 3072 | 3190 | } |
| 3073 | 3191 | }, |
| 3192 | + "node_modules/fs-extra": { | |
| 3193 | + "version": "11.2.0", | |
| 3194 | + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", | |
| 3195 | + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", | |
| 3196 | + "license": "MIT", | |
| 3197 | + "dependencies": { | |
| 3198 | + "graceful-fs": "^4.2.0", | |
| 3199 | + "jsonfile": "^6.0.1", | |
| 3200 | + "universalify": "^2.0.0" | |
| 3201 | + }, | |
| 3202 | + "engines": { | |
| 3203 | + "node": ">=14.14" | |
| 3204 | + } | |
| 3205 | + }, | |
| 3074 | 3206 | "node_modules/fs.realpath": { |
| 3075 | 3207 | "version": "1.0.0", |
| 3076 | 3208 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
| @@ -3130,6 +3262,44 @@ | ||
| 3130 | 3262 | "url": "https://github.com/sponsors/sindresorhus" |
| 3131 | 3263 | } |
| 3132 | 3264 | }, |
| 3265 | + "node_modules/get-uri": { | |
| 3266 | + "version": "6.0.3", | |
| 3267 | + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", | |
| 3268 | + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", | |
| 3269 | + "license": "MIT", | |
| 3270 | + "dependencies": { | |
| 3271 | + "basic-ftp": "^5.0.2", | |
| 3272 | + "data-uri-to-buffer": "^6.0.2", | |
| 3273 | + "debug": "^4.3.4", | |
| 3274 | + "fs-extra": "^11.2.0" | |
| 3275 | + }, | |
| 3276 | + "engines": { | |
| 3277 | + "node": ">= 14" | |
| 3278 | + } | |
| 3279 | + }, | |
| 3280 | + "node_modules/get-uri/node_modules/debug": { | |
| 3281 | + "version": "4.3.7", | |
| 3282 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
| 3283 | + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
| 3284 | + "license": "MIT", | |
| 3285 | + "dependencies": { | |
| 3286 | + "ms": "^2.1.3" | |
| 3287 | + }, | |
| 3288 | + "engines": { | |
| 3289 | + "node": ">=6.0" | |
| 3290 | + }, | |
| 3291 | + "peerDependenciesMeta": { | |
| 3292 | + "supports-color": { | |
| 3293 | + "optional": true | |
| 3294 | + } | |
| 3295 | + } | |
| 3296 | + }, | |
| 3297 | + "node_modules/get-uri/node_modules/ms": { | |
| 3298 | + "version": "2.1.3", | |
| 3299 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | |
| 3300 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | |
| 3301 | + "license": "MIT" | |
| 3302 | + }, | |
| 3133 | 3303 | "node_modules/gifwrap": { |
| 3134 | 3304 | "version": "0.10.1", |
| 3135 | 3305 | "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", |
| @@ -3369,6 +3539,42 @@ | ||
| 3369 | 3539 | "node": ">= 0.8" |
| 3370 | 3540 | } |
| 3371 | 3541 | }, |
| 3542 | + "node_modules/http-proxy-agent": { | |
| 3543 | + "version": "7.0.2", | |
| 3544 | + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", | |
| 3545 | + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", | |
| 3546 | + "license": "MIT", | |
| 3547 | + "dependencies": { | |
| 3548 | + "agent-base": "^7.1.0", | |
| 3549 | + "debug": "^4.3.4" | |
| 3550 | + }, | |
| 3551 | + "engines": { | |
| 3552 | + "node": ">= 14" | |
| 3553 | + } | |
| 3554 | + }, | |
| 3555 | + "node_modules/http-proxy-agent/node_modules/debug": { | |
| 3556 | + "version": "4.3.7", | |
| 3557 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
| 3558 | + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
| 3559 | + "license": "MIT", | |
| 3560 | + "dependencies": { | |
| 3561 | + "ms": "^2.1.3" | |
| 3562 | + }, | |
| 3563 | + "engines": { | |
| 3564 | + "node": ">=6.0" | |
| 3565 | + }, | |
| 3566 | + "peerDependenciesMeta": { | |
| 3567 | + "supports-color": { | |
| 3568 | + "optional": true | |
| 3569 | + } | |
| 3570 | + } | |
| 3571 | + }, | |
| 3572 | + "node_modules/http-proxy-agent/node_modules/ms": { | |
| 3573 | + "version": "2.1.3", | |
| 3574 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | |
| 3575 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | |
| 3576 | + "license": "MIT" | |
| 3577 | + }, | |
| 3372 | 3578 | "node_modules/http2-wrapper": { |
| 3373 | 3579 | "version": "1.0.3", |
| 3374 | 3580 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", |
| @@ -3382,6 +3588,42 @@ | ||
| 3382 | 3588 | "node": ">=10.19.0" |
| 3383 | 3589 | } |
| 3384 | 3590 | }, |
| 3591 | + "node_modules/https-proxy-agent": { | |
| 3592 | + "version": "7.0.5", | |
| 3593 | + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", | |
| 3594 | + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", | |
| 3595 | + "license": "MIT", | |
| 3596 | + "dependencies": { | |
| 3597 | + "agent-base": "^7.0.2", | |
| 3598 | + "debug": "4" | |
| 3599 | + }, | |
| 3600 | + "engines": { | |
| 3601 | + "node": ">= 14" | |
| 3602 | + } | |
| 3603 | + }, | |
| 3604 | + "node_modules/https-proxy-agent/node_modules/debug": { | |
| 3605 | + "version": "4.3.7", | |
| 3606 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
| 3607 | + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
| 3608 | + "license": "MIT", | |
| 3609 | + "dependencies": { | |
| 3610 | + "ms": "^2.1.3" | |
| 3611 | + }, | |
| 3612 | + "engines": { | |
| 3613 | + "node": ">=6.0" | |
| 3614 | + }, | |
| 3615 | + "peerDependenciesMeta": { | |
| 3616 | + "supports-color": { | |
| 3617 | + "optional": true | |
| 3618 | + } | |
| 3619 | + } | |
| 3620 | + }, | |
| 3621 | + "node_modules/https-proxy-agent/node_modules/ms": { | |
| 3622 | + "version": "2.1.3", | |
| 3623 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | |
| 3624 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | |
| 3625 | + "license": "MIT" | |
| 3626 | + }, | |
| 3385 | 3627 | "node_modules/humanize-ms": { |
| 3386 | 3628 | "version": "1.2.1", |
| 3387 | 3629 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", |
| @@ -3485,6 +3727,19 @@ | ||
| 3485 | 3727 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", |
| 3486 | 3728 | "license": "ISC" |
| 3487 | 3729 | }, |
| 3730 | + "node_modules/ip-address": { | |
| 3731 | + "version": "9.0.5", | |
| 3732 | + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", | |
| 3733 | + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", | |
| 3734 | + "license": "MIT", | |
| 3735 | + "dependencies": { | |
| 3736 | + "jsbn": "1.1.0", | |
| 3737 | + "sprintf-js": "^1.1.3" | |
| 3738 | + }, | |
| 3739 | + "engines": { | |
| 3740 | + "node": ">= 12" | |
| 3741 | + } | |
| 3742 | + }, | |
| 3488 | 3743 | "node_modules/ip-matching": { |
| 3489 | 3744 | "version": "2.1.2", |
| 3490 | 3745 | "resolved": "https://registry.npmjs.org/ip-matching/-/ip-matching-2.1.2.tgz", |
| @@ -3669,6 +3924,12 @@ | ||
| 3669 | 3924 | "js-yaml": "bin/js-yaml.js" |
| 3670 | 3925 | } |
| 3671 | 3926 | }, |
| 3927 | + "node_modules/jsbn": { | |
| 3928 | + "version": "1.1.0", | |
| 3929 | + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", | |
| 3930 | + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", | |
| 3931 | + "license": "MIT" | |
| 3932 | + }, | |
| 3672 | 3933 | "node_modules/json-buffer": { |
| 3673 | 3934 | "version": "3.0.1", |
| 3674 | 3935 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", |
| @@ -3761,6 +4022,18 @@ | ||
| 3761 | 4022 | "dev": true, |
| 3762 | 4023 | "license": "MIT" |
| 3763 | 4024 | }, |
| 4025 | + "node_modules/jsonfile": { | |
| 4026 | + "version": "6.1.0", | |
| 4027 | + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", | |
| 4028 | + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", | |
| 4029 | + "license": "MIT", | |
| 4030 | + "dependencies": { | |
| 4031 | + "universalify": "^2.0.0" | |
| 4032 | + }, | |
| 4033 | + "optionalDependencies": { | |
| 4034 | + "graceful-fs": "^4.1.6" | |
| 4035 | + } | |
| 4036 | + }, | |
| 3764 | 4037 | "node_modules/keygrip": { |
| 3765 | 4038 | "version": "1.1.0", |
| 3766 | 4039 | "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", |
| @@ -4053,6 +4326,15 @@ | ||
| 4053 | 4326 | "node": ">= 0.6" |
| 4054 | 4327 | } |
| 4055 | 4328 | }, |
| 4329 | + "node_modules/netmask": { | |
| 4330 | + "version": "2.0.2", | |
| 4331 | + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", | |
| 4332 | + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", | |
| 4333 | + "license": "MIT", | |
| 4334 | + "engines": { | |
| 4335 | + "node": ">= 0.4.0" | |
| 4336 | + } | |
| 4337 | + }, | |
| 4056 | 4338 | "node_modules/node-domexception": { |
| 4057 | 4339 | "version": "1.0.0", |
| 4058 | 4340 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", |
| @@ -4323,6 +4605,61 @@ | ||
| 4323 | 4605 | "url": "https://github.com/sponsors/sindresorhus" |
| 4324 | 4606 | } |
| 4325 | 4607 | }, |
| 4608 | + "node_modules/pac-proxy-agent": { | |
| 4609 | + "version": "7.0.2", | |
| 4610 | + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", | |
| 4611 | + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", | |
| 4612 | + "license": "MIT", | |
| 4613 | + "dependencies": { | |
| 4614 | + "@tootallnate/quickjs-emscripten": "^0.23.0", | |
| 4615 | + "agent-base": "^7.0.2", | |
| 4616 | + "debug": "^4.3.4", | |
| 4617 | + "get-uri": "^6.0.1", | |
| 4618 | + "http-proxy-agent": "^7.0.0", | |
| 4619 | + "https-proxy-agent": "^7.0.5", | |
| 4620 | + "pac-resolver": "^7.0.1", | |
| 4621 | + "socks-proxy-agent": "^8.0.4" | |
| 4622 | + }, | |
| 4623 | + "engines": { | |
| 4624 | + "node": ">= 14" | |
| 4625 | + } | |
| 4626 | + }, | |
| 4627 | + "node_modules/pac-proxy-agent/node_modules/debug": { | |
| 4628 | + "version": "4.3.7", | |
| 4629 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
| 4630 | + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
| 4631 | + "license": "MIT", | |
| 4632 | + "dependencies": { | |
| 4633 | + "ms": "^2.1.3" | |
| 4634 | + }, | |
| 4635 | + "engines": { | |
| 4636 | + "node": ">=6.0" | |
| 4637 | + }, | |
| 4638 | + "peerDependenciesMeta": { | |
| 4639 | + "supports-color": { | |
| 4640 | + "optional": true | |
| 4641 | + } | |
| 4642 | + } | |
| 4643 | + }, | |
| 4644 | + "node_modules/pac-proxy-agent/node_modules/ms": { | |
| 4645 | + "version": "2.1.3", | |
| 4646 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | |
| 4647 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | |
| 4648 | + "license": "MIT" | |
| 4649 | + }, | |
| 4650 | + "node_modules/pac-resolver": { | |
| 4651 | + "version": "7.0.1", | |
| 4652 | + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", | |
| 4653 | + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", | |
| 4654 | + "license": "MIT", | |
| 4655 | + "dependencies": { | |
| 4656 | + "degenerator": "^5.0.0", | |
| 4657 | + "netmask": "^2.0.2" | |
| 4658 | + }, | |
| 4659 | + "engines": { | |
| 4660 | + "node": ">= 14" | |
| 4661 | + } | |
| 4662 | + }, | |
| 4326 | 4663 | "node_modules/pako": { |
| 4327 | 4664 | "version": "1.0.11", |
| 4328 | 4665 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", |
| @@ -4618,6 +4955,57 @@ | ||
| 4618 | 4955 | "node": ">= 0.10" |
| 4619 | 4956 | } |
| 4620 | 4957 | }, |
| 4958 | + "node_modules/proxy-agent": { | |
| 4959 | + "version": "6.4.0", | |
| 4960 | + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", | |
| 4961 | + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", | |
| 4962 | + "license": "MIT", | |
| 4963 | + "dependencies": { | |
| 4964 | + "agent-base": "^7.0.2", | |
| 4965 | + "debug": "^4.3.4", | |
| 4966 | + "http-proxy-agent": "^7.0.1", | |
| 4967 | + "https-proxy-agent": "^7.0.3", | |
| 4968 | + "lru-cache": "^7.14.1", | |
| 4969 | + "pac-proxy-agent": "^7.0.1", | |
| 4970 | + "proxy-from-env": "^1.1.0", | |
| 4971 | + "socks-proxy-agent": "^8.0.2" | |
| 4972 | + }, | |
| 4973 | + "engines": { | |
| 4974 | + "node": ">= 14" | |
| 4975 | + } | |
| 4976 | + }, | |
| 4977 | + "node_modules/proxy-agent/node_modules/debug": { | |
| 4978 | + "version": "4.3.7", | |
| 4979 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
| 4980 | + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
| 4981 | + "license": "MIT", | |
| 4982 | + "dependencies": { | |
| 4983 | + "ms": "^2.1.3" | |
| 4984 | + }, | |
| 4985 | + "engines": { | |
| 4986 | + "node": ">=6.0" | |
| 4987 | + }, | |
| 4988 | + "peerDependenciesMeta": { | |
| 4989 | + "supports-color": { | |
| 4990 | + "optional": true | |
| 4991 | + } | |
| 4992 | + } | |
| 4993 | + }, | |
| 4994 | + "node_modules/proxy-agent/node_modules/lru-cache": { | |
| 4995 | + "version": "7.18.3", | |
| 4996 | + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", | |
| 4997 | + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", | |
| 4998 | + "license": "ISC", | |
| 4999 | + "engines": { | |
| 5000 | + "node": ">=12" | |
| 5001 | + } | |
| 5002 | + }, | |
| 5003 | + "node_modules/proxy-agent/node_modules/ms": { | |
| 5004 | + "version": "2.1.3", | |
| 5005 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | |
| 5006 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | |
| 5007 | + "license": "MIT" | |
| 5008 | + }, | |
| 4621 | 5009 | "node_modules/proxy-from-env": { |
| 4622 | 5010 | "version": "1.1.0", |
| 4623 | 5011 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", |
| @@ -5165,6 +5553,83 @@ | ||
| 5165 | 5553 | "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", |
| 5166 | 5554 | "license": "MIT" |
| 5167 | 5555 | }, |
| 5556 | + "node_modules/smart-buffer": { | |
| 5557 | + "version": "4.2.0", | |
| 5558 | + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", | |
| 5559 | + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", | |
| 5560 | + "license": "MIT", | |
| 5561 | + "engines": { | |
| 5562 | + "node": ">= 6.0.0", | |
| 5563 | + "npm": ">= 3.0.0" | |
| 5564 | + } | |
| 5565 | + }, | |
| 5566 | + "node_modules/socks": { | |
| 5567 | + "version": "2.8.3", | |
| 5568 | + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", | |
| 5569 | + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", | |
| 5570 | + "license": "MIT", | |
| 5571 | + "dependencies": { | |
| 5572 | + "ip-address": "^9.0.5", | |
| 5573 | + "smart-buffer": "^4.2.0" | |
| 5574 | + }, | |
| 5575 | + "engines": { | |
| 5576 | + "node": ">= 10.0.0", | |
| 5577 | + "npm": ">= 3.0.0" | |
| 5578 | + } | |
| 5579 | + }, | |
| 5580 | + "node_modules/socks-proxy-agent": { | |
| 5581 | + "version": "8.0.4", | |
| 5582 | + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", | |
| 5583 | + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", | |
| 5584 | + "license": "MIT", | |
| 5585 | + "dependencies": { | |
| 5586 | + "agent-base": "^7.1.1", | |
| 5587 | + "debug": "^4.3.4", | |
| 5588 | + "socks": "^2.8.3" | |
| 5589 | + }, | |
| 5590 | + "engines": { | |
| 5591 | + "node": ">= 14" | |
| 5592 | + } | |
| 5593 | + }, | |
| 5594 | + "node_modules/socks-proxy-agent/node_modules/debug": { | |
| 5595 | + "version": "4.3.7", | |
| 5596 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | |
| 5597 | + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | |
| 5598 | + "license": "MIT", | |
| 5599 | + "dependencies": { | |
| 5600 | + "ms": "^2.1.3" | |
| 5601 | + }, | |
| 5602 | + "engines": { | |
| 5603 | + "node": ">=6.0" | |
| 5604 | + }, | |
| 5605 | + "peerDependenciesMeta": { | |
| 5606 | + "supports-color": { | |
| 5607 | + "optional": true | |
| 5608 | + } | |
| 5609 | + } | |
| 5610 | + }, | |
| 5611 | + "node_modules/socks-proxy-agent/node_modules/ms": { | |
| 5612 | + "version": "2.1.3", | |
| 5613 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | |
| 5614 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | |
| 5615 | + "license": "MIT" | |
| 5616 | + }, | |
| 5617 | + "node_modules/source-map": { | |
| 5618 | + "version": "0.6.1", | |
| 5619 | + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | |
| 5620 | + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", | |
| 5621 | + "license": "BSD-3-Clause", | |
| 5622 | + "optional": true, | |
| 5623 | + "engines": { | |
| 5624 | + "node": ">=0.10.0" | |
| 5625 | + } | |
| 5626 | + }, | |
| 5627 | + "node_modules/sprintf-js": { | |
| 5628 | + "version": "1.1.3", | |
| 5629 | + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", | |
| 5630 | + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", | |
| 5631 | + "license": "BSD-3-Clause" | |
| 5632 | + }, | |
| 5168 | 5633 | "node_modules/statuses": { |
| 5169 | 5634 | "version": "2.0.1", |
| 5170 | 5635 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", |
| @@ -5378,6 +5843,12 @@ | ||
| 5378 | 5843 | "utf8-byte-length": "^1.0.1" |
| 5379 | 5844 | } |
| 5380 | 5845 | }, |
| 5846 | + "node_modules/tslib": { | |
| 5847 | + "version": "2.7.0", | |
| 5848 | + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", | |
| 5849 | + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", | |
| 5850 | + "license": "0BSD" | |
| 5851 | + }, | |
| 5381 | 5852 | "node_modules/tsscmp": { |
| 5382 | 5853 | "version": "1.0.6", |
| 5383 | 5854 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", |
| @@ -5437,6 +5908,15 @@ | ||
| 5437 | 5908 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", |
| 5438 | 5909 | "license": "MIT" |
| 5439 | 5910 | }, |
| 5911 | + "node_modules/universalify": { | |
| 5912 | + "version": "2.0.1", | |
| 5913 | + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", | |
| 5914 | + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", | |
| 5915 | + "license": "MIT", | |
| 5916 | + "engines": { | |
| 5917 | + "node": ">= 10.0.0" | |
| 5918 | + } | |
| 5919 | + }, | |
| 5440 | 5920 | "node_modules/unpipe": { |
| 5441 | 5921 | "version": "1.0.0", |
| 5442 | 5922 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |
| @@ -30,6 +30,7 @@ | ||
| 30 | 30 | "png-chunk-text": "^1.0.0", |
| 31 | 31 | "png-chunks-encode": "^1.0.0", |
| 32 | 32 | "png-chunks-extract": "^1.0.0", |
| 33 | + "proxy-agent": "^6.4.0", | |
| 33 | 34 | "rate-limiter-flexible": "^5.0.0", |
| 34 | 35 | "response-time": "^2.3.2", |
| 35 | 36 | "sanitize-filename": "^1.6.3", |
| @@ -37,6 +37,7 @@ util.inspect.defaultOptions.depth = 4; | ||
| 37 | 37 | const userModule = require('./src/users'); |
| 38 | 38 | const basicAuthMiddleware = require('./src/middleware/basicAuth'); |
| 39 | 39 | const whitelistMiddleware = require('./src/middleware/whitelist'); |
| 40 | +const initRequestProxy = require('./src/request-proxy'); | |
| 40 | 41 | const contentManager = require('./src/endpoints/content-manager'); |
| 41 | 42 | const { |
| 42 | 43 | getVersion, |
| @@ -662,6 +663,9 @@ const preSetupTasks = async function () { | ||
| 662 | 663 | console.error('Uncaught exception:', err); |
| 663 | 664 | exitProcess(); |
| 664 | 665 | }); |
| 666 | + | |
| 667 | + // Add request proxy. | |
| 668 | + initRequestProxy(); | |
| 665 | 669 | }; |
| 666 | 670 | |
| 667 | 671 | /** |
| @@ -0,0 +1,52 @@ | ||
| 1 | +const http = require('node:http'); | |
| 2 | +const https = require('node:https'); | |
| 3 | + | |
| 4 | +const { getConfigValue, isValidUrl, color } = require('./util.js'); | |
| 5 | + | |
| 6 | +const LOG_HEADER = '[Request Proxy]'; | |
| 7 | + | |
| 8 | +function initRequestProxy() { | |
| 9 | + try { | |
| 10 | + const { ProxyAgent } = require('proxy-agent'); | |
| 11 | + const proxyEnabled = getConfigValue('requestProxy.enabled', false); | |
| 12 | + | |
| 13 | + // No proxy is enabled, so return | |
| 14 | + if (!proxyEnabled) { | |
| 15 | + return; | |
| 16 | + } | |
| 17 | + | |
| 18 | + const proxyUrl = getConfigValue('requestProxy.url', ''); | |
| 19 | + | |
| 20 | + if (!proxyUrl) { | |
| 21 | + console.error(color.red(LOG_HEADER), 'No proxy URL provided'); | |
| 22 | + return; | |
| 23 | + } | |
| 24 | + | |
| 25 | + if (!isValidUrl(proxyUrl)) { | |
| 26 | + console.error(color.red(LOG_HEADER), 'Invalid proxy URL provided'); | |
| 27 | + return; | |
| 28 | + } | |
| 29 | + | |
| 30 | + // ProxyAgent uses proxy-from-env under the hood | |
| 31 | + // Reference: https://github.com/Rob--W/proxy-from-env | |
| 32 | + process.env.all_proxy = proxyUrl; | |
| 33 | + | |
| 34 | + const proxyBypass = getConfigValue('requestProxy.bypass', []); | |
| 35 | + | |
| 36 | + if (Array.isArray(proxyBypass) && proxyBypass.length > 0) { | |
| 37 | + process.env.no_proxy = proxyBypass.join(','); | |
| 38 | + } | |
| 39 | + | |
| 40 | + const proxyAgent = new ProxyAgent(); | |
| 41 | + http.globalAgent = proxyAgent; | |
| 42 | + https.globalAgent = proxyAgent; | |
| 43 | + | |
| 44 | + console.log(); | |
| 45 | + console.log(color.green(LOG_HEADER), 'Proxy URL is used:', color.blue(proxyUrl)); | |
| 46 | + console.log(); | |
| 47 | + } catch (error) { | |
| 48 | + console.error(color.red(LOG_HEADER), 'Failed to initialize request proxy:', error); | |
| 49 | + } | |
| 50 | +} | |
| 51 | + | |
| 52 | +module.exports = initRequestProxy; | |