Search in sources :

Example 1 with ServerExtConfigBean

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);
}
Also used : ServerExtConfigBean(io.jpom.system.ServerExtConfigBean) JSONObject(com.alibaba.fastjson.JSONObject) NotLogin(io.jpom.common.interceptor.NotLogin) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 2 with ServerExtConfigBean

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);
}
Also used : ServerExtConfigBean(io.jpom.system.ServerExtConfigBean) InputStream(java.io.InputStream) File(java.io.File) NotLogin(io.jpom.common.interceptor.NotLogin) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 3 with ServerExtConfigBean

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);
        }
    }
}
Also used : SignalHandler(sun.misc.SignalHandler) SecureUtil(cn.hutool.crypto.SecureUtil) Arrays(java.util.Arrays) DSFactory(cn.hutool.db.ds.DSFactory) DefaultSystemLog(cn.jiangzeyin.common.DefaultSystemLog) DbExtConfig(io.jpom.system.extconf.DbExtConfig) InitializingBean(org.springframework.beans.factory.InitializingBean) PathMatchingResourcePatternResolver(org.springframework.core.io.support.PathMatchingResourcePatternResolver) SQLException(java.sql.SQLException) PreLoadMethod(cn.jiangzeyin.common.PreLoadMethod) Map(java.util.Map) GlobalDSFactory(cn.hutool.db.ds.GlobalDSFactory) Signal(sun.misc.Signal) Setting(cn.hutool.setting.Setting) BaseGroupService(io.jpom.service.h2db.BaseGroupService) Resource(org.springframework.core.io.Resource) IoUtil(cn.hutool.core.io.IoUtil) DbConfig(io.jpom.system.db.DbConfig) WorkspaceService(io.jpom.service.system.WorkspaceService) Set(java.util.Set) IOException(java.io.IOException) Console(cn.hutool.core.lang.Console) BaseNodeService(io.jpom.service.h2db.BaseNodeService) SpringUtil(cn.jiangzeyin.common.spring.SpringUtil) Collectors(java.util.stream.Collectors) Db(cn.hutool.db.Db) SqlLog(cn.hutool.db.sql.SqlLog) PreLoadClass(cn.jiangzeyin.common.PreLoadClass) Configuration(org.springframework.context.annotation.Configuration) StrUtil(cn.hutool.core.util.StrUtil) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) JpomManifest(io.jpom.common.JpomManifest) DisposableBean(org.springframework.beans.factory.DisposableBean) CharsetUtil(cn.hutool.core.util.CharsetUtil) UserModel(io.jpom.model.data.UserModel) BaseServerController(io.jpom.common.BaseServerController) ServerExtConfigBean(io.jpom.system.ServerExtConfigBean) InputStream(java.io.InputStream) ServerExtConfigBean(io.jpom.system.ServerExtConfigBean) InputStream(java.io.InputStream) Setting(cn.hutool.setting.Setting) Resource(org.springframework.core.io.Resource) DSFactory(cn.hutool.db.ds.DSFactory) GlobalDSFactory(cn.hutool.db.ds.GlobalDSFactory) IOException(java.io.IOException) SQLException(java.sql.SQLException) IOException(java.io.IOException) DbExtConfig(io.jpom.system.extconf.DbExtConfig) DbConfig(io.jpom.system.db.DbConfig) PathMatchingResourcePatternResolver(org.springframework.core.io.support.PathMatchingResourcePatternResolver) PreLoadMethod(cn.jiangzeyin.common.PreLoadMethod)

Example 4 with ServerExtConfigBean

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);
}
Also used : ServerExtConfigBean(io.jpom.system.ServerExtConfigBean) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Aggregations

ServerExtConfigBean (io.jpom.system.ServerExtConfigBean)4 NotLogin (io.jpom.common.interceptor.NotLogin)2 InputStream (java.io.InputStream)2 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)2 IoUtil (cn.hutool.core.io.IoUtil)1 Console (cn.hutool.core.lang.Console)1 CharsetUtil (cn.hutool.core.util.CharsetUtil)1 StrUtil (cn.hutool.core.util.StrUtil)1 SecureUtil (cn.hutool.crypto.SecureUtil)1 Db (cn.hutool.db.Db)1 DSFactory (cn.hutool.db.ds.DSFactory)1 GlobalDSFactory (cn.hutool.db.ds.GlobalDSFactory)1 SqlLog (cn.hutool.db.sql.SqlLog)1 Setting (cn.hutool.setting.Setting)1 DefaultSystemLog (cn.jiangzeyin.common.DefaultSystemLog)1 PreLoadClass (cn.jiangzeyin.common.PreLoadClass)1 PreLoadMethod (cn.jiangzeyin.common.PreLoadMethod)1 SpringUtil (cn.jiangzeyin.common.spring.SpringUtil)1 JSONObject (com.alibaba.fastjson.JSONObject)1 BaseServerController (io.jpom.common.BaseServerController)1