diff --git a/src/features/certificate-authorities/common/channel.ts b/src/features/certificate-authorities/common/channel.ts new file mode 100644 index 0000000000..5fb58ee1ca --- /dev/null +++ b/src/features/certificate-authorities/common/channel.ts @@ -0,0 +1,8 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getRequestChannel } from "../../../common/utils/channel/get-request-channel"; + +export const casChannel = getRequestChannel("certificate-authorities"); diff --git a/src/common/certificate-authorities/inject-system-cas.injectable.ts b/src/features/certificate-authorities/common/inject-system-cas.injectable.ts similarity index 100% rename from src/common/certificate-authorities/inject-system-cas.injectable.ts rename to src/features/certificate-authorities/common/inject-system-cas.injectable.ts diff --git a/src/common/certificate-authorities/request-system-cas-token.ts b/src/features/certificate-authorities/common/request-system-cas-token.ts similarity index 100% rename from src/common/certificate-authorities/request-system-cas-token.ts rename to src/features/certificate-authorities/common/request-system-cas-token.ts diff --git a/src/features/certificate-authorities/main/channel-handler.global-override-for-injectable.ts b/src/features/certificate-authorities/main/channel-handler.global-override-for-injectable.ts new file mode 100644 index 0000000000..d8346706bb --- /dev/null +++ b/src/features/certificate-authorities/main/channel-handler.global-override-for-injectable.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getGlobalOverride } from "../../../common/test-utils/get-global-override"; +import { casChannel } from "../common/channel"; +import certificateAuthoritiesChannelListenerInjectable from "./channel-handler.injectable"; + +export default getGlobalOverride(certificateAuthoritiesChannelListenerInjectable, () => ({ + channel: casChannel, + handler: () => [], +})); diff --git a/src/features/certificate-authorities/main/channel-handler.injectable.ts b/src/features/certificate-authorities/main/channel-handler.injectable.ts new file mode 100644 index 0000000000..300b69c383 --- /dev/null +++ b/src/features/certificate-authorities/main/channel-handler.injectable.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getRequestChannelListenerInjectable } from "../../../main/utils/channel/channel-listeners/listener-tokens"; +import { casChannel } from "../common/channel"; +import { globalAgent } from "https"; +import { isString } from "../../../common/utils"; + +const certificateAuthoritiesChannelListenerInjectable = getRequestChannelListenerInjectable({ + channel: casChannel, + handler: () => () => { + if (Array.isArray(globalAgent.options.ca)) { + return globalAgent.options.ca.filter(isString); + } + + if (typeof globalAgent.options.ca === "string") { + return [globalAgent.options.ca]; + } + + return []; + }, +}); + +export default certificateAuthoritiesChannelListenerInjectable; diff --git a/src/common/certificate-authorities/request-system-cas.injectable.darwin.ts b/src/features/certificate-authorities/main/request-system-cas.injectable.darwin.ts similarity index 86% rename from src/common/certificate-authorities/request-system-cas.injectable.darwin.ts rename to src/features/certificate-authorities/main/request-system-cas.injectable.darwin.ts index c471c954e4..62cf75f6ff 100644 --- a/src/common/certificate-authorities/request-system-cas.injectable.darwin.ts +++ b/src/features/certificate-authorities/main/request-system-cas.injectable.darwin.ts @@ -3,10 +3,10 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import execFileInjectable from "../fs/exec-file.injectable"; -import loggerInjectable from "../logger.injectable"; -import type { AsyncResult } from "../utils/async-result"; -import { requestSystemCAsInjectionToken } from "./request-system-cas-token"; +import execFileInjectable from "../../../common/fs/exec-file.injectable"; +import loggerInjectable from "../../../common/logger.injectable"; +import type { AsyncResult } from "../../../common/utils/async-result"; +import { requestSystemCAsInjectionToken } from "../common/request-system-cas-token"; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Cheatsheet#other_assertions const certSplitPattern = /(?=-----BEGIN\sCERTIFICATE-----)/g; diff --git a/src/common/certificate-authorities/request-system-cas.injectable.linux.ts b/src/features/certificate-authorities/main/request-system-cas.injectable.linux.ts similarity index 83% rename from src/common/certificate-authorities/request-system-cas.injectable.linux.ts rename to src/features/certificate-authorities/main/request-system-cas.injectable.linux.ts index 1d7bf10350..cffd0d172a 100644 --- a/src/common/certificate-authorities/request-system-cas.injectable.linux.ts +++ b/src/features/certificate-authorities/main/request-system-cas.injectable.linux.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { requestSystemCAsInjectionToken } from "./request-system-cas-token"; +import { requestSystemCAsInjectionToken } from "../common/request-system-cas-token"; const requestSystemCAsInjectable = getInjectable({ id: "request-system-cas", diff --git a/src/common/certificate-authorities/request-system-cas.injectable.testing-env.ts b/src/features/certificate-authorities/main/request-system-cas.injectable.testing-env.ts similarity index 83% rename from src/common/certificate-authorities/request-system-cas.injectable.testing-env.ts rename to src/features/certificate-authorities/main/request-system-cas.injectable.testing-env.ts index 1d7bf10350..cffd0d172a 100644 --- a/src/common/certificate-authorities/request-system-cas.injectable.testing-env.ts +++ b/src/features/certificate-authorities/main/request-system-cas.injectable.testing-env.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { requestSystemCAsInjectionToken } from "./request-system-cas-token"; +import { requestSystemCAsInjectionToken } from "../common/request-system-cas-token"; const requestSystemCAsInjectable = getInjectable({ id: "request-system-cas", diff --git a/src/common/certificate-authorities/request-system-cas.injectable.win32.ts b/src/features/certificate-authorities/main/request-system-cas.injectable.win32.ts similarity index 87% rename from src/common/certificate-authorities/request-system-cas.injectable.win32.ts rename to src/features/certificate-authorities/main/request-system-cas.injectable.win32.ts index 4940aa2a7b..9e5d5d8caf 100644 --- a/src/common/certificate-authorities/request-system-cas.injectable.win32.ts +++ b/src/features/certificate-authorities/main/request-system-cas.injectable.win32.ts @@ -3,9 +3,9 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import execFileInjectable from "../fs/exec-file.injectable"; -import loggerInjectable from "../logger.injectable"; -import { requestSystemCAsInjectionToken } from "./request-system-cas-token"; +import execFileInjectable from "../../../common/fs/exec-file.injectable"; +import loggerInjectable from "../../../common/logger.injectable"; +import { requestSystemCAsInjectionToken } from "../common/request-system-cas-token"; const pemEncoding = (hexEncodedCert: String) => { const certData = Buffer.from(hexEncodedCert, "hex").toString("base64"); diff --git a/src/features/certificate-authorities/renderer/request-system-cas.injectable.ts b/src/features/certificate-authorities/renderer/request-system-cas.injectable.ts new file mode 100644 index 0000000000..e3c840a95a --- /dev/null +++ b/src/features/certificate-authorities/renderer/request-system-cas.injectable.ts @@ -0,0 +1,20 @@ +/** + * 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 { requestFromChannelInjectionToken } from "../../../common/utils/channel/request-from-channel-injection-token"; +import { casChannel } from "../common/channel"; +import { requestSystemCAsInjectionToken } from "../common/request-system-cas-token"; + +const requestSystemCAsInjectable = getInjectable({ + id: "request-system-cas", + instantiate: (di) => { + const requestFromChannel = di.inject(requestFromChannelInjectionToken); + + return () => requestFromChannel(casChannel); + }, + injectionToken: requestSystemCAsInjectionToken, +}); + +export default requestSystemCAsInjectable; diff --git a/src/main/start-main-application/runnables/setup-system-ca.injectable.ts b/src/main/start-main-application/runnables/setup-system-ca.injectable.ts index b5219dbf4f..e819c42596 100644 --- a/src/main/start-main-application/runnables/setup-system-ca.injectable.ts +++ b/src/main/start-main-application/runnables/setup-system-ca.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { beforeApplicationIsLoadingInjectionToken } from "../runnable-tokens/before-application-is-loading-injection-token"; -import injectSystemCAsInjectable from "../../../common/certificate-authorities/inject-system-cas.injectable"; +import injectSystemCAsInjectable from "../../../features/certificate-authorities/common/inject-system-cas.injectable"; const setupSystemCaInjectable = getInjectable({ id: "setup-system-ca", diff --git a/src/renderer/frames/root-frame/setup-system-ca.injectable.ts b/src/renderer/frames/root-frame/setup-system-ca.injectable.ts index 557d87c81f..4fe4d07758 100644 --- a/src/renderer/frames/root-frame/setup-system-ca.injectable.ts +++ b/src/renderer/frames/root-frame/setup-system-ca.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { beforeFrameStartsSecondInjectionToken } from "../../before-frame-starts/tokens"; -import injectSystemCAsInjectable from "../../../common/certificate-authorities/inject-system-cas.injectable"; +import injectSystemCAsInjectable from "../../../features/certificate-authorities/common/inject-system-cas.injectable"; const setupSystemCaInjectable = getInjectable({ id: "setup-system-ca",