Public Source Viewer

비나래아카이브 개발자 포털

실제 서비스 구조를 살펴볼 수 있는 공개용 코드 뷰어입니다. 인증, 세션, 외부 연동, 토큰, 관리자 식별 등 보안상 민감한 구현은 파일 단위 또는 줄 단위로 검열됩니다.

Redacted View
src/routes/index.ts
공개 가능
1 import { Application } from 'express';
2 import express from 'express';
3 import path from 'path';
4 import { setupSessionMiddleware, setupSecurityMiddleware, setupCsrfMiddleware, themeMiddleware, csrfErrorHandler } from '../middleware';
5 import { UPLOAD_DIR, PUBLIC_DIR } from '../utils/paths';
6
7 // Import all route modules
8 import aiRoutes from './ai.routes';
9 import blogRoutes from './blog.routes';
10 import authRoutes from './auth.routes';
11 import userRoutes from './user.routes';
12 import uploadRoutes from './upload.routes';
13 import adminRoutes from './admin.routes';
14 import gameRoutes from './game.routes';
15 import communityRoutes from './community.routes';
16 import trainRoutes from './train.routes';
17 import discordRoutes from './discord.routes';
18 import personaRoutes from './persona.routes';
19 import kivotosRoutes from './kivotos.routes';
20 import mainRoutes from './main.routes';
21 import legacyRoutes from './legacy.routes';
22 import pushRoutes from './push.routes';
23 import endRoutes from './end.routes';
24 import personalNoteRoutes from './personal-note.routes';
25 import monitoringRoutes from './monitoring.routes';
26 import developerPortalRoutes from './developer-portal.routes';
27 import voicepeakRoutes from './voicepeak.routes';
28 import japaneseLoungeRoutes from './japanese-lounge.routes';
29 import securityDashboardRoutes from './security-dashboard.routes';
30 import archiveSearchRoutes from './archive-search.routes';
31 import backupRoutes from './backup.routes';
32 import discordArchiveRoutes from './discord-archive.routes';
33 import discordSearchArchiveRoutes from './discord-search-archive.routes';
34
35 export default function setupRoutes(app: Application): void {
36 // Setup middleware
37 setupSessionMiddleware(app);
38 setupSecurityMiddleware(app);
39 app.use(themeMiddleware);
40 setupCsrfMiddleware(app);
41
42 // Setup static file serving for uploads
43 app.use('/uploads', express.static(path.join(PUBLIC_DIR, 'uploads')));
44
45 // Register all routes
46 app.use(endRoutes); // end.hinana.moe routes (subdomain)
47 app.use(authRoutes); // Auth routes (login, logout, signup)
48 app.use(userRoutes); // User/settings routes
49 app.use(aiRoutes); // AI chat routes
50 app.use(personalNoteRoutes); // Personal notes routes
51 app.use(voicepeakRoutes); // Local Voicepeak narrator tool
52 app.use(japaneseLoungeRoutes); // Japanese/Korean TTS lounge
53 app.use(securityDashboardRoutes); // Security operations dashboard
54 app.use(archiveSearchRoutes); // Cross-archive search
55 app.use(backupRoutes); // Admin backup import/export
56 app.use(discordArchiveRoutes); // Discord AI Chat archive (admin)
57 app.use(discordSearchArchiveRoutes); // Discord GPT web-search archive
58 app.use(blogRoutes); // Blog routes
59 app.use(uploadRoutes); // Upload routes
60 app.use(adminRoutes); // Admin routes
61 app.use(monitoringRoutes); // Monitoring/admin feature flags
62 app.use(developerPortalRoutes); // Public redacted source viewer
63 app.use(gameRoutes); // Game routes (tetris)
64 app.use(communityRoutes); // Community routes (lounge, plaza)
65 app.use(trainRoutes); // Train route
66 app.use(discordRoutes); // Discord share route
67 app.use(personaRoutes); // Persona routes
68 app.use(kivotosRoutes); // Kivotos Express Railway
69 app.use(mainRoutes); // Main page routes
70 app.use(pushRoutes); // Web Push subscription routes
71 app.use(legacyRoutes); // Legacy routes
72
73 // CSRF error handler (must be after routes)
74 app.use(csrfErrorHandler);
75 }
76