Files
Termix/plugins/step-ca/src/backend/index.ts
T

31 lines
1.1 KiB
TypeScript
Raw Normal View History

2026-10-01 16:20:16 -05:00
import type { Router } from "express";
import type { PluginContext } from "@termix/plugin-sdk/backend";
import { certs as certsTable } from "./tables.js";
import { createCertStore } from "./cert-store.js";
import { createRuntime } from "./runtime.js";
import { createAuthSessions } from "./auth-session.js";
import { createStepCaProvider } from "./provider.js";
import { PUBLIC_PATHS, registerRoutes } from "./routes.js";
import { validateCaSettings } from "./client.js";
export async function activate(ctx: PluginContext) {
ctx.settings.onValidate("admin", validateCaSettings);
const table = await ctx.db.define(certsTable);
const certs = createCertStore(ctx, table);
const runtime = createRuntime(ctx);
const sessions = createAuthSessions(ctx, { certs, runtime });
ctx.disposables.add(async () => {
sessions.closeAll();
await runtime.close();
});
ctx.auth.registerSshAuthProvider(createStepCaProvider(ctx, certs, sessions));
registerRoutes(ctx.http.router<Router>({ public: PUBLIC_PATHS }), sessions);
}
export async function deactivate() {
// Everything above was registered through ctx and is disposed by core.
}