mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix ordering issues on Runnable token
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
73469c4833
commit
fab36c23a0
@ -6,20 +6,22 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import clusterStoreInjectable from "../../../../common/cluster-store/cluster-store.injectable";
|
||||
import { beforeApplicationIsLoadingInjectionToken } from "../../../../main/start-main-application/runnable-tokens/before-application-is-loading-injection-token";
|
||||
import initUserStoreInjectable from "../../../../main/stores/init-user-store.injectable";
|
||||
import initAuthHeaderStateInjectable from "../../../auth-header/main/init-state.injectable";
|
||||
|
||||
const initClusterStoreInjectable = getInjectable({
|
||||
id: "init-cluster-store",
|
||||
instantiate: (di) => {
|
||||
const clusterStore = di.inject(clusterStoreInjectable);
|
||||
instantiate: (di) => ({
|
||||
id: "init-cluster-store",
|
||||
run: () => {
|
||||
const clusterStore = di.inject(clusterStoreInjectable);
|
||||
|
||||
return {
|
||||
id: "init-cluster-store",
|
||||
run: () => {
|
||||
clusterStore.load();
|
||||
},
|
||||
runAfter: di.inject(initUserStoreInjectable),
|
||||
};
|
||||
},
|
||||
clusterStore.load();
|
||||
},
|
||||
runAfter: [
|
||||
di.inject(initUserStoreInjectable),
|
||||
di.inject(initAuthHeaderStateInjectable),
|
||||
],
|
||||
}),
|
||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||
});
|
||||
|
||||
|
||||
@ -1,60 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { IncomingMessage } from "http";
|
||||
import type { Socket } from "net";
|
||||
import type { SetRequired } from "type-fest";
|
||||
import loggerInjectable from "../../common/logger.injectable";
|
||||
import { apiPrefix, apiKubePrefix } from "../../common/vars";
|
||||
import authHeaderStateInjectable from "../../features/auth-header/common/header-state.injectable";
|
||||
import { lensAuthHeaderName } from "../../features/auth-header/common/vars";
|
||||
import getClusterForRequestInjectable from "./get-cluster-for-request.injectable";
|
||||
import { kubeApiUpgradeRequest } from "./proxy-functions";
|
||||
import shellApiRequestInjectable from "./proxy-functions/shell-api-request.injectable";
|
||||
|
||||
const handleProxyUpgradeRequestInjectable = getInjectable({
|
||||
id: "handle-proxy-upgrade-request",
|
||||
instantiate: (di) => {
|
||||
const getClusterForRequest = di.inject(getClusterForRequestInjectable);
|
||||
const shellApiRequest = di.inject(shellApiRequestInjectable);
|
||||
const logger = di.inject(loggerInjectable);
|
||||
const authHeaderValue = `Bearer ${di.inject(authHeaderStateInjectable).get()}`;
|
||||
|
||||
return (req: SetRequired<IncomingMessage, "url" | "method">, socket: Socket, head: Buffer) => {
|
||||
const cluster = getClusterForRequest(req);
|
||||
const url = new URL(req.url, "https://localhost");
|
||||
|
||||
if (url.searchParams.get(lensAuthHeaderName) !== authHeaderValue) {
|
||||
logger.warn(`[LENS-PROXY]: Request from url=${req.url} missing authentication`);
|
||||
socket.destroy();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!cluster) {
|
||||
logger.error(`[LENS-PROXY]: Could not find cluster for upgrade request from url=${req.url}`);
|
||||
socket.destroy();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
if (url.pathname === apiPrefix) {
|
||||
await shellApiRequest({ req, socket, cluster, head });
|
||||
} else if (url.pathname.startsWith(`${apiKubePrefix}/`)) {
|
||||
await kubeApiUpgradeRequest({ req, socket, cluster, head });
|
||||
} else {
|
||||
logger.warn(`[LENS-PROXY]: unknown upgrade request, url=${req.url}`);
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error("[LENS-PROXY]: failed to handle proxy upgrade", error);
|
||||
}
|
||||
})();
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export default handleProxyUpgradeRequestInjectable;
|
||||
@ -10,7 +10,7 @@ import lensProxyCertificateInjectable from "../../common/certificate/lens-proxy-
|
||||
import type net from "net";
|
||||
import { createServer } from "https";
|
||||
import handleLensRequestInjectable from "./handle-lens-request.injectable";
|
||||
import routeUpgradeRequestInjectable from "./upgrade-router/router.injectable";
|
||||
import routeUpgradeRequestInjectable from "./upgrade-router/route-upgrade-request.injectable";
|
||||
|
||||
export interface LensProxy {
|
||||
listen: () => Promise<void>;
|
||||
|
||||
@ -10,19 +10,17 @@ import initDefaultUpdateChannelInjectable from "../vars/default-update-channel/i
|
||||
|
||||
const initUserStoreInjectable = getInjectable({
|
||||
id: "init-user-store",
|
||||
instantiate: (di) => {
|
||||
const userStore = di.inject(userStoreInjectable);
|
||||
const userStoreFileNameMigration = di.inject(userStoreFileNameMigrationInjectable);
|
||||
instantiate: (di) => ({
|
||||
id: "init-user-store",
|
||||
run: async () => {
|
||||
const userStore = di.inject(userStoreInjectable);
|
||||
const userStoreFileNameMigration = di.inject(userStoreFileNameMigrationInjectable);
|
||||
|
||||
return {
|
||||
id: "init-user-store",
|
||||
run: async () => {
|
||||
await userStoreFileNameMigration();
|
||||
userStore.load();
|
||||
},
|
||||
runAfter: di.inject(initDefaultUpdateChannelInjectable),
|
||||
};
|
||||
},
|
||||
await userStoreFileNameMigration();
|
||||
userStore.load();
|
||||
},
|
||||
runAfter: di.inject(initDefaultUpdateChannelInjectable),
|
||||
}),
|
||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||
});
|
||||
|
||||
|
||||
@ -8,14 +8,14 @@ import buildVersionInjectable from "./build-version.injectable";
|
||||
|
||||
const initializeBuildVersionInjectable = getInjectable({
|
||||
id: "initialize-build-version",
|
||||
instantiate: (di) => {
|
||||
const buildVersion = di.inject(buildVersionInjectable);
|
||||
instantiate: (di) => ({
|
||||
id: "initialize-build-version",
|
||||
run: async () => {
|
||||
const buildVersion = di.inject(buildVersionInjectable);
|
||||
|
||||
return {
|
||||
id: "initialize-build-version",
|
||||
run: () => buildVersion.init(),
|
||||
};
|
||||
},
|
||||
await buildVersion.init();
|
||||
},
|
||||
}),
|
||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||
});
|
||||
|
||||
|
||||
@ -9,15 +9,15 @@ import defaultUpdateChannelInjectable from "../../../features/application-update
|
||||
|
||||
const initDefaultUpdateChannelInjectable = getInjectable({
|
||||
id: "init-default-update-channel",
|
||||
instantiate: (di) => {
|
||||
const defaultUpdateChannel = di.inject(defaultUpdateChannelInjectable);
|
||||
instantiate: (di) => ({
|
||||
id: "init-default-update-channel",
|
||||
run: async () => {
|
||||
const defaultUpdateChannel = di.inject(defaultUpdateChannelInjectable);
|
||||
|
||||
return {
|
||||
id: "init-default-update-channel",
|
||||
run: () => defaultUpdateChannel.init(),
|
||||
runAfter: di.inject(initReleaseChannelInjectable),
|
||||
};
|
||||
},
|
||||
await defaultUpdateChannel.init();
|
||||
},
|
||||
runAfter: di.inject(initReleaseChannelInjectable),
|
||||
}),
|
||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||
});
|
||||
|
||||
|
||||
@ -9,15 +9,15 @@ import initSemanticBuildVersionInjectable from "../semantic-build-version/init.i
|
||||
|
||||
const initReleaseChannelInjectable = getInjectable({
|
||||
id: "init-release-channel",
|
||||
instantiate: (di) => {
|
||||
const releaseChannel = di.inject(releaseChannelInjectable);
|
||||
instantiate: (di) => ({
|
||||
id: "init-release-channel",
|
||||
run: async () => {
|
||||
const releaseChannel = di.inject(releaseChannelInjectable);
|
||||
|
||||
return {
|
||||
id: "init-release-channel",
|
||||
run: () => releaseChannel.init(),
|
||||
runAfter: di.inject(initSemanticBuildVersionInjectable),
|
||||
};
|
||||
},
|
||||
await releaseChannel.init();
|
||||
},
|
||||
runAfter: di.inject(initSemanticBuildVersionInjectable),
|
||||
}),
|
||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||
});
|
||||
|
||||
|
||||
@ -9,15 +9,15 @@ import initializeBuildVersionInjectable from "../build-version/init.injectable";
|
||||
|
||||
const initSemanticBuildVersionInjectable = getInjectable({
|
||||
id: "init-semantic-build-version",
|
||||
instantiate: (di) => {
|
||||
const buildSemanticVersion = di.inject(buildSemanticVersionInjectable);
|
||||
instantiate: (di) => ({
|
||||
id: "init-semantic-build-version",
|
||||
run: async () => {
|
||||
const buildSemanticVersion = di.inject(buildSemanticVersionInjectable);
|
||||
|
||||
return {
|
||||
id: "init-semantic-build-version",
|
||||
run: () => buildSemanticVersion.init(),
|
||||
runAfter: di.inject(initializeBuildVersionInjectable),
|
||||
};
|
||||
},
|
||||
return buildSemanticVersion.init();
|
||||
},
|
||||
runAfter: di.inject(initializeBuildVersionInjectable),
|
||||
}),
|
||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user