110 lines
4.2 KiB
TypeScript
110 lines
4.2 KiB
TypeScript
import { Application } from "@oak/oak";
|
|
import "@std/dotenv/load";
|
|
import { getMongoClient } from "./db/mongo.ts";
|
|
import { corsMiddleware } from "./middleware/cors.ts";
|
|
import { authRouter } from "./routes/auth.ts";
|
|
import { tasksRouter } from "./routes/tasks.ts";
|
|
import { agentTasksRouter } from "./routes/agenttasks.ts";
|
|
import { secretsRouter, secretFoldersRouter } from "./routes/secrets.ts";
|
|
import { secretAuditLogsRouter } from "./routes/secretAuditLogs.ts";
|
|
import { workspaceRouter } from "./routes/workspace.ts";
|
|
import { labelsRouter } from "./routes/labels.ts";
|
|
import { cronJobsRouter } from "./routes/cronjobs.ts";
|
|
import { quickTextsRouter } from "./routes/quicktexts.ts";
|
|
import { transcribeRouter } from "./routes/transcribe.ts";
|
|
import { messagingRouter } from "./routes/messaging.ts";
|
|
import { tokensRouter } from "./routes/tokens.ts";
|
|
import { settingsRouter } from "./routes/settings.ts";
|
|
import { commentsRouter } from "./routes/comments.ts";
|
|
import { attachmentsRouter } from "./routes/attachments.ts";
|
|
import { agentsRouter } from "./routes/agents.ts";
|
|
import { logsRouter } from "./routes/logs.ts";
|
|
import { userSettingsRouter } from "./routes/usersettings.ts";
|
|
import gitlabRouter from "./routes/gitlab.ts";
|
|
import { giteaRouter } from "./routes/gitea.ts";
|
|
import { backupRouter } from "./routes/backup.ts";
|
|
import { versionRouter } from "./routes/version.ts";
|
|
import { dockerRouter } from "./routes/docker.ts";
|
|
import { exportRouter } from "./routes/export.ts";
|
|
import { appUpdateRouter } from "./routes/appUpdate.ts";
|
|
import { handleWebSocket } from "./ws/handler.ts";
|
|
|
|
const app = new Application();
|
|
const PORT = parseInt(Deno.env.get("PORT") || "8000");
|
|
|
|
// Connect to MongoDB
|
|
await getMongoClient();
|
|
|
|
// Middleware
|
|
app.use(corsMiddleware);
|
|
|
|
// Routes
|
|
app.use(authRouter.routes());
|
|
app.use(authRouter.allowedMethods());
|
|
app.use(tasksRouter.routes());
|
|
app.use(tasksRouter.allowedMethods());
|
|
app.use(agentTasksRouter.routes());
|
|
app.use(agentTasksRouter.allowedMethods());
|
|
app.use(secretsRouter.routes());
|
|
app.use(secretsRouter.allowedMethods());
|
|
app.use(secretFoldersRouter.routes());
|
|
app.use(secretFoldersRouter.allowedMethods());
|
|
app.use(secretAuditLogsRouter.routes());
|
|
app.use(secretAuditLogsRouter.allowedMethods());
|
|
app.use(workspaceRouter.routes());
|
|
app.use(workspaceRouter.allowedMethods());
|
|
app.use(labelsRouter.routes());
|
|
app.use(labelsRouter.allowedMethods());
|
|
app.use(cronJobsRouter.routes());
|
|
app.use(cronJobsRouter.allowedMethods());
|
|
app.use(quickTextsRouter.routes());
|
|
app.use(quickTextsRouter.allowedMethods());
|
|
app.use(transcribeRouter.routes());
|
|
app.use(transcribeRouter.allowedMethods());
|
|
app.use(messagingRouter.routes());
|
|
app.use(messagingRouter.allowedMethods());
|
|
app.use(tokensRouter.routes());
|
|
app.use(tokensRouter.allowedMethods());
|
|
app.use(settingsRouter.routes());
|
|
app.use(settingsRouter.allowedMethods());
|
|
app.use(commentsRouter.routes());
|
|
app.use(commentsRouter.allowedMethods());
|
|
app.use(attachmentsRouter.routes());
|
|
app.use(attachmentsRouter.allowedMethods());
|
|
app.use(agentsRouter.routes());
|
|
app.use(agentsRouter.allowedMethods());
|
|
app.use(logsRouter.routes());
|
|
app.use(logsRouter.allowedMethods());
|
|
app.use(userSettingsRouter.routes());
|
|
app.use(userSettingsRouter.allowedMethods());
|
|
app.use(gitlabRouter.routes());
|
|
app.use(giteaRouter.routes());
|
|
app.use(giteaRouter.allowedMethods());
|
|
app.use(backupRouter.routes());
|
|
app.use(backupRouter.allowedMethods());
|
|
app.use(versionRouter.routes());
|
|
app.use(versionRouter.allowedMethods());
|
|
app.use(gitlabRouter.allowedMethods());
|
|
app.use(dockerRouter.routes());
|
|
app.use(dockerRouter.allowedMethods());
|
|
app.use(exportRouter.routes());
|
|
app.use(exportRouter.allowedMethods());
|
|
app.use(appUpdateRouter.routes());
|
|
app.use(appUpdateRouter.allowedMethods());
|
|
|
|
console.log(`AMS Backend running on port ${PORT}`);
|
|
|
|
// Use Deno.serve for WebSocket support
|
|
Deno.serve({ port: PORT }, async (req: Request): Promise<Response> => {
|
|
const url = new URL(req.url);
|
|
|
|
// Handle WebSocket upgrades
|
|
if (url.pathname === "/ws" && req.headers.get("upgrade")?.toLowerCase() === "websocket") {
|
|
return handleWebSocket(req);
|
|
}
|
|
|
|
// Forward to Oak for regular HTTP
|
|
const oakResponse = await app.handle(req);
|
|
return oakResponse || new Response("Not Found", { status: 404 });
|
|
});
|