| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using Application.Abstractions.Messaging;
- using Web.Api.Common;
- namespace Web.Api.Endpoints.Config;
- internal sealed class Config : IEndpoint
- {
- public void MapEndpoint(IEndpointRouteBuilder app)
- {
- app.MapGet("api/config", async (
- ISender sender,
- CancellationToken ct
- ) => {
- var result = await sender.Send(new Application.Features.Config.Get.Query(), ct);
- // 공개(익명) 응답 정화 — 민감 Basic 필드는 프론트가 쓰지 않으며 노출 시 심각한 보안 위험
- // (SMTP 자격증명 = 메일계정 탈취, RootID = 최고관리자 ID, IP 화이트리스트 = 인프라 노출).
- // 화이트리스트 방식(default-deny): 안전 필드만 복사 → 이후 새 Basic 필드도 명시 전엔 비공개.
- // Admin/DirectMailService/MailWorker 는 in-process(mediator·cache·DB)로 원본을 읽어 영향 없음.
- if (result is not null)
- {
- result.Basic = new Application.Features.Config.Get.Response.BasicConfigDto
- {
- SiteName = result.Basic.SiteName,
- SiteURL = result.Basic.SiteURL,
- FromEmail = result.Basic.FromEmail,
- FromName = result.Basic.FromName,
- BlockAlertTitle = result.Basic.BlockAlertTitle,
- BlockAlertContent = result.Basic.BlockAlertContent,
- IsMaintenance = result.Basic.IsMaintenance,
- MaintenanceContent = result.Basic.MaintenanceContent,
- NoteDailySendLimit = result.Basic.NoteDailySendLimit
- // 비공개(제외): RootID, SmtpServer, SmtpPort, SmtpEnableSSL, SmtpUsername, SmtpPassword, AdminWhiteIPList, FrontWhiteIPList
- };
- }
- return ApiResponse.Ok(result);
- })
- .WithTags("Config")
- .AllowAnonymous();
- }
- }
|