Public Source Viewer
비나래아카이브 개발자 포털
실제 서비스 구조를 살펴볼 수 있는 공개용 코드 뷰어입니다. 인증, 세션, 외부 연동, 토큰, 관리자 식별 등 보안상 민감한 구현은 파일 단위 또는 줄 단위로 검열됩니다.
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