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