Skip to content

Commit

Permalink
Merge pull request #93 from LminWoo99/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
LminWoo99 authored Dec 9, 2023
2 parents dfebde2 + 2fed66c commit d119603
Show file tree
Hide file tree
Showing 4 changed files with 145 additions and 143 deletions.
152 changes: 76 additions & 76 deletions .github/workflows/CD.yml
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
92 changes: 46 additions & 46 deletions src/main/java/com/example/VideoChatting/config/SslConfig.java
Original file line number Diff line number Diff line change
@@ -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;
// }
//
//}
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;
}

}
42 changes: 21 additions & 21 deletions src/main/resources/templates/roomlist.html
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

// 채팅 타입 필수
Expand Down Expand Up @@ -492,14 +492,14 @@ <h5 th:if="${user != null}">
<span class="room-lock-icon"><i class="fa fa-lock"></i></span>
<span class="room-name">[[${room.roomName}]]</span>
</a>
<a th:if="${!room.secretCheck}" th:href="@{/chat/room(roomId=${room.roomId})}"
th:roomId="${room.roomId}" onclick="return chkRoomUserCnt(this.getAttribute('roomId'));">[[${room.roomName}]]</a>
<div class="badge bg-primary rounded-pill">
[[${room.userCount}]]/[[${room.maxUserCnt}]]
</div>
<p th:class="room-description" th:data-id="${room.chatType}">
</p>
<button class="btn btn-primary btn-sm" id="configRoom" data-bs-toggle="modal" data-bs-target="#confirmPwdModal" th:data-id="${room.roomId}">채팅방 설정</button>
<a th:if="${!room.secretCheck}" th:href="@{/chat/room(roomId=${room.roomId})}"
th:roomId="${room.roomId}" onclick="return chkRoomUserCnt(this.getAttribute('roomId'));">[[${room.roomName}]]</a>
<div class="badge bg-primary rounded-pill">
[[${room.userCount}]]/[[${room.maxUserCnt}]]
</div>
<p th:class="room-description" th:data-id="${room.chatType}">
</p>
<button class="btn btn-primary btn-sm" id="configRoom" data-bs-toggle="modal" data-bs-target="#confirmPwdModal" th:data-id="${room.roomId}">채팅방 설정</button>
</div>
</li>
</ul>
Expand Down Expand Up @@ -551,7 +551,7 @@ <h5 class="modal-title">채팅방 생성</h5>
<div class="form-check">
<input class="form-check-input" type="radio" name="chatType" id="msgType" value="msgChat">
<label class="form-check-label" for="msgType">
일반 채팅(최대 100명)
일반 채팅(최대 10000명)
</label>
</div>
<div class="form-check">
Expand Down Expand Up @@ -682,18 +682,18 @@ <h5 class="modal-title">채팅방 설정</h5>


</div>
<div class="mb-3">
<button type="button" class="btn btn-primary" onclick="toggleRoomSecret(roomId)">잠금 상태 변경</button>
</div>
<div class="mb-3">
<button type="button" class="btn btn-primary" onclick="delRoom()">방 삭제</button>
</div>
<div class="mb-3">
<button type="button" class="btn btn-primary" onclick="toggleRoomSecret(roomId)">잠금 상태 변경</button>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<div class="mb-3">
<button type="button" class="btn btn-primary" onclick="delRoom()">방 삭제</button>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</body>
</html>

0 comments on commit d119603

Please sign in to comment.