diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index 5c7eab5..17bf644 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -1,76 +1,76 @@ -#name: CD -# -#on: -# push: -# branches: [ "master"] -# pull_request: -# branches: [ "master" ] -# -#permissions: -# contents: read -# -#jobs: -# build: -# -# runs-on: ubuntu-latest -# -# steps: -# - uses: actions/checkout@v3 -# - name: Set up JDK 11 -# uses: actions/setup-java@v3 -# with: -# java-version: '11' -# distribution: 'temurin' -# -# -# - name: make application-prod.yml -# run: | -# cd ./src/main/resources -# touch ./application.yml -# echo "${{ secrets.APPLICATION_PROD }}" > ./application.yml -# - name: make application-prod.yaml -# run: | -# cd ./src/main/resources -# touch ./application.yaml -# echo "${{ secrets.APPLICATION_PRO }}" > ./application.yaml -# -# -# - name: Grant execute permission for gradlew -# run: chmod +x gradlew -# -# - name: Build with Gradle -# run: ./gradlew build -x test -# -# - name: Docker build -# run: | -# docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} -# docker buildx build --push --platform linux/amd64 -t ${{ secrets.DOCKER_USERNAME }}/chat . -# # docker tag chat ${{ secrets.DOCKER_USERNAME }}/chat -# docker push ${{ secrets.DOCKER_USERNAME }}/chat -# -# - name: Deploy -# uses: appleboy/ssh-action@master -# with: -# host: ${{ secrets.HOST }} -# username: ec2-user -# key: ${{ secrets.PRIVATE_KEY }} # pem 키 -# script: | -# docker pull ${{ secrets.DOCKER_USERNAME }}/chat -# docker stop $(docker ps -a -q | grep -v $(docker-compose ps -q kurento)) # Kurento 서비스를 제외한 다른 모든 컨테이너 중지 -# docker rm $(docker ps --filter 'status=exited' -a -q) # 종료된(exited) 상태의 모든 컨테이너 삭제 -# docker-compose up -d -# docker image prune -a -f -# -# - name: Deploy to Instance -# uses: appleboy/ssh-action@master -# with: -# host: ${{ secrets.HOST }} -# username: ec2-user -# key: ${{ secrets.PRIVATE_KEY }} -# -# script: | -# docker pull ${{ secrets.DOCKER_USERNAME }}/chat -# docker stop $(docker ps -a -q | grep -v $(docker-compose ps -q kurento)) # Kurento 서비스를 제외한 다른 모든 컨테이너 중지 -# docker rm $(docker ps --filter 'status=exited' -a -q) # 종료된(exited) 상태의 모든 컨테이너 삭제 -# docker-compose up -d -# docker image prune -a -f +name: CD + +on: + push: + branches: [ "master"] + pull_request: + branches: [ "master" ] + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + + + - name: make application-prod.yml + run: | + cd ./src/main/resources + touch ./application.yml + echo "${{ secrets.APPLICATION_PROD }}" > ./application.yml + - name: make application-prod.yaml + run: | + cd ./src/main/resources + touch ./application.yaml + echo "${{ secrets.APPLICATION_PRO }}" > ./application.yaml + + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build -x test + + - name: Docker build + run: | + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker buildx build --push --platform linux/amd64 -t ${{ secrets.DOCKER_USERNAME }}/chat . + # docker tag chat ${{ secrets.DOCKER_USERNAME }}/chat + docker push ${{ secrets.DOCKER_USERNAME }}/chat + + - name: Deploy + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + username: ec2-user + key: ${{ secrets.PRIVATE_KEY }} # pem 키 + script: | + docker pull ${{ secrets.DOCKER_USERNAME }}/chat + docker stop $(docker ps -a -q | grep -v $(docker-compose ps -q kurento)) # Kurento 서비스를 제외한 다른 모든 컨테이너 중지 + docker rm $(docker ps --filter 'status=exited' -a -q) # 종료된(exited) 상태의 모든 컨테이너 삭제 + docker-compose up -d + docker image prune -a -f + + - name: Deploy to Instance + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + username: ec2-user + key: ${{ secrets.PRIVATE_KEY }} + + script: | + docker pull ${{ secrets.DOCKER_USERNAME }}/chat + docker stop $(docker ps -a -q | grep -v $(docker-compose ps -q kurento)) # Kurento 서비스를 제외한 다른 모든 컨테이너 중지 + docker rm $(docker ps --filter 'status=exited' -a -q) # 종료된(exited) 상태의 모든 컨테이너 삭제 + docker-compose up -d + docker image prune -a -f diff --git a/src/main/java/com/example/VideoChatting/config/SpringConfig.java b/src/main/java/com/example/VideoChatting/config/SpringConfig.java index 453ba34..b276651 100644 --- a/src/main/java/com/example/VideoChatting/config/SpringConfig.java +++ b/src/main/java/com/example/VideoChatting/config/SpringConfig.java @@ -16,9 +16,11 @@ public void registerStompEndpoints(StompEndpointRegistry registry) { // stomp 접속 주소 url => /ws-stomp registry.addEndpoint("/ws-stomp") // 연결될 엔드포인트 .setAllowedOriginPatterns("https://everyoneyard.shop/") // 모든 도메인에서 접근 허용 (* 대신 특정 도메인을 지정할 수도 있습니다) + .setAllowedOriginPatterns("*") .setHandshakeHandler(new DefaultHandshakeHandler()) .addInterceptors(new HttpSessionHandshakeInterceptor()) .withSockJS(); // SocketJS 를 연결한다는 설정 + } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { diff --git a/src/main/java/com/example/VideoChatting/config/SslConfig.java b/src/main/java/com/example/VideoChatting/config/SslConfig.java index 4e8a6da..7fea146 100644 --- a/src/main/java/com/example/VideoChatting/config/SslConfig.java +++ b/src/main/java/com/example/VideoChatting/config/SslConfig.java @@ -1,46 +1,46 @@ -//package com.example.VideoChatting.config; -// -//import org.apache.catalina.Context; -//import org.apache.catalina.connector.Connector; -//import org.apache.tomcat.util.descriptor.web.SecurityCollection; -//import org.apache.tomcat.util.descriptor.web.SecurityConstraint; -//import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; -//import org.springframework.boot.web.servlet.server.ServletWebServerFactory; -//import org.springframework.context.annotation.Bean; -//import org.springframework.context.annotation.Configuration; -// -//@Configuration -//public class SslConfig { -// -// @Bean -// public ServletWebServerFactory servletContainer() { -// CustomTomcatServletWebServerFactory tomcat = new CustomTomcatServletWebServerFactory(); -// -// // Add HTTP to HTTPS redirect : http 로 요청이 들어오면 https 로 리다이렉트 -// tomcat.addAdditionalTomcatConnectors(httpToHttpsRedirectConnector()); -// -// return tomcat; -// } -// -// static class CustomTomcatServletWebServerFactory extends TomcatServletWebServerFactory { -// @Override -// protected void postProcessContext(Context context) { -// SecurityConstraint securityConstraint = new SecurityConstraint(); -// securityConstraint.setUserConstraint("CONFIDENTIAL"); -// SecurityCollection collection = new SecurityCollection(); -// collection.addPattern("/*"); -// securityConstraint.addCollection(collection); -// context.addConstraint(securityConstraint); -// } -// } -// -// private Connector httpToHttpsRedirectConnector() { -// Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL); -// connector.setScheme("http"); -// connector.setPort(8080); -// connector.setSecure(false); -// connector.setRedirectPort(8443); -// return connector; -// } -// -//} \ No newline at end of file +package com.example.VideoChatting.config; + +import org.apache.catalina.Context; +import org.apache.catalina.connector.Connector; +import org.apache.tomcat.util.descriptor.web.SecurityCollection; +import org.apache.tomcat.util.descriptor.web.SecurityConstraint; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +import org.springframework.boot.web.servlet.server.ServletWebServerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SslConfig { + + @Bean + public ServletWebServerFactory servletContainer() { + CustomTomcatServletWebServerFactory tomcat = new CustomTomcatServletWebServerFactory(); + + // Add HTTP to HTTPS redirect : http 로 요청이 들어오면 https 로 리다이렉트 + tomcat.addAdditionalTomcatConnectors(httpToHttpsRedirectConnector()); + + return tomcat; + } + + static class CustomTomcatServletWebServerFactory extends TomcatServletWebServerFactory { + @Override + protected void postProcessContext(Context context) { + SecurityConstraint securityConstraint = new SecurityConstraint(); + securityConstraint.setUserConstraint("CONFIDENTIAL"); + SecurityCollection collection = new SecurityCollection(); + collection.addPattern("/*"); + securityConstraint.addCollection(collection); + context.addConstraint(securityConstraint); + } + } + + private Connector httpToHttpsRedirectConnector() { + Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL); + connector.setScheme("http"); + connector.setPort(8080); + connector.setSecure(false); + connector.setRedirectPort(8443); + return connector; + } + +} \ No newline at end of file diff --git a/src/main/resources/templates/roomlist.html b/src/main/resources/templates/roomlist.html index 1a7ed03..c04a778 100644 --- a/src/main/resources/templates/roomlist.html +++ b/src/main/resources/templates/roomlist.html @@ -141,10 +141,10 @@ if($("#maxUserCnt").val() <= 1){ alert("채팅은 최소 2명 이상!!"); return false; - // }else if ($("#maxUserCnt").val() > 100) { - // alert("100명 이상은 서버가 못 버텨요ㅠ.ㅠ"); - // return false; - // } + }else if ($("#maxUserCnt").val() > 10000) { + alert("10000명 이상은 서버가 못 버텨요ㅠ.ㅠ"); + return false; + } } // 채팅 타입 필수 @@ -492,14 +492,14 @@
[[${room.roomName}]] - [[${room.roomName}]] -
- [[${room.userCount}]]/[[${room.maxUserCnt}]] -
-

-

- + [[${room.roomName}]] +
+ [[${room.userCount}]]/[[${room.maxUserCnt}]] +
+

+

+ @@ -551,7 +551,7 @@
@@ -682,18 +682,18 @@
-
- -
-
- -
+
+
- + + \ No newline at end of file