diff --git a/build/icon.ico b/build/icon.ico
index baac2aac70..a203847c7c 100644
Binary files a/build/icon.ico and b/build/icon.ico differ
diff --git a/build/icon.png b/build/icon.png
index b0f61b8541..762a3ed50f 100644
Binary files a/build/icon.png and b/build/icon.png differ
diff --git a/build/icons/512x512.png b/build/icons/512x512.png
index b0f61b8541..762a3ed50f 100644
Binary files a/build/icons/512x512.png and b/build/icons/512x512.png differ
diff --git a/dashboard/client/api/endpoints/helm-releases.api.ts b/dashboard/client/api/endpoints/helm-releases.api.ts
index 5e676f3472..52f797b006 100644
--- a/dashboard/client/api/endpoints/helm-releases.api.ts
+++ b/dashboard/client/api/endpoints/helm-releases.api.ts
@@ -156,9 +156,12 @@ export class HelmRelease implements ItemObject {
}
getChart(withVersion = false) {
- return withVersion ?
- this.chart :
- this.chart.substr(0, this.chart.lastIndexOf("-"));
+ let chart = this.chart
+ if(!withVersion && this.getVersion() != "" ) {
+ const search = new RegExp(`-${this.getVersion()}`)
+ chart = chart.replace(search, "");
+ }
+ return chart
}
getRevision() {
@@ -170,7 +173,7 @@ export class HelmRelease implements ItemObject {
}
getVersion() {
- const versions = this.chart.match(/(\d+)[^-]*$/)
+ const versions = this.chart.match(/(v?\d+)[^-].*$/)
if (versions) {
return versions[0]
} else {
diff --git a/dashboard/client/components/icon/logo-full.svg b/dashboard/client/components/icon/logo-full.svg
index 46e28e1164..b3b553f865 100644
--- a/dashboard/client/components/icon/logo-full.svg
+++ b/dashboard/client/components/icon/logo-full.svg
@@ -1,161 +1 @@
-
-
-
+
diff --git a/package.json b/package.json
index 82906dce0b..653a55cc59 100644
--- a/package.json
+++ b/package.json
@@ -140,7 +140,8 @@
"electron-window-state": "^5.0.3",
"filenamify": "^4.1.0",
"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",
"jsonwebtoken": "^8.5.1",
"mac-ca": "^1.0.4",
diff --git a/src/main/index.ts b/src/main/index.ts
index 8bf99ca583..b1e43a4928 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -26,6 +26,7 @@ const promiseIpc = new PromiseIpc({ timeout: 2000 })
let windowManager: WindowManager = null;
let clusterManager: ClusterManager = null;
+let proxyServer: proxy.LensProxy = null;
const vmURL = (isDevelopment) ? `http://localhost:${process.env.ELECTRON_WEBPACK_WDS_PORT}` : formatUrl({
pathname: path.join(__dirname, "index.html"),
protocol: "file",
@@ -57,10 +58,9 @@ async function main() {
// create cluster manager
clusterManager = new ClusterManager(clusterStore.getAllClusterObjects(), port)
-
// run proxy
try {
- proxy.listen(port, clusterManager)
+ proxyServer = proxy.listen(port, clusterManager)
} catch (error) {
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"}`)
@@ -123,5 +123,6 @@ app.on("activate", () => {
app.on("will-quit", async (event) => {
event.preventDefault(); // To allow mixpanel sending to be executed
if (clusterManager) clusterManager.stop()
+ if (proxyServer) proxyServer.close()
app.exit(0);
})
diff --git a/src/main/proxy.ts b/src/main/proxy.ts
index 538a960702..56febb9273 100644
--- a/src/main/proxy.ts
+++ b/src/main/proxy.ts
@@ -17,6 +17,8 @@ export class LensProxy {
protected clusterManager: ClusterManager
protected retryCounters: Map = new Map()
protected router: Router
+ protected proxyServer: http.Server
+ protected closed = false
constructor(port: number, clusterManager: ClusterManager) {
this.port = port
@@ -27,6 +29,13 @@ export class LensProxy {
public run() {
const proxyServer = this.buildProxyServer();
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() {
@@ -70,6 +79,9 @@ export class LensProxy {
}
})
proxy.on("error", (error, req, res, target) => {
+ if(this.closed) {
+ return
+ }
if (target) {
logger.debug("Failed proxy to target: " + JSON.stringify(target))
if (req.method === "GET" && (!res.statusCode || res.statusCode >= 500)) {
diff --git a/yarn.lock b/yarn.lock
index db1e213f97..06b72850b7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4660,10 +4660,10 @@ event-emitter@~0.3.5:
d "1"
es5-ext "~0.10.14"
-eventemitter3@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
- integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
+eventemitter3@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
+ integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
events@^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"
integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=
-http-proxy-middleware@^0.19.1:
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
- integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
+http-proxy-middleware@^0.19.1, http-proxy-middleware@^0.19.2:
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz#ee73dcc8348165afefe8de2ff717751d181608ee"
+ integrity sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==
dependencies:
- http-proxy "^1.17.0"
+ http-proxy "^1.18.1"
is-glob "^4.0.0"
lodash "^4.17.11"
micromatch "^3.1.10"
-http-proxy@^1.17.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
- integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
+http-proxy@^1.18.0, http-proxy@^1.18.1:
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
dependencies:
- eventemitter3 "^3.0.0"
+ eventemitter3 "^4.0.0"
follow-redirects "^1.0.0"
requires-port "^1.0.0"