[FEATURE] Cairo Auth Integration

This commit is contained in:
Dunemask 2024-02-04 17:02:15 -07:00
parent 184f1fa631
commit cdea22c08a
16 changed files with 89 additions and 45 deletions

View file

@ -7,6 +7,7 @@ import {
getCoreServerContainer,
getBackupContainer,
} from "./server-containers.js";
import { checkAuthorization } from "../database/queries/server-queries.js";
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
@ -25,6 +26,20 @@ const mineclusterManaged = (o) =>
export const serverMatch = (serverId) => (o) =>
o.metadata.annotations["minecluster.dunemask.net/id"] === serverId;
export const cairoMatch = (cairoId) => (o) =>
checkAuthorization(
o.metadata.annotations["minecluster.dunemask.net/id"],
cairoId,
);
export async function getUserDeployments(cairoId) {
const authFIlter = cairoMatch(cairoId);
const allDeployments = await getDeployments();
const authChecks = allDeployments.map(authFIlter);
const authorizations = await Promise.all(authChecks);
return allDeployments.filter((_d, i) => authorizations[i]);
}
export async function getDeployments() {
const deploymentRes = await k8sDeps.listNamespacedDeployment(namespace);
const serverDeployments = deploymentRes.body.items.filter(mineclusterManaged);

View file

@ -1,5 +1,5 @@
import k8s from "@kubernetes/client-node";
import { getDeployments } from "./k8s-server-control.js";
import { getUserDeployments } from "./k8s-server-control.js";
import { getServerEntries } from "../database/queries/server-queries.js";
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
@ -42,9 +42,9 @@ function getServerStatus(server) {
return { serverAvailable, ftpAvailable, services, deploymentAvailable };
}
export async function getInstances() {
export async function getInstances(cairoId) {
const [serverDeployments, podMetricsRes, entries] = await Promise.all([
getDeployments(),
getUserDeployments(cairoId),
k8sMetrics.getPodMetrics(namespace),
getServerEntries(),
]);