use of io.jpom.system.ServerExtConfigBean in project Jpom by dromara.
the class IndexControl method checkSystem.
/**
* @return json
* @author Hotstrip
* <p>
* check if need to init system
* @api {get} check-system 检查是否需要初始化系统
* @apiGroup index
* @apiUse defResultJson
* @apiSuccess {String} routerBase 二级地址
* @apiSuccess {String} name 系统名称
* @apiSuccess {String} subTitle 主页面副标题
* @apiSuccess {String} loginTitle 登录也标题
* @apiSuccess {String} disabledGuide 是否禁用引导
* @apiSuccess (222) {Object} data 系统还没有超级管理员需要初始化
*/
@NotLogin
@RequestMapping(value = "check-system", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public String checkSystem() {
JSONObject data = new JSONObject();
data.put("routerBase", UrlRedirectUtil.getHeaderProxyPath(getRequest(), BaseJpomInterceptor.PROXY_PATH));
//
ServerExtConfigBean instance = ServerExtConfigBean.getInstance();
data.put("name", instance.getName());
data.put("subTitle", instance.getSubTitle());
data.put("loginTitle", instance.getLoginTitle());
data.put("disabledGuide", instance.getDisabledGuide());
if (userService.canUse()) {
return JsonMessage.getString(200, "success", data);
}
return JsonMessage.getString(222, "需要初始化系统", data);
}
use of io.jpom.system.ServerExtConfigBean in project Jpom by dromara.
the class IndexControl method logoImage.
/**
* logo 图片
*
* @api {get} logo_image logo 图片
* @apiGroup index
* @apiSuccess {Object} BODY image
*/
@RequestMapping(value = "logo_image", method = RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE)
@NotLogin
public void logoImage(HttpServletResponse response) throws IOException {
ServerExtConfigBean instance = ServerExtConfigBean.getInstance();
String logoFile = instance.getLogoFile();
if (StrUtil.isNotEmpty(logoFile)) {
if (Validator.isMatchRegex(RegexPool.URL_HTTP, logoFile)) {
// 重定向
response.sendRedirect(logoFile);
return;
}
File file = FileUtil.file(logoFile);
if (FileUtil.isFile(file)) {
String type = FileTypeUtil.getType(file);
if (StrUtil.equalsAnyIgnoreCase(type, "jpg", "png", "gif")) {
ServletUtil.write(response, file);
return;
}
}
}
// 默认logo
InputStream inputStream = ResourceUtil.getStream("classpath:/logo/jpom.png");
ServletUtil.write(response, inputStream, MediaType.IMAGE_PNG_VALUE);
}
use of io.jpom.system.ServerExtConfigBean in project Jpom by dromara.
the class InitDb method init.
@PreLoadMethod(value = Integer.MIN_VALUE)
private static void init() {
//
DbConfig instance = DbConfig.getInstance();
ServerExtConfigBean serverExtConfigBean = ServerExtConfigBean.getInstance();
DbExtConfig dbExtConfig = SpringUtil.getBean(DbExtConfig.class);
//
Setting setting = new Setting();
String dbUrl = instance.getDbUrl();
setting.set("url", dbUrl);
setting.set("user", dbExtConfig.getUserName());
setting.set("pass", dbExtConfig.getUserPwd());
// 配置连接池大小
setting.set("maxActive", dbExtConfig.getMaxActive() + "");
setting.set("initialSize", dbExtConfig.getInitialSize() + "");
setting.set("maxWait", dbExtConfig.getMaxWait() + "");
setting.set("minIdle", dbExtConfig.getMinIdle() + "");
// 调试模式显示sql 信息
if (dbExtConfig.getShowSql()) {
setting.set(SqlLog.KEY_SHOW_SQL, "true");
/*
@author Hotstrip
sql log only show when it's needed,
if you want to check init sql,
set the [sqlLevel] from [DEBUG] to [INFO]
*/
setting.set(SqlLog.KEY_SQL_LEVEL, "DEBUG");
setting.set(SqlLog.KEY_SHOW_PARAMS, "true");
}
Console.log("start load h2 db");
String sqlFileNow = StrUtil.EMPTY;
try {
// 创建连接
DSFactory dsFactory = DSFactory.create(setting);
// 先执行恢复数据
instance.executeRecoverDbSql(dsFactory);
/*
@author Hotstrip
add another sql init file, if there are more sql file,
please add it with same way
*/
PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = pathMatchingResourcePatternResolver.getResources("classpath:/sql/*.sql");
// 加载 sql 变更记录,避免重复执行
Set<String> executeSqlLog = instance.loadExecuteSqlLog();
// 过滤 temp sql
List<Resource> resourcesList = Arrays.stream(resources).sorted((o1, o2) -> StrUtil.compare(o1.getFilename(), o2.getFilename(), true)).filter(resource -> !StrUtil.containsIgnoreCase(resource.getFilename(), "temp")).collect(Collectors.toList());
// 遍历
for (Resource resource : resourcesList) {
try (InputStream inputStream = resource.getInputStream()) {
String sql = IoUtil.read(inputStream, CharsetUtil.CHARSET_UTF_8);
String sha1 = SecureUtil.sha1(sql);
if (executeSqlLog.contains(sha1)) {
// 已经执行过啦,不再执行
continue;
}
sqlFileNow = resource.getFilename();
int rows = Db.use(dsFactory.getDataSource()).execute(sql);
DefaultSystemLog.getLog().info("exec init SQL file: {} complete, and affected rows is: {}", sqlFileNow, rows);
executeSqlLog.add(sha1);
} catch (IOException ignored) {
}
}
instance.saveExecuteSqlLog(executeSqlLog);
GlobalDSFactory.set(dsFactory);
//
} catch (Exception e) {
DefaultSystemLog.getLog().error("初始化数据库失败 {}", sqlFileNow, e);
System.exit(0);
return;
}
instance.initOk();
// json load to db
InitDb.loadJsonToDb();
Console.log("h2 db Successfully loaded, url is 【{}】", dbUrl);
if (JpomManifest.getInstance().isDebug()) {
//
} else {
if (serverExtConfigBean.isH2ConsoleEnabled() && StrUtil.equals(dbExtConfig.getUserName(), DbConfig.DEFAULT_USER_OR_AUTHORIZATION) && StrUtil.equals(dbExtConfig.getUserPwd(), DbConfig.DEFAULT_USER_OR_AUTHORIZATION)) {
Console.error("【安全警告】数据库账号密码使用默认的情况下不建议开启 h2 数据 web 控制台");
System.exit(-2);
}
}
}
use of io.jpom.system.ServerExtConfigBean in project Jpom by dromara.
the class ApplicationStartTest method testServerExtConfigBean.
@Test
public void testServerExtConfigBean() {
ServerExtConfigBean serverExtConfigBean = SpringUtil.getBean(ServerExtConfigBean.class);
System.out.println(serverExtConfigBean);
}
Aggregations