From c4e94bc7797169dc867e021e0d0120388aa99a81 Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 26 Feb 2025 11:57:48 -0500 Subject: [PATCH] ingress established, prometheus keeps restarting --- package-lock.json | 420 ++++++++++++++++++++++++++++++++ src/shadowbox/package.json | 2 + src/shadowbox/server/main.ts | 20 +- src/shadowbox/webpack.config.js | 14 +- 4 files changed, 450 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc0bb7b2..bcd24e0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -732,6 +732,221 @@ ], "license": "MIT" }, + "node_modules/@ngrok/ngrok": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok/-/ngrok-1.4.1.tgz", + "integrity": "sha512-KZ7/T4UOY3BqJBdweJPeebKW34YzIH+a2y4o7yqTIowoi6dw3sMj140o1Q8FvpPbH5J6lr2TWVCWdgSTYvHNgw==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@ngrok/ngrok-android-arm-eabi": "1.4.1", + "@ngrok/ngrok-android-arm64": "1.4.1", + "@ngrok/ngrok-darwin-arm64": "1.4.1", + "@ngrok/ngrok-darwin-universal": "1.4.1", + "@ngrok/ngrok-darwin-x64": "1.4.1", + "@ngrok/ngrok-freebsd-x64": "1.4.1", + "@ngrok/ngrok-linux-arm-gnueabihf": "1.4.1", + "@ngrok/ngrok-linux-arm64-gnu": "1.4.1", + "@ngrok/ngrok-linux-arm64-musl": "1.4.1", + "@ngrok/ngrok-linux-x64-gnu": "1.4.1", + "@ngrok/ngrok-linux-x64-musl": "1.4.1", + "@ngrok/ngrok-win32-ia32-msvc": "1.4.1", + "@ngrok/ngrok-win32-x64-msvc": "1.4.1" + } + }, + "node_modules/@ngrok/ngrok-android-arm-eabi": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-android-arm-eabi/-/ngrok-android-arm-eabi-1.4.1.tgz", + "integrity": "sha512-KQe59T8PhFg5XvWypcOCIgUakk/A9ipD1UvSgGuLI7pYIiVcx6oyW12RxCJr6cfdO0K5GrbUG6dlEXSmDD4jBg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-android-arm64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-android-arm64/-/ngrok-android-arm64-1.4.1.tgz", + "integrity": "sha512-WPYJenabIArkGmeVhBcIVtgXmLK297pfJCYHP1Tnw220ANEXFdo7EW4dZoP0AA0gxciFHGYnQUMOn1Meo0IQFQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-darwin-arm64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-arm64/-/ngrok-darwin-arm64-1.4.1.tgz", + "integrity": "sha512-hJW+ZDJ0uV7PieZAdZHdzR/WBRctjOkLzFqHTxSuNbmBr9uIg6PGf1dB2lySszK1wyKZL7wvh4GedQ4vSU5lkw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-darwin-universal": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-universal/-/ngrok-darwin-universal-1.4.1.tgz", + "integrity": "sha512-rUZKl/vr2cALpT1Ng91h8Jf5OfDtF+zNEC65AFWthPkHJpPQCLvuEC9hyF8XI52Bv45ORRb1YKR3hdhjZ4WGHQ==", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-darwin-x64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-x64/-/ngrok-darwin-x64-1.4.1.tgz", + "integrity": "sha512-UKIkRpsGBywAqvwz8L6R8ITz+xxPoZ58LSFhZoMAWm2alGOdA2js1eHZwwVTSz96/tmmSRE/H+r69TvtuL0lXA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-freebsd-x64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-freebsd-x64/-/ngrok-freebsd-x64-1.4.1.tgz", + "integrity": "sha512-v1xXqmu3f4W1PQt+NKlqXgLcpULYCSwStKGRSdgXljg1bRdOnW3ZdjbGzrIdKwQ7OcwZP34KbP13G+hqcTxo5Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-linux-arm-gnueabihf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm-gnueabihf/-/ngrok-linux-arm-gnueabihf-1.4.1.tgz", + "integrity": "sha512-yEeiVAGQNUErkSpOI1EZI+X3AkHCGd8yzqfjHamnhEONkwxLcWuTiUfcwFeMVtE9jyLfvQxctldPXXAjvaI/QA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-linux-arm64-gnu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-gnu/-/ngrok-linux-arm64-gnu-1.4.1.tgz", + "integrity": "sha512-Fb2uju769eO/yOrWdbMvCXNczbXHnqNmN5TCYvqQbPdscFgrsNaJcVr2SmWOfBq+OcLWYbx6mXE1ki5yOZKU9w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-linux-arm64-musl": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-musl/-/ngrok-linux-arm64-musl-1.4.1.tgz", + "integrity": "sha512-nMTTZkUnwCzeIVDkoUdNqBKe6ArYXRWGjC4iXinfPOdENkb/tZ/eAjVdg+8bQ5PJgl/n/TbdZKNj//Jz2x8fdw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-linux-x64-gnu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-gnu/-/ngrok-linux-x64-gnu-1.4.1.tgz", + "integrity": "sha512-IfDaYd9ZGk7F0szHql5Tr3rlLBlhuKbbNXDVkujGy/njA4/YnckfsZilGEtgnR7aYgHo3NqppfEw+AOmlDytCw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-linux-x64-musl": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-musl/-/ngrok-linux-x64-musl-1.4.1.tgz", + "integrity": "sha512-Ze6wb2umg6hfJhxOrFQhiyIZOf9YjSRkefnaQdAaONrIKxiFsu5SIKQbp7MQRnm8wabB9i0OI0Q/TVBsxo/HLw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-win32-ia32-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-ia32-msvc/-/ngrok-win32-ia32-msvc-1.4.1.tgz", + "integrity": "sha512-FV3dwGpbh1h2fJ7h+Od8vFRrR9RxqBUAI+ELxQxropDxwYp6rWGKFnfE+JUcT79fEH3OpA0ElULrIDrLgK7bgg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngrok/ngrok-win32-x64-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-x64-msvc/-/ngrok-win32-x64-msvc-1.4.1.tgz", + "integrity": "sha512-Zr1Dyel4M3cA1kjT/N5ftTiCdoPnVv/VbyE6AKKemP9DDFkTlpdvMwSXikm/ypNtCNFEs/+q8CBZPhhaKktl8A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1794,6 +2009,15 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/bintrees": { "version": "1.0.1" }, @@ -2654,6 +2878,15 @@ "dev": true, "license": "MIT" }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/encodeurl": { "version": "1.0.2", "license": "MIT", @@ -5458,6 +5691,32 @@ "node": ">=6.11.5" } }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/locate-path": { "version": "3.0.0", "dev": true, @@ -5838,6 +6097,25 @@ "node": ">= 6.13.0" } }, + "node_modules/node-loader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.1.0.tgz", + "integrity": "sha512-OwjPkyh8+7jW8DMd/iq71uU1Sspufr/C2+c3t0p08J3CrM9ApZ4U53xuisNrDXOHyGi5OYHgtfmmh+aK9zJA6g==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -9063,6 +9341,7 @@ "license": "Apache", "dependencies": { "@hey-api/client-fetch": "^0.8.1", + "@ngrok/ngrok": "^1.4.1", "ip-regex": "^4.1.0", "js-yaml": "^3.12.0", "outline-shadowsocksconfig": "github:Jigsaw-Code/outline-shadowsocksconfig#v0.2.0", @@ -9080,6 +9359,7 @@ "@types/restify": "^8.4.2", "@types/restify-cors-middleware": "^1.0.1", "@types/tmp": "^0.2.1", + "node-loader": "^2.1.0", "tmp": "^0.2.1", "ts-loader": "^9.5.0", "webpack": "^5.88.2", @@ -9587,6 +9867,104 @@ } } }, + "@ngrok/ngrok": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok/-/ngrok-1.4.1.tgz", + "integrity": "sha512-KZ7/T4UOY3BqJBdweJPeebKW34YzIH+a2y4o7yqTIowoi6dw3sMj140o1Q8FvpPbH5J6lr2TWVCWdgSTYvHNgw==", + "requires": { + "@ngrok/ngrok-android-arm-eabi": "1.4.1", + "@ngrok/ngrok-android-arm64": "1.4.1", + "@ngrok/ngrok-darwin-arm64": "1.4.1", + "@ngrok/ngrok-darwin-universal": "1.4.1", + "@ngrok/ngrok-darwin-x64": "1.4.1", + "@ngrok/ngrok-freebsd-x64": "1.4.1", + "@ngrok/ngrok-linux-arm-gnueabihf": "1.4.1", + "@ngrok/ngrok-linux-arm64-gnu": "1.4.1", + "@ngrok/ngrok-linux-arm64-musl": "1.4.1", + "@ngrok/ngrok-linux-x64-gnu": "1.4.1", + "@ngrok/ngrok-linux-x64-musl": "1.4.1", + "@ngrok/ngrok-win32-ia32-msvc": "1.4.1", + "@ngrok/ngrok-win32-x64-msvc": "1.4.1" + } + }, + "@ngrok/ngrok-android-arm-eabi": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-android-arm-eabi/-/ngrok-android-arm-eabi-1.4.1.tgz", + "integrity": "sha512-KQe59T8PhFg5XvWypcOCIgUakk/A9ipD1UvSgGuLI7pYIiVcx6oyW12RxCJr6cfdO0K5GrbUG6dlEXSmDD4jBg==", + "optional": true + }, + "@ngrok/ngrok-android-arm64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-android-arm64/-/ngrok-android-arm64-1.4.1.tgz", + "integrity": "sha512-WPYJenabIArkGmeVhBcIVtgXmLK297pfJCYHP1Tnw220ANEXFdo7EW4dZoP0AA0gxciFHGYnQUMOn1Meo0IQFQ==", + "optional": true + }, + "@ngrok/ngrok-darwin-arm64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-arm64/-/ngrok-darwin-arm64-1.4.1.tgz", + "integrity": "sha512-hJW+ZDJ0uV7PieZAdZHdzR/WBRctjOkLzFqHTxSuNbmBr9uIg6PGf1dB2lySszK1wyKZL7wvh4GedQ4vSU5lkw==", + "optional": true + }, + "@ngrok/ngrok-darwin-universal": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-universal/-/ngrok-darwin-universal-1.4.1.tgz", + "integrity": "sha512-rUZKl/vr2cALpT1Ng91h8Jf5OfDtF+zNEC65AFWthPkHJpPQCLvuEC9hyF8XI52Bv45ORRb1YKR3hdhjZ4WGHQ==", + "optional": true + }, + "@ngrok/ngrok-darwin-x64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-x64/-/ngrok-darwin-x64-1.4.1.tgz", + "integrity": "sha512-UKIkRpsGBywAqvwz8L6R8ITz+xxPoZ58LSFhZoMAWm2alGOdA2js1eHZwwVTSz96/tmmSRE/H+r69TvtuL0lXA==", + "optional": true + }, + "@ngrok/ngrok-freebsd-x64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-freebsd-x64/-/ngrok-freebsd-x64-1.4.1.tgz", + "integrity": "sha512-v1xXqmu3f4W1PQt+NKlqXgLcpULYCSwStKGRSdgXljg1bRdOnW3ZdjbGzrIdKwQ7OcwZP34KbP13G+hqcTxo5Q==", + "optional": true + }, + "@ngrok/ngrok-linux-arm-gnueabihf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm-gnueabihf/-/ngrok-linux-arm-gnueabihf-1.4.1.tgz", + "integrity": "sha512-yEeiVAGQNUErkSpOI1EZI+X3AkHCGd8yzqfjHamnhEONkwxLcWuTiUfcwFeMVtE9jyLfvQxctldPXXAjvaI/QA==", + "optional": true + }, + "@ngrok/ngrok-linux-arm64-gnu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-gnu/-/ngrok-linux-arm64-gnu-1.4.1.tgz", + "integrity": "sha512-Fb2uju769eO/yOrWdbMvCXNczbXHnqNmN5TCYvqQbPdscFgrsNaJcVr2SmWOfBq+OcLWYbx6mXE1ki5yOZKU9w==", + "optional": true + }, + "@ngrok/ngrok-linux-arm64-musl": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-musl/-/ngrok-linux-arm64-musl-1.4.1.tgz", + "integrity": "sha512-nMTTZkUnwCzeIVDkoUdNqBKe6ArYXRWGjC4iXinfPOdENkb/tZ/eAjVdg+8bQ5PJgl/n/TbdZKNj//Jz2x8fdw==", + "optional": true + }, + "@ngrok/ngrok-linux-x64-gnu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-gnu/-/ngrok-linux-x64-gnu-1.4.1.tgz", + "integrity": "sha512-IfDaYd9ZGk7F0szHql5Tr3rlLBlhuKbbNXDVkujGy/njA4/YnckfsZilGEtgnR7aYgHo3NqppfEw+AOmlDytCw==", + "optional": true + }, + "@ngrok/ngrok-linux-x64-musl": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-musl/-/ngrok-linux-x64-musl-1.4.1.tgz", + "integrity": "sha512-Ze6wb2umg6hfJhxOrFQhiyIZOf9YjSRkefnaQdAaONrIKxiFsu5SIKQbp7MQRnm8wabB9i0OI0Q/TVBsxo/HLw==", + "optional": true + }, + "@ngrok/ngrok-win32-ia32-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-ia32-msvc/-/ngrok-win32-ia32-msvc-1.4.1.tgz", + "integrity": "sha512-FV3dwGpbh1h2fJ7h+Od8vFRrR9RxqBUAI+ELxQxropDxwYp6rWGKFnfE+JUcT79fEH3OpA0ElULrIDrLgK7bgg==", + "optional": true + }, + "@ngrok/ngrok-win32-x64-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-x64-msvc/-/ngrok-win32-x64-msvc-1.4.1.tgz", + "integrity": "sha512-Zr1Dyel4M3cA1kjT/N5ftTiCdoPnVv/VbyE6AKKemP9DDFkTlpdvMwSXikm/ypNtCNFEs/+q8CBZPhhaKktl8A==", + "optional": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -10356,6 +10734,12 @@ "tweetnacl": "^0.14.3" } }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, "bintrees": { "version": "1.0.1" }, @@ -10930,6 +11314,12 @@ "version": "8.0.0", "dev": true }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, "encodeurl": { "version": "1.0.2" }, @@ -12828,6 +13218,25 @@ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "dependencies": { + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + } + } + }, "locate-path": { "version": "3.0.0", "dev": true, @@ -13081,6 +13490,15 @@ "node-forge": { "version": "1.3.1" }, + "node-loader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.1.0.tgz", + "integrity": "sha512-OwjPkyh8+7jW8DMd/iq71uU1Sspufr/C2+c3t0p08J3CrM9ApZ4U53xuisNrDXOHyGi5OYHgtfmmh+aK9zJA6g==", + "dev": true, + "requires": { + "loader-utils": "^2.0.3" + } + }, "node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -13271,6 +13689,7 @@ "version": "file:src/shadowbox", "requires": { "@hey-api/client-fetch": "^0.8.1", + "@ngrok/ngrok": "^1.4.1", "@types/js-yaml": "^3.11.2", "@types/node": "^12", "@types/randomstring": "^1.1.6", @@ -13279,6 +13698,7 @@ "@types/tmp": "^0.2.1", "ip-regex": "^4.1.0", "js-yaml": "^3.12.0", + "node-loader": "^2.1.0", "outline-shadowsocksconfig": "github:Jigsaw-Code/outline-shadowsocksconfig#v0.2.0", "prom-client": "^11.1.3", "randomstring": "^1.1.5", diff --git a/src/shadowbox/package.json b/src/shadowbox/package.json index e709a8ee..6b07f8a4 100644 --- a/src/shadowbox/package.json +++ b/src/shadowbox/package.json @@ -10,6 +10,7 @@ ], "dependencies": { "@hey-api/client-fetch": "^0.8.1", + "@ngrok/ngrok": "^1.4.1", "ip-regex": "^4.1.0", "js-yaml": "^3.12.0", "outline-shadowsocksconfig": "github:Jigsaw-Code/outline-shadowsocksconfig#v0.2.0", @@ -27,6 +28,7 @@ "@types/restify": "^8.4.2", "@types/restify-cors-middleware": "^1.0.1", "@types/tmp": "^0.2.1", + "node-loader": "^2.1.0", "tmp": "^0.2.1", "ts-loader": "^9.5.0", "webpack": "^5.88.2", diff --git a/src/shadowbox/server/main.ts b/src/shadowbox/server/main.ts index 8f52c18d..db9adf71 100644 --- a/src/shadowbox/server/main.ts +++ b/src/shadowbox/server/main.ts @@ -19,6 +19,7 @@ import * as process from 'process'; import * as prometheus from 'prom-client'; import * as restify from 'restify'; import * as corsMiddleware from 'restify-cors-middleware2'; +import * as ngrok from '@ngrok/ngrok'; import {RealClock} from '../infrastructure/clock'; import {PortProvider} from '../infrastructure/get_port'; @@ -275,7 +276,18 @@ process.on('unhandledRejection', (error: Error) => { logging.error(`unhandledRejection: ${error.stack}`); }); -main().catch((error) => { - logging.error(error.stack); - process.exit(1); -}); +main() + .then(() => + ngrok.forward({ + domain: 'apt-wired-wombat.ngrok-free.app', + addr: Number(process.env.SB_API_PORT || 8081), + authtoken_from_env: true, + }) + ) + .then((listener) => { + console.log(`Ingress established at: ${listener.url()}`); + }) + .catch((error) => { + logging.error(error.stack); + process.exit(1); + }); diff --git a/src/shadowbox/webpack.config.js b/src/shadowbox/webpack.config.js index 10eaeedd..f52c4029 100644 --- a/src/shadowbox/webpack.config.js +++ b/src/shadowbox/webpack.config.js @@ -24,14 +24,24 @@ const config = { filename: 'main.js', path: path.resolve(__dirname, '../../build/shadowbox/app'), }, - module: {rules: [{test: /\.ts(x)?$/, use: 'ts-loader'}]}, + module: { + rules: [ + {test: /\.ts(x)?$/, use: 'ts-loader'}, + { + test: /\.node$/, + loader: 'node-loader', + }, + ], + }, node: { // Use the regular node behavior, the directory name of the output file when run. __dirname: false, }, plugins: [ // Used by server/version.ts. - process.env.SB_VERSION ? new webpack.DefinePlugin({'__VERSION__': JSON.stringify(process.env.SB_VERSION)}): undefined, + process.env.SB_VERSION + ? new webpack.DefinePlugin({__VERSION__: JSON.stringify(process.env.SB_VERSION)}) + : undefined, // WORKAROUND: some of our (transitive) dependencies use node-gently, which hijacks `require`. // Setting global.GENTLY to false makes these dependencies use standard require. new webpack.DefinePlugin({'global.GENTLY': false}),