From e6f1aafb3915c7623458f0e9d43eeca3908ce317 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=B2=9C=20=EC=A7=84=EA=B0=95?= <jjjjjk12@ajou.ac.kr>
Date: Fri, 14 Mar 2025 23:27:46 +0900
Subject: [PATCH] =?UTF-8?q?fix:=20=ED=8F=AC=ED=8A=B8=ED=8F=AC=EC=9B=8C?=
 =?UTF-8?q?=EB=94=A9=20=ED=8C=8C=EC=9D=BC=EC=9D=84=20=EC=88=98=EC=A0=95?=
 =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8D=98=20=EB=AC=B8=EC=A0=9C,?=
 =?UTF-8?q?=20=EC=83=9D=EC=84=B1=EC=9D=BC/=EC=88=98=EC=A0=95=EC=9D=BC=20?=
 =?UTF-8?q?=ED=95=84=EB=93=9C=EA=B0=80=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20?=
 =?UTF-8?q?=EC=A0=81=EC=9A=A9=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8D=98=20?=
 =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/com/aolda/itda/ItdaApplication.java  |  2 ++
 .../com/aolda/itda/exception/ErrorCode.java   |  1 +
 .../service/forwarding/ForwardingService.java | 33 ++++++++++++++++---
 3 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/aolda/itda/ItdaApplication.java b/src/main/java/com/aolda/itda/ItdaApplication.java
index c7f4ef7..674e657 100644
--- a/src/main/java/com/aolda/itda/ItdaApplication.java
+++ b/src/main/java/com/aolda/itda/ItdaApplication.java
@@ -2,8 +2,10 @@ package com.aolda.itda;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
 
 @SpringBootApplication
+@EnableJpaAuditing
 public class ItdaApplication {
 
     public static void main(String[] args) {
diff --git a/src/main/java/com/aolda/itda/exception/ErrorCode.java b/src/main/java/com/aolda/itda/exception/ErrorCode.java
index c36e7f4..2fc313b 100644
--- a/src/main/java/com/aolda/itda/exception/ErrorCode.java
+++ b/src/main/java/com/aolda/itda/exception/ErrorCode.java
@@ -16,6 +16,7 @@ public enum ErrorCode {
 
     //Forwarding
     FAIL_CREATE_CONF(HttpStatus.BAD_REQUEST, "Conf 파일을 생성하지 못했습니다"),
+    FAIL_UPDATE_CONF(HttpStatus.BAD_REQUEST, "Conf 파일을 수정하지 못했습니다"),
     NOT_FOUND_FORWARDING(HttpStatus.BAD_REQUEST, "포트포워딩 파일이 존재하지 않습니다"),
     INVALID_CONF_INPUT(HttpStatus.BAD_REQUEST, "잘못된 입력이 존재합니다"),
     DUPLICATED_INSTANCE_INFO(HttpStatus.BAD_REQUEST, "중복된 인스턴스 IP와 포트입니다"),
diff --git a/src/main/java/com/aolda/itda/service/forwarding/ForwardingService.java b/src/main/java/com/aolda/itda/service/forwarding/ForwardingService.java
index 22a1aee..e47001d 100644
--- a/src/main/java/com/aolda/itda/service/forwarding/ForwardingService.java
+++ b/src/main/java/com/aolda/itda/service/forwarding/ForwardingService.java
@@ -115,17 +115,42 @@ public class ForwardingService {
         Forwarding forwarding = forwardingRepository.findByForwardingIdAndIsDeleted(forwardingId, false)
                 .orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND_FORWARDING));
 
+        forwarding.edit(dto);
+
         /* 중복 검증 */
-        if (forwardingRepository.existsByInstanceIpAndInstancePortAndIsDeleted(dto.getInstanceIp(), dto.getInstancePort(), false)) {
+        if (!(dto.getInstanceIp() == null && dto.getInstancePort() == null) &&
+                forwardingRepository.existsByInstanceIpAndInstancePortAndIsDeleted(forwarding.getInstanceIp()
+                , forwarding.getInstancePort()
+                , false)) {
             throw new CustomException(ErrorCode.DUPLICATED_INSTANCE_INFO);
         }
 
-        if (forwardingRepository.existsByServerPortAndIsDeleted(dto.getServerPort(), false)) {
+        if (dto.getServerPort() != null && forwardingRepository.existsByServerPortAndIsDeleted(dto.getServerPort(), false)) {
             throw new CustomException(ErrorCode.DUPLICATED_SERVER_PORT);
         }
 
-        /* 정보 수정 */
-        forwarding.edit(dto);
+        /* 파일 수정 */
+        String content = forwardingTemplate.getPortForwardingWithTCP(forwarding.getServerPort(),
+                forwarding.getInstanceIp(),
+                forwarding.getInstancePort(),
+                forwarding.getName());
+        String confPath = "/data/nginx/stream/" + forwarding.getForwardingId() + ".conf";
+        File file = new File(confPath);
+        if (!file.exists()) {
+            throw new CustomException(ErrorCode.NOT_FOUND_FORWARDING, "Conf 파일이 존재하지 않아 수정할 수 없습니다");
+        }
+
+        try {
+            BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)); // 예외처리 필요
+            bw.write(content);
+            bw.flush();
+            bw.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new CustomException(ErrorCode.FAIL_UPDATE_CONF, "포트포워딩 Conf 파일을 수정하지 못했습니다");
+        }
+
+        /* DB 정보 수정 */
         forwardingRepository.save(forwarding);
     }
 
-- 
GitLab