mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Lens app source code (#119)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
1 parent
936cbd53d4
commit
1d0815abd2
797 files changed
+73714
-215
No files matched your search
@@ -0,0 +1,3 @@
|
||||
export * from "./kube-proxy"
|
||||
export * from "./terminal-proxy"
|
||||
export * from "./use-header-token"
|
||||
@@ -0,0 +1,24 @@
|
||||
import { Request } from "express";
|
||||
import proxy from "http-proxy-middleware"
|
||||
import { userSession } from "../user-session";
|
||||
import config, { isSecure } from "../config";
|
||||
|
||||
export function kubeProxy(serviceUrl: string, proxyConfig: proxy.Config = {}) {
|
||||
const { IS_PRODUCTION } = config;
|
||||
return proxy({
|
||||
target: serviceUrl,
|
||||
secure: isSecure(), // verify the ssl certs
|
||||
logLevel: IS_PRODUCTION ? "info" : "debug",
|
||||
changeOrigin: true, // needed for virtual hosted sites
|
||||
pathRewrite: (path, req: Request) => {
|
||||
return path.replace(req.baseUrl, ""); // remove client-prefix, e.g "/api-kube"
|
||||
},
|
||||
onProxyReq(proxyReq, req: Request, res) {
|
||||
const { authHeader } = userSession.get(req);
|
||||
if (authHeader) {
|
||||
proxyReq.setHeader("Authorization", authHeader);
|
||||
}
|
||||
},
|
||||
...proxyConfig,
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { NextFunction } from "express";
|
||||
import proxy from "http-proxy-middleware"
|
||||
import appConfig from "../config"
|
||||
|
||||
const { KUBE_TERMINAL_URL, API_PREFIX, IS_PRODUCTION } = appConfig;
|
||||
|
||||
interface ITerminalProxy extends NextFunction {
|
||||
upgrade: () => void;
|
||||
}
|
||||
|
||||
export const terminalProxy = proxy({
|
||||
target: KUBE_TERMINAL_URL,
|
||||
ws: true,
|
||||
changeOrigin: true,
|
||||
logLevel: IS_PRODUCTION ? "info" : "debug",
|
||||
pathRewrite: {
|
||||
["^" + API_PREFIX.TERMINAL]: "" // remove api-prefix
|
||||
}
|
||||
}) as ITerminalProxy;
|
||||
@@ -0,0 +1,20 @@
|
||||
// Allow to use "Authorization" from request for auto-login (when provided by proxy)
|
||||
import { NextFunction, Request, Response } from "express"
|
||||
import { userSession } from "../user-session";
|
||||
|
||||
export function useRequestHeaderToken() {
|
||||
return (req: Request, res: Response, next: NextFunction) => {
|
||||
const authorization = req.headers["authorization"] || req.headers["x-lens-kubectl-token"];
|
||||
const { authHeader, isUserLogin } = userSession.get(req);
|
||||
const userHasOwnToken = authHeader && isUserLogin;
|
||||
|
||||
// don't overwrite user's login credentials
|
||||
if (authorization && !userHasOwnToken && authHeader !== authorization) {
|
||||
userSession.save(req, {
|
||||
authHeader: authorization.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
next();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user