mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
refactor
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
parent
5176970438
commit
7207edd8f2
@ -15,6 +15,8 @@ import registerChannelInjectable from "./app-paths/register-channel/register-cha
|
|||||||
import writeJsonFileInjectable from "../common/fs/write-json-file.injectable";
|
import writeJsonFileInjectable from "../common/fs/write-json-file.injectable";
|
||||||
import readJsonFileInjectable from "../common/fs/read-json-file.injectable";
|
import readJsonFileInjectable from "../common/fs/read-json-file.injectable";
|
||||||
import directoryForBundledBinariesInjectable from "../common/app-paths/directory-for-bundled-binaries/directory-for-bundled-binaries.injectable";
|
import directoryForBundledBinariesInjectable from "../common/app-paths/directory-for-bundled-binaries/directory-for-bundled-binaries.injectable";
|
||||||
|
import getKubeAuthProxyCertDirInjectable from "./kube-auth-proxy/kube-auth-proxy-cert.injectable";
|
||||||
|
import createKubeAuthProxyCertFilesInjectable from "./kube-auth-proxy/create-kube-auth-proxy-cert-files.injectable";
|
||||||
|
|
||||||
export const getDiForUnitTesting = (
|
export const getDiForUnitTesting = (
|
||||||
{ doGeneralOverrides } = { doGeneralOverrides: false },
|
{ doGeneralOverrides } = { doGeneralOverrides: false },
|
||||||
@ -45,6 +47,8 @@ export const getDiForUnitTesting = (
|
|||||||
di.override(appNameInjectable, () => "some-electron-app-name");
|
di.override(appNameInjectable, () => "some-electron-app-name");
|
||||||
di.override(registerChannelInjectable, () => () => undefined);
|
di.override(registerChannelInjectable, () => () => undefined);
|
||||||
di.override(directoryForBundledBinariesInjectable, () => "some-bin-directory");
|
di.override(directoryForBundledBinariesInjectable, () => "some-bin-directory");
|
||||||
|
di.override(getKubeAuthProxyCertDirInjectable, () => "some-kube-auth-proxy-cert-directory");
|
||||||
|
di.override(createKubeAuthProxyCertFilesInjectable, async () => "does-not-matter");
|
||||||
|
|
||||||
di.override(writeJsonFileInjectable, () => () => {
|
di.override(writeJsonFileInjectable, () => () => {
|
||||||
throw new Error("Tried to write JSON file to file system without specifying explicit override.");
|
throw new Error("Tried to write JSON file to file system without specifying explicit override.");
|
||||||
|
|||||||
@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* 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 { access, mkdir, writeFile } from "fs/promises";
|
||||||
|
import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
import { getKubeAuthProxyCertificatePath } from "./kube-auth-proxy-cert";
|
||||||
|
import * as selfsigned from "selfsigned";
|
||||||
|
import { createKubeAuthProxyCertFiles } from "./create-kube-auth-proxy-cert-files";
|
||||||
|
|
||||||
|
const createKubeAuthProxyCertFilesInjectable = getInjectable({
|
||||||
|
id: "create-kube-auth-proxy-cert-files",
|
||||||
|
|
||||||
|
instantiate: async (di) => {
|
||||||
|
const userData = di.inject(directoryForUserDataInjectable);
|
||||||
|
const certPath = getKubeAuthProxyCertificatePath(userData);
|
||||||
|
|
||||||
|
return createKubeAuthProxyCertFiles(certPath, {
|
||||||
|
generate: selfsigned.generate,
|
||||||
|
access, mkdir, writeFile,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default createKubeAuthProxyCertFilesInjectable;
|
||||||
@ -0,0 +1,52 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { access, mkdir, writeFile } from "fs/promises";
|
||||||
|
import path from "path";
|
||||||
|
import type * as selfsigned from "selfsigned";
|
||||||
|
|
||||||
|
type SelfSignedGenerate = typeof selfsigned.generate;
|
||||||
|
|
||||||
|
interface CreateKubeAuthProxyCertificateFilesDependencies {
|
||||||
|
generate: SelfSignedGenerate;
|
||||||
|
access: typeof access;
|
||||||
|
mkdir: typeof mkdir;
|
||||||
|
writeFile: typeof writeFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getKubeAuthProxyCertificate(generate: SelfSignedGenerate): selfsigned.SelfSignedCert {
|
||||||
|
const opts = [
|
||||||
|
{ name: "commonName", value: "Lens Certificate Authority" },
|
||||||
|
{ name: "organizationName", value: "Lens" },
|
||||||
|
];
|
||||||
|
|
||||||
|
return generate(opts, {
|
||||||
|
keySize: 2048,
|
||||||
|
algorithm: "sha256",
|
||||||
|
days: 365,
|
||||||
|
extensions: [
|
||||||
|
{ name: "basicConstraints", cA: true },
|
||||||
|
{ name: "subjectAltName", altNames: [
|
||||||
|
{ type: 2, value: "localhost" },
|
||||||
|
{ type: 7, ip: "127.0.0.1" },
|
||||||
|
] },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function createKubeAuthProxyCertFiles(dir: string, dependencies: CreateKubeAuthProxyCertificateFilesDependencies): Promise<string> {
|
||||||
|
const cert = getKubeAuthProxyCertificate(dependencies.generate);
|
||||||
|
|
||||||
|
try {
|
||||||
|
await dependencies.access(dir);
|
||||||
|
} catch {
|
||||||
|
await dependencies.mkdir(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
await dependencies.writeFile(path.join(dir, "proxy.key"), cert.private);
|
||||||
|
await dependencies.writeFile(path.join(dir, "proxy.crt"), cert.cert);
|
||||||
|
|
||||||
|
return dir;
|
||||||
|
}
|
||||||
@ -4,17 +4,14 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
import { createKubeAuthProxyCertificateFiles, getKubeAuthProxyCertificatePath } from "./kube-auth-proxy-cert";
|
import { getKubeAuthProxyCertificatePath } from "./kube-auth-proxy-cert";
|
||||||
import * as selfsigned from "selfsigned";
|
import createKubeAuthProxyCertFilesInjectable from "./create-kube-auth-proxy-cert-files.injectable";
|
||||||
|
|
||||||
const getKubeAuthProxyCertDirInjectable = getInjectable({
|
const getKubeAuthProxyCertDirInjectable = getInjectable({
|
||||||
id: "get-kube-auth-proxy-cert-dir",
|
id: "get-kube-auth-proxy-cert-dir",
|
||||||
|
|
||||||
setup: async (di) => {
|
setup: async (di) => {
|
||||||
const userData = await di.inject(directoryForUserDataInjectable);
|
await di.inject(createKubeAuthProxyCertFilesInjectable);
|
||||||
const certPath = getKubeAuthProxyCertificatePath(userData);
|
|
||||||
|
|
||||||
await createKubeAuthProxyCertificateFiles(certPath, selfsigned.generate);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
instantiate: (di) => getKubeAuthProxyCertificatePath(di.inject(directoryForUserDataInjectable)),
|
instantiate: (di) => getKubeAuthProxyCertificatePath(di.inject(directoryForUserDataInjectable)),
|
||||||
|
|||||||
@ -3,7 +3,6 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { access, mkdir, writeFile } from "fs/promises";
|
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import type * as selfsigned from "selfsigned";
|
import type * as selfsigned from "selfsigned";
|
||||||
|
|
||||||
@ -32,18 +31,3 @@ export function getKubeAuthProxyCertificate(generate: SelfSignedGenerate): selfs
|
|||||||
export function getKubeAuthProxyCertificatePath(baseDir: string) {
|
export function getKubeAuthProxyCertificatePath(baseDir: string) {
|
||||||
return path.join(baseDir, "kube-auth-proxy");
|
return path.join(baseDir, "kube-auth-proxy");
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createKubeAuthProxyCertificateFiles(dir: string, generateFunc: SelfSignedGenerate): Promise<string> {
|
|
||||||
const cert = getKubeAuthProxyCertificate(generateFunc);
|
|
||||||
|
|
||||||
try {
|
|
||||||
await access(dir);
|
|
||||||
} catch {
|
|
||||||
await mkdir(dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
await writeFile(path.join(dir, "proxy.key"), cert.private);
|
|
||||||
await writeFile(path.join(dir, "proxy.crt"), cert.cert);
|
|
||||||
|
|
||||||
return dir;
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user