52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
|
|
/**
|
||
|
|
* 이메일 백엔드 서버 진입점
|
||
|
|
* Express HTTP 서버 + SMTP 서버 시작
|
||
|
|
*/
|
||
|
|
const express = require("express");
|
||
|
|
const cors = require("cors");
|
||
|
|
const dotenv = require("dotenv");
|
||
|
|
|
||
|
|
// 환경 변수 로드
|
||
|
|
dotenv.config();
|
||
|
|
|
||
|
|
const app = express();
|
||
|
|
const port = process.env.PORT || 3000;
|
||
|
|
|
||
|
|
// 미들웨어 설정
|
||
|
|
app.use(cors());
|
||
|
|
app.use(express.json({ limit: "50mb" })); // Base64 인코딩된 첨부파일 40MB 지원
|
||
|
|
|
||
|
|
// 헬스 체크 엔드포인트
|
||
|
|
app.get("/", (req, res) => {
|
||
|
|
res.send("Email Client Backend is running");
|
||
|
|
});
|
||
|
|
|
||
|
|
// 라우터 등록
|
||
|
|
const authRoutes = require("./routes/auth");
|
||
|
|
const mailRoutes = require("./routes/mail");
|
||
|
|
const adminRoutes = require("./routes/admin");
|
||
|
|
|
||
|
|
app.use("/api", authRoutes);
|
||
|
|
app.use("/api/admin", adminRoutes);
|
||
|
|
app.use("/api", mailRoutes);
|
||
|
|
|
||
|
|
// 서비스 및 유틸리티
|
||
|
|
const { startSMTPServer } = require("./services/smtpService");
|
||
|
|
const initializeDatabase = require("./utils/dbInit");
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 서버 시작
|
||
|
|
* 1. SMTP 서버 시작 (포트 25)
|
||
|
|
* 2. 데이터베이스 초기화
|
||
|
|
* 3. HTTP 서버 시작
|
||
|
|
*/
|
||
|
|
const startServer = async () => {
|
||
|
|
startSMTPServer();
|
||
|
|
await initializeDatabase();
|
||
|
|
app.listen(port, () => {
|
||
|
|
console.log(`[서버] HTTP 서버 시작: http://localhost:${port}`);
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
startServer();
|