diff --git a/src/main/routes/port-forward-route.ts b/src/main/routes/port-forward-route.ts index 220c5dcf82..70f6b70261 100644 --- a/src/main/routes/port-forward-route.ts +++ b/src/main/routes/port-forward-route.ts @@ -34,7 +34,7 @@ interface PortForwardArgs { name: string; port: number; forwardPort: number; - protocol: string; + protocol?: string; } const internalPortRegex = /^forwarding from (?
.+) ->/i; @@ -131,14 +131,15 @@ export class PortForwardRoute { namespace, port, forwardPort, protocol, }); - let thePort = 0; - - if (forwardPort > 0 && forwardPort < 65536) { - thePort = forwardPort; - } - if (!portForward) { logger.info(`Creating a new port-forward ${namespace}/${resourceType}/${resourceName}:${port}`); + + let thePort = 0; + + if (forwardPort > 0 && forwardPort < 65536) { + thePort = forwardPort; + } + portForward = new PortForward(await cluster.getProxyKubeconfigPath(), { clusterId: cluster.id, kind: resourceType, @@ -208,11 +209,10 @@ 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, protocol, + namespace, port, forwardPort, }); try { diff --git a/src/renderer/components/+network-port-forwards/port-forward-menu.tsx b/src/renderer/components/+network-port-forwards/port-forward-menu.tsx index 7b0f35ef43..c35be5a57c 100644 --- a/src/renderer/components/+network-port-forwards/port-forward-menu.tsx +++ b/src/renderer/components/+network-port-forwards/port-forward-menu.tsx @@ -50,7 +50,7 @@ export class PortForwardMenu extends React.Component { Open PortForwardDialog.open(portForward)}> - + Edit diff --git a/src/renderer/components/+network-services/service-port-component.tsx b/src/renderer/components/+network-services/service-port-component.tsx index d49a1eb94a..3a679e56ae 100644 --- a/src/renderer/components/+network-services/service-port-component.tsx +++ b/src/renderer/components/+network-services/service-port-component.tsx @@ -28,7 +28,7 @@ import { observable, makeObservable, reaction } from "mobx"; import { cssNames } from "../../utils"; import { Notifications } from "../notifications"; import { Button } from "../button"; -import { addPortForward, getPortForward, openPortForward, PortForwardDialog, portForwardStore, removePortForward } from "../../port-forward"; +import { addPortForward, getPortForward, openPortForward, PortForwardDialog, portForwardStore, predictProtocol, removePortForward } from "../../port-forward"; import type { ForwardedPort } from "../../port-forward"; import logger from "../../../common/logger"; import { Spinner } from "../spinner"; @@ -85,6 +85,7 @@ export class ServicePortComponent extends React.Component { namespace: service.getNs(), port: port.port, forwardPort: this.forwardPort, + protocol: predictProtocol(port.name), }; this.waiting = true; @@ -140,6 +141,7 @@ export class ServicePortComponent extends React.Component { namespace: service.getNs(), port: port.port, forwardPort: this.forwardPort, + protocol: predictProtocol(port.name), }; PortForwardDialog.open(portForward, { openInBrowser: true }); diff --git a/src/renderer/components/+workloads-pods/pod-container-port.tsx b/src/renderer/components/+workloads-pods/pod-container-port.tsx index 4c468c46c8..7dc5fe7618 100644 --- a/src/renderer/components/+workloads-pods/pod-container-port.tsx +++ b/src/renderer/components/+workloads-pods/pod-container-port.tsx @@ -28,7 +28,7 @@ import { observable, makeObservable, reaction } from "mobx"; import { cssNames } from "../../utils"; import { Notifications } from "../notifications"; import { Button } from "../button"; -import { addPortForward, getPortForward, openPortForward, PortForwardDialog, portForwardStore, removePortForward } from "../../port-forward"; +import { addPortForward, getPortForward, openPortForward, PortForwardDialog, portForwardStore, predictProtocol, removePortForward } from "../../port-forward"; import type { ForwardedPort } from "../../port-forward"; import logger from "../../../common/logger"; import { Spinner } from "../spinner"; @@ -89,6 +89,7 @@ export class PodContainerPort extends React.Component { namespace: pod.getNs(), port: port.containerPort, forwardPort: this.forwardPort, + protocol: predictProtocol(port.name), }; this.waiting = true; @@ -146,6 +147,7 @@ export class PodContainerPort extends React.Component { namespace: pod.getNs(), port: port.containerPort, forwardPort: this.forwardPort, + protocol: predictProtocol(port.name), }; PortForwardDialog.open(portForward, { openInBrowser: true }); diff --git a/src/renderer/port-forward/port-forward.store.ts b/src/renderer/port-forward/port-forward.store.ts index 8a009b1e09..5b91b2e5ae 100644 --- a/src/renderer/port-forward/port-forward.store.ts +++ b/src/renderer/port-forward/port-forward.store.ts @@ -88,7 +88,7 @@ export class PortForwardStore extends ItemStore { if (index === -1) { return null; } - + return this.getItems()[index]; } } @@ -108,7 +108,7 @@ export async function addPortForward(portForward: ForwardedPort): Promise(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}&protocol=${protocol}`); - + if (response?.port && response.port != +portForward.forwardPort) { logger.warn(`specified ${portForward.forwardPort} got ${response.port}`); } @@ -124,6 +124,7 @@ function getProtocolQuery(protocol: string) { if (protocol) { return `&protocol=${protocol}`; } + return ""; } @@ -141,13 +142,10 @@ export async function getPortForward(portForward: ForwardedPort): Promise { let port = 0; - + try { - const protocol = portForward.protocol; - delete portForward.protocol; await removePortForward(portForward); portForward.forwardPort = desiredPort; - portForward.protocol = protocol; port = await addPortForward(portForward); } catch (error) { logger.warn(error); // don't care, caller must check @@ -160,7 +158,7 @@ export async function modifyPortForward(portForward: ForwardedPort, desiredPort: export async function removePortForward(portForward: ForwardedPort) { try { - await apiBase.del(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}${getProtocolQuery(portForward.protocol)}`); + await apiBase.del(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}`); await waitUntilFree(+portForward.forwardPort, 200, 1000); } catch (error) { logger.warn(error); // don't care, caller must check @@ -175,7 +173,7 @@ export async function getPortForwards(): Promise { return response.portForwards; } catch (error) { logger.warn(error); // don't care, caller must check - + return []; } } @@ -202,4 +200,8 @@ export function openPortForward(portForward: ForwardedPort) { } +export function predictProtocol(name: string) { + return name === "https" ? "https" : "http"; +} + export const portForwardStore = new PortForwardStore();