2026-02-13 15:52:13 +07:00
|
|
|
import { Elysia } from "elysia";
|
|
|
|
|
import { z } from "zod";
|
|
|
|
|
import { reverseProxyService } from "../application/di-container";
|
2026-02-17 18:12:02 +07:00
|
|
|
import { requireAuth } from "../middleware/auth-guards";
|
2026-02-13 15:52:13 +07:00
|
|
|
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" })
|
2026-02-17 18:12:02 +07:00
|
|
|
.use(requireAuth)
|
2026-02-13 15:52:13 +07:00
|
|
|
.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 };
|
|
|
|
|
});
|