mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* Release 6.1.13 Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix kubeconfig-sync sometimes producing multiple identical entities (#5855) Signed-off-by: Sebastian Malton <sebastian@malton.name> * Require milestones on PRs before merging (#6431) * Require milestones on PRs before merging Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix AppImage windows not showing the application icon (#6444) Signed-off-by: Damien Degois <damien@degois.info> Signed-off-by: Damien Degois <damien@degois.info> * Fix links in Readme (#6441) Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Sebastian Malton <sebastian@malton.name> * Update all links within application (#6442) - URLs removed the /latest/ and /main/ pathname prefixes Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Sebastian Malton <sebastian@malton.name> * Bump lens-k8s-proxy to v0.3.0 (#6461) Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix syncing shell env on TCSH and CSH (#6453) * Fix syncing shell env on TCSH and CSH Signed-off-by: Sebastian Malton <sebastian@malton.name> * Refactor computeUnixShellEnvironment to be clearer Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix manually set prometheus service address to work after re-connect (#6435) * Fix manually set prometheus service address to work after re-connect Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Fix manually set prometheus service address to work after re-connect Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Setup prometheus also on contenxt handler constructor Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> * Temp fix Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Damien Degois <damien@degois.info> Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com> Co-authored-by: Damien Degois <damien@degois.info> Co-authored-by: Lauri Nevala <lauri.nevala@gmail.com>
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
|
|
import logger from "../../../logger";
|
|
import type WebSocket from "ws";
|
|
import { Server as WebSocketServer } from "ws";
|
|
import type { ProxyApiRequestArgs } from "../types";
|
|
import type { ClusterManager } from "../../../cluster/manager";
|
|
import URLParse from "url-parse";
|
|
import type { Cluster } from "../../../../common/cluster/cluster";
|
|
import type { ClusterId } from "../../../../common/cluster-types";
|
|
|
|
interface Dependencies {
|
|
authenticateRequest: (clusterId: ClusterId, tabId: string, shellToken: string | undefined) => boolean;
|
|
|
|
createShellSession: (args: {
|
|
websocket: WebSocket;
|
|
cluster: Cluster;
|
|
tabId: string;
|
|
nodeName?: string;
|
|
}) => { open: () => Promise<void> };
|
|
|
|
clusterManager: ClusterManager;
|
|
}
|
|
|
|
export const shellApiRequest = ({ createShellSession, authenticateRequest, clusterManager }: Dependencies) => ({ req, socket, head }: ProxyApiRequestArgs): void => {
|
|
const cluster = clusterManager.getClusterForRequest(req);
|
|
const { query: { node: nodeName, shellToken, id: tabId }} = new URLParse(req.url, true);
|
|
|
|
if (!tabId || !cluster || !authenticateRequest(cluster.id, tabId, shellToken)) {
|
|
socket.write("Invalid shell request");
|
|
|
|
return void socket.end();
|
|
}
|
|
|
|
const ws = new WebSocketServer({ noServer: true });
|
|
|
|
ws.handleUpgrade(req, socket, head, (websocket) => {
|
|
const shell = createShellSession({ websocket, cluster, tabId, nodeName });
|
|
|
|
shell.open()
|
|
.catch(error => logger.error(`[SHELL-SESSION]: failed to open a ${nodeName ? "node" : "local"} shell`, error));
|
|
});
|
|
};
|