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
>
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();