mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Close proxy server on app quit (#413)
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
parent
e8fcff0037
commit
78eeef2805
@ -140,7 +140,8 @@
|
|||||||
"electron-window-state": "^5.0.3",
|
"electron-window-state": "^5.0.3",
|
||||||
"filenamify": "^4.1.0",
|
"filenamify": "^4.1.0",
|
||||||
"handlebars": "4.1.2",
|
"handlebars": "4.1.2",
|
||||||
"http-proxy": "^1.17.0",
|
"http-proxy": "^1.18.0",
|
||||||
|
"http-proxy-middleware": "^0.19.2",
|
||||||
"https-proxy-agent": "^3.0.1",
|
"https-proxy-agent": "^3.0.1",
|
||||||
"jsonwebtoken": "^8.5.1",
|
"jsonwebtoken": "^8.5.1",
|
||||||
"mac-ca": "^1.0.4",
|
"mac-ca": "^1.0.4",
|
||||||
|
|||||||
@ -26,6 +26,7 @@ const promiseIpc = new PromiseIpc({ timeout: 2000 })
|
|||||||
|
|
||||||
let windowManager: WindowManager = null;
|
let windowManager: WindowManager = null;
|
||||||
let clusterManager: ClusterManager = null;
|
let clusterManager: ClusterManager = null;
|
||||||
|
let proxyServer: proxy.LensProxy = null;
|
||||||
const vmURL = (isDevelopment) ? `http://localhost:${process.env.ELECTRON_WEBPACK_WDS_PORT}` : formatUrl({
|
const vmURL = (isDevelopment) ? `http://localhost:${process.env.ELECTRON_WEBPACK_WDS_PORT}` : formatUrl({
|
||||||
pathname: path.join(__dirname, "index.html"),
|
pathname: path.join(__dirname, "index.html"),
|
||||||
protocol: "file",
|
protocol: "file",
|
||||||
@ -57,10 +58,9 @@ async function main() {
|
|||||||
|
|
||||||
// create cluster manager
|
// create cluster manager
|
||||||
clusterManager = new ClusterManager(clusterStore.getAllClusterObjects(), port)
|
clusterManager = new ClusterManager(clusterStore.getAllClusterObjects(), port)
|
||||||
|
|
||||||
// run proxy
|
// run proxy
|
||||||
try {
|
try {
|
||||||
proxy.listen(port, clusterManager)
|
proxyServer = proxy.listen(port, clusterManager)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error(`Could not start proxy (127.0.0:${port}): ${error.message}`)
|
logger.error(`Could not start proxy (127.0.0:${port}): ${error.message}`)
|
||||||
await dialog.showErrorBox("Lens Error", `Could not start proxy (127.0.0:${port}): ${error.message || "unknown error"}`)
|
await dialog.showErrorBox("Lens Error", `Could not start proxy (127.0.0:${port}): ${error.message || "unknown error"}`)
|
||||||
@ -123,5 +123,6 @@ app.on("activate", () => {
|
|||||||
app.on("will-quit", async (event) => {
|
app.on("will-quit", async (event) => {
|
||||||
event.preventDefault(); // To allow mixpanel sending to be executed
|
event.preventDefault(); // To allow mixpanel sending to be executed
|
||||||
if (clusterManager) clusterManager.stop()
|
if (clusterManager) clusterManager.stop()
|
||||||
|
if (proxyServer) proxyServer.close()
|
||||||
app.exit(0);
|
app.exit(0);
|
||||||
})
|
})
|
||||||
|
|||||||
@ -17,6 +17,8 @@ export class LensProxy {
|
|||||||
protected clusterManager: ClusterManager
|
protected clusterManager: ClusterManager
|
||||||
protected retryCounters: Map<string, number> = new Map()
|
protected retryCounters: Map<string, number> = new Map()
|
||||||
protected router: Router
|
protected router: Router
|
||||||
|
protected proxyServer: http.Server
|
||||||
|
protected closed = false
|
||||||
|
|
||||||
constructor(port: number, clusterManager: ClusterManager) {
|
constructor(port: number, clusterManager: ClusterManager) {
|
||||||
this.port = port
|
this.port = port
|
||||||
@ -27,6 +29,13 @@ export class LensProxy {
|
|||||||
public run() {
|
public run() {
|
||||||
const proxyServer = this.buildProxyServer();
|
const proxyServer = this.buildProxyServer();
|
||||||
proxyServer.listen(this.port, "127.0.0.1")
|
proxyServer.listen(this.port, "127.0.0.1")
|
||||||
|
this.proxyServer = proxyServer
|
||||||
|
}
|
||||||
|
|
||||||
|
public close() {
|
||||||
|
logger.info("Closing proxy server")
|
||||||
|
this.proxyServer.close()
|
||||||
|
this.closed = true
|
||||||
}
|
}
|
||||||
|
|
||||||
protected buildProxyServer() {
|
protected buildProxyServer() {
|
||||||
@ -70,6 +79,9 @@ export class LensProxy {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
proxy.on("error", (error, req, res, target) => {
|
proxy.on("error", (error, req, res, target) => {
|
||||||
|
if(this.closed) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if (target) {
|
if (target) {
|
||||||
logger.debug("Failed proxy to target: " + JSON.stringify(target))
|
logger.debug("Failed proxy to target: " + JSON.stringify(target))
|
||||||
if (req.method === "GET" && (!res.statusCode || res.statusCode >= 500)) {
|
if (req.method === "GET" && (!res.statusCode || res.statusCode >= 500)) {
|
||||||
|
|||||||
28
yarn.lock
28
yarn.lock
@ -4660,10 +4660,10 @@ event-emitter@~0.3.5:
|
|||||||
d "1"
|
d "1"
|
||||||
es5-ext "~0.10.14"
|
es5-ext "~0.10.14"
|
||||||
|
|
||||||
eventemitter3@^3.0.0:
|
eventemitter3@^4.0.0:
|
||||||
version "3.1.2"
|
version "4.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
|
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
|
||||||
integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
|
integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
|
||||||
|
|
||||||
events@^3.0.0:
|
events@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
@ -5852,22 +5852,22 @@ http-errors@~1.7.2:
|
|||||||
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4"
|
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4"
|
||||||
integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=
|
integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=
|
||||||
|
|
||||||
http-proxy-middleware@^0.19.1:
|
http-proxy-middleware@^0.19.1, http-proxy-middleware@^0.19.2:
|
||||||
version "0.19.1"
|
version "0.19.2"
|
||||||
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
|
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz#ee73dcc8348165afefe8de2ff717751d181608ee"
|
||||||
integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
|
integrity sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
http-proxy "^1.17.0"
|
http-proxy "^1.18.1"
|
||||||
is-glob "^4.0.0"
|
is-glob "^4.0.0"
|
||||||
lodash "^4.17.11"
|
lodash "^4.17.11"
|
||||||
micromatch "^3.1.10"
|
micromatch "^3.1.10"
|
||||||
|
|
||||||
http-proxy@^1.17.0:
|
http-proxy@^1.18.0, http-proxy@^1.18.1:
|
||||||
version "1.17.0"
|
version "1.18.1"
|
||||||
resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
|
resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
|
||||||
integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
|
integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
eventemitter3 "^3.0.0"
|
eventemitter3 "^4.0.0"
|
||||||
follow-redirects "^1.0.0"
|
follow-redirects "^1.0.0"
|
||||||
requires-port "^1.0.0"
|
requires-port "^1.0.0"
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user