diff --git a/src/main/routes/port-forward-route.ts b/src/main/routes/port-forward-route.ts index 763ea16b43..220c5dcf82 100644 --- a/src/main/routes/port-forward-route.ts +++ b/src/main/routes/port-forward-route.ts @@ -34,6 +34,7 @@ interface PortForwardArgs { name: string; port: number; forwardPort: number; + protocol: string; } const internalPortRegex = /^forwarding from (?
.+) ->/i; @@ -47,7 +48,8 @@ class PortForward { pf.kind == forward.kind && pf.name == forward.name && pf.namespace == forward.namespace && - pf.port == forward.port + pf.port == forward.port && + (!forward.protocol || pf.protocol == forward.protocol) )); } @@ -58,6 +60,7 @@ class PortForward { public name: string; public port: number; public forwardPort: number; + public protocol: string; constructor(public kubeConfig: string, args: PortForwardArgs) { this.clusterId = args.clusterId; @@ -66,6 +69,7 @@ class PortForward { this.name = args.name; this.port = args.port; this.forwardPort = args.forwardPort; + this.protocol = args.protocol ?? "http"; } public async start() { @@ -119,11 +123,12 @@ export class PortForwardRoute { const { namespace, resourceType, resourceName } = params; const port = Number(query.get("port")); const forwardPort = Number(query.get("forwardPort")); + const protocol = query.get("protocol"); try { let portForward = PortForward.getPortforward({ clusterId: cluster.id, kind: resourceType, name: resourceName, - namespace, port, forwardPort, + namespace, port, forwardPort, protocol, }); let thePort = 0; @@ -141,6 +146,7 @@ export class PortForwardRoute { name: resourceName, port, forwardPort: thePort, + protocol, }); const started = await portForward.start(); @@ -169,10 +175,11 @@ export class PortForwardRoute { const { namespace, resourceType, resourceName } = params; const port = Number(query.get("port")); const forwardPort = Number(query.get("forwardPort")); + const protocol = query.get("protocol"); const portForward = PortForward.getPortforward({ clusterId: cluster.id, kind: resourceType, name: resourceName, - namespace, port, forwardPort + namespace, port, forwardPort, protocol, }); respondJson(response, { port: portForward?.forwardPort ?? null }); @@ -189,6 +196,7 @@ export class PortForwardRoute { name: f.name, port: f.port, forwardPort: f.forwardPort, + protocol: f.protocol, }) ); @@ -200,10 +208,11 @@ export class PortForwardRoute { const { namespace, resourceType, resourceName } = params; const port = Number(query.get("port")); const forwardPort = Number(query.get("forwardPort")); + const protocol = query.get("protocol"); const portForward = PortForward.getPortforward({ clusterId: cluster.id, kind: resourceType, name: resourceName, - namespace, port, forwardPort, + namespace, port, forwardPort, protocol, }); try { diff --git a/src/renderer/port-forward/port-forward-dialog.tsx b/src/renderer/port-forward/port-forward-dialog.tsx index 7299228789..cf7442ceea 100644 --- a/src/renderer/port-forward/port-forward-dialog.tsx +++ b/src/renderer/port-forward/port-forward-dialog.tsx @@ -44,7 +44,8 @@ interface PortForwardDialogOpenOptions { const dialogState = observable.object({ isOpen: false, data: null as ForwardedPort, - openInBrowser: false + useHttps: false, + openInBrowser: false, }); @observer @@ -60,6 +61,7 @@ export class PortForwardDialog extends Component