Search in sources :

Example 6 with PreLoadMethod

use of cn.jiangzeyin.common.PreLoadMethod in project Jpom by dromara.

the class CheckAuthorize method repairScriptPath.

/**
 * 恢复脚本模板路径
 */
@PreLoadMethod
private static void repairScriptPath() {
    if (!JpomManifest.getInstance().isDebug()) {
        if (StrUtil.compareVersion(JpomManifest.getInstance().getVersion(), "2.4.2") < 0) {
            return;
        }
    }
    File oldDir = FileUtil.file(ExtConfigBean.getInstance().getPath(), ConfigBean.SCRIPT_DIRECTORY);
    if (!oldDir.exists()) {
        return;
    }
    File newDir = FileUtil.file(ConfigBean.getInstance().getDataPath(), ConfigBean.SCRIPT_DIRECTORY);
    FileUtil.move(oldDir, newDir, true);
}
Also used : File(java.io.File) PreLoadMethod(cn.jiangzeyin.common.PreLoadMethod)

Example 7 with PreLoadMethod

use of cn.jiangzeyin.common.PreLoadMethod in project Jpom by dromara.

the class CheckAuthorizeToken method check.

@PreLoadMethod
private static void check() {
    String authorizeToken = ServerExtConfigBean.getInstance().getAuthorizeToken();
    if (StrUtil.isEmpty(authorizeToken)) {
        return;
    }
    if (authorizeToken.length() < 6) {
        DefaultSystemLog.getLog().error("配置的授权token长度小于六位不生效", new JpomRuntimeException("配置的授权token长度小于六位不生效"));
        System.exit(-1);
    }
    int strength = CheckPassword.checkPasswordStrength(authorizeToken);
    if (strength != 2) {
        DefaultSystemLog.getLog().error("配置的授权token 需要包含数字,字母,符号的组合", new JpomRuntimeException("配置的授权token 需要包含数字,字母,符号的组合"));
        System.exit(-1);
    }
}
Also used : JpomRuntimeException(io.jpom.system.JpomRuntimeException) PreLoadMethod(cn.jiangzeyin.common.PreLoadMethod)

Example 8 with PreLoadMethod

use of cn.jiangzeyin.common.PreLoadMethod 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 9 with PreLoadMethod

use of cn.jiangzeyin.common.PreLoadMethod in project Jpom by dromara.

the class CheckMonitor method init.

@PreLoadMethod
private static void init() {
    // 缓存检测调度
    CronUtils.upsert("cache_manger_schedule", "0 0/10 * * * ?", () -> {
        BuildUtil.reloadCacheSize();
        ConfigBean.getInstance().dataSize();
    });
    // 开启版本检测调度
    CronUtils.upsert("system_monitor", "0 0 0,12 * * ?", () -> {
        try {
            BackupInfoService backupInfoService = SpringUtil.getBean(BackupInfoService.class);
            backupInfoService.checkAutoBackup();
            // 
            RemoteVersion.loadRemoteInfo();
        } catch (Exception e) {
            DefaultSystemLog.getLog().error("系统调度执行出现错误", e);
        }
    });
    // 拉取 脚本模版日志
    CronUtils.upsert("pull_script_log", "0 0/1 * * * ?", () -> {
        NodeService nodeService = SpringUtil.getBean(NodeService.class);
        NodeScriptServer nodeScriptServer = SpringUtil.getBean(NodeScriptServer.class);
        List<String> nodeIds = nodeScriptServer.hasScriptNode();
        if (nodeIds == null) {
            return;
        }
        for (String nodeId : nodeIds) {
            NodeModel nodeModel = nodeService.getByKey(nodeId);
            if (nodeModel == null) {
                continue;
            }
            ThreadUtil.execute(() -> CheckMonitor.pullScriptLogItem(nodeModel));
        }
    });
    // 异步加载
    CheckMonitor.asyncLoad();
}
Also used : NodeModel(io.jpom.model.data.NodeModel) BackupInfoService(io.jpom.service.dblog.BackupInfoService) NodeScriptServer(io.jpom.service.node.script.NodeScriptServer) NodeService(io.jpom.service.node.NodeService) PreLoadMethod(cn.jiangzeyin.common.PreLoadMethod)

Aggregations

PreLoadMethod (cn.jiangzeyin.common.PreLoadMethod)9 File (java.io.File)4 DefaultSystemLog (cn.jiangzeyin.common.DefaultSystemLog)2 PreLoadClass (cn.jiangzeyin.common.PreLoadClass)2 JSONObject (com.alibaba.fastjson.JSONObject)2 JpomManifest (io.jpom.common.JpomManifest)2 Arrays (java.util.Arrays)2 CollUtil (cn.hutool.core.collection.CollUtil)1 ExceptionUtil (cn.hutool.core.exceptions.ExceptionUtil)1 FileUtil (cn.hutool.core.io.FileUtil)1 IoUtil (cn.hutool.core.io.IoUtil)1 Console (cn.hutool.core.lang.Console)1 CharsetUtil (cn.hutool.core.util.CharsetUtil)1 ObjectUtil (cn.hutool.core.util.ObjectUtil)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