feat: topology, and improves handling

This commit is contained in:
2026-02-17 18:12:02 +07:00
parent e8dbefde43
commit d14f043e7c
145 changed files with 4213 additions and 2861 deletions

View File

@@ -0,0 +1,53 @@
import { Elysia } from "elysia";
import { z } from "zod";
import { reverseProxyService } from "../application/di-container";
import { requireAuth } from "../middleware/auth-guards";
import { createReverseProxySchema, updateReverseProxySchema } from "../schemas/server.schema";
const envVariableSchema = z.object({
key: z.string(),
value: z.string(),
});
export const reverseProxyRoutes = new Elysia({ prefix: "/reverse-proxy" })
.use(requireAuth)
.get("/", async () => {
return await reverseProxyService.getAllReverseProxies(false);
})
.get("/:id", async ({ params }) => {
return await reverseProxyService.getReverseProxyById(params.id, false);
})
.post("/", async ({ body }) => {
const payload = createReverseProxySchema.parse(body);
const proxy = await reverseProxyService.createReverseProxy(payload);
return proxy;
})
.patch("/:id", async ({ params, body }) => {
const payload = updateReverseProxySchema.parse(body);
const proxy = await reverseProxyService.updateReverseProxy(params.id, payload);
return proxy;
})
.delete("/:id", async ({ params }) => {
await reverseProxyService.deleteReverseProxy(params.id);
return { success: true };
})
.get("/:id/env", async ({ params }) => {
const envVariables = await reverseProxyService.getEnvVariables(params.id);
return { env_variables: envVariables };
})
.post("/:id/env", async ({ params, body }) => {
const payload = envVariableSchema.parse(body);
await reverseProxyService.setEnvVariable(params.id, payload.key, payload.value);
return { success: true };
})
.delete("/:id/env/:key", async ({ params }) => {
await reverseProxyService.deleteEnvVariable(params.id, params.key);
return { success: true };
});