feat: Initial commit

This commit is contained in:
2026-07-27 13:47:24 +09:00
commit 27432cbbfd
20 changed files with 1840 additions and 0 deletions
@@ -0,0 +1,13 @@
package net.jwsi.jcms_vpp;
import net.jwsi.jcms.JcmsCmsApp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;
@Import({JcmsCmsApp.class})
@SpringBootApplication
public class JcmsVppApplication {
public static void main(String[] args) {
SpringApplication.run(JcmsVppApplication.class, args);
}
}
@@ -0,0 +1,36 @@
package net.jwsi.jcms_vpp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.jwsi.jcms.cms.board.arti.BodArti;
import net.jwsi.jcms.cms.board.arti.BodArtiService;
import net.jwsi.jcms.exception.JsonDataException;
import net.jwsi.jcms.utils.HttpUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Map;
@Slf4j
@Controller
@RequiredArgsConstructor
public class MainController {
final private String path = "system/";
final private String root = "/"+path;
@Value("${jcms.manager-path:system}")
private String rootPath;
private final BodArtiService bodArtiService;
@GetMapping("/")
public String root() {
return "redirect:/"+rootPath+"/main";
}
@GetMapping("/${jcms.manager-path:system}/main")
public String list() {
return path + "main";
}
@PostMapping("/${jcms.manager-path:system}/main/bordArtList.json")
@ResponseBody
public Map<String, Object> listData(BodArti srch) throws JsonDataException {
return HttpUtil.responseList(bodArtiService.selectList(srch));
}
}
+53
View File
@@ -0,0 +1,53 @@
spring:
config:
activate:
on-profile: dev
jpa:
open-in-view: true
show-sql: true
hibernate:
ddl-auto: none
format_sql: true
use_sql_comments: true
datasource:
jcms-db:
driver-class-name: org.mariadb.jdbc.Driver
jdbc-url: jdbc:mariadb://localhost:3306/jcmsdb
username: jcms
password: jcms3593
server:
port: 8080
tomcat:
native: false
servlet:
session:
timeout: 600
jcms:
lib-minify: false
upload:
url: /util/files/
path: /jw/jcms/upload/temp/
system-url: /system/util/
system-path: /jw/jcms/upload/
file-path: /jw/jcms/upload/files/
image-path: /jw/jcms/upload/images/
logging:
level:
root: info
web: debug
net.jwsi: debug
org.apache: info
org.hibernate: info
file:
path: /jw/jcms/logs
name: /jw/jcms/logs/logs.log
logback:
rollingpolicy:
file-name-pattern: /jw/jcms/logs/logs-%d{yyyy-MM-dd}.%i.log
max-file-size: 100MB
total-size-cap: 1GB
max-history: 5
clean-history-on-start: false
+47
View File
@@ -0,0 +1,47 @@
server:
port: 8080
servlet:
session:
timeout: 600
spring:
jpa:
open-in-view: false
datasource:
jcms-db:
driver-class-name: org.mariadb.jdbc.Driver
jdbc-url: jdbc:mariadb://localhost:33068/jcms
username: jcms
password: ENC(nqt7VLhtxqwiJcQQw9ncNg==)
jpa:
entity-packages: net.jwsi.jcms
show-sql: false
hibernate:
ddl-auto: none
format_sql: false
use_sql_comments: false
jcms:
lib-minify: true # css, js 파일 압축 여부
upload:
url: /util/files/
path: /jw/jcms/upload/temp/
system-url: /system/util/
system-path: /jw/jcms/upload/
file-path: /jw/jcms/upload/files/
image-path: /jw/jcms/upload/images/
logging:
level:
root: warn
web: warn
net.jwsi: info
org.apache: warn # 변경시 오류 유발
org.hibernate: warn # 변경시 오류 유발
file:
path: /jw/logs
name: /jw/logs/logs.log
logback:
rollingpolicy:
file-name-pattern: /jw/logs/logs-%d{yyyy-MM-dd}.%i.log
max-file-size: 100MB
total-size-cap: 1GB
max-history: 30
clean-history-on-start: false
+38
View File
@@ -0,0 +1,38 @@
spring:
profiles:
active: prod
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
jwt:
# 50? ?? ??? : https://1password.com/ko/password-generator/
secret-key: JQgRklFZ9cD0fhg7hQsz6FU815gvqrye9ztvQUpgVdQNr6mcVKG7sKQQi2P
jasypt:
encryptor:
bean: jasyptEncryptor
jcms:
permitted-pattern: /, /util/** , /error/**, /login/**, /public/**
manager-path: cms
attr:
main-url: /cms/main
new-user-st: 9 # 1: ??, 9:????
cms-name: VPP
cms-title: VPP
cms-bg-color: '#499'
cms-image-url: /public/images/logo_jcms3.png
copyright: Copyright 2026 ??????????? Inc.
authenticated-patten: /cms/**, /system/**, /api/**
pass-url: /cms/main
public-url: ''
remember-me:
enabled: true
days: 30
api:
path: /api
key:
prefix: ak_
header-name: X-API-KEY
@@ -0,0 +1,47 @@
<!DOCTYPE html>
<html xmlns:th="http://thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/cmsLayout}">
<body>
<section layout:fragment="Content">
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-12">
<div id="board1"></div>
</div>
<div class="col-md-6 col-sm-6 col-xs-12">
<div id="board2"></div>
</div>
<div class="col-12 mt-3">
<div class="box box-info">
<div class="box-header">
<h3 class="box-title"><i class='bi bi-caret-right-fill' style='font-size:16px;'></i>&nbsp;&nbsp;사용자 접속자 통계</h3>
<div class="box-body no-padding">
<div class="box-tools pull-right">
<a th:href="@{/{rPath}/siteStats/list.mng(rPath=${managerPath})}">
<button type="button" class="btn btn-sm btn-primary" data-toggle="tooltip" title="더보기">
더보기
</button>
</a>
</div>
<div class="box-body chart-responsive">
<div id="line-chart" class="chart" style="width:100%; height:300px;"></div>
</div>
</div>
</div>
<div class="box-body no-padding">
</div>
</div>
</div>
</div>
<script th:src="@{/public/lib/js/baseComponent.js}"></script>
<script th:inline="none">
$(document).ready(function() {
newBoardPanel($('#board1'), '공지사항', {boardId: '58b25b57a61c'});
newBoardPanel($('#board2'), '자유게시판', {boardId: 'a961bb48-e0a7-4'});
});
</script>
</section>
</body>
</html>
@@ -0,0 +1,13 @@
package net.jwsi.jcms_vpp;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class JcmsVppApplicationTests {
@Test
void contextLoads() {
}
}