From 2e9806057365aae319edec624e2dc5610da0ea4a Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Wed, 2 Jul 2025 23:35:46 +0800 Subject: [PATCH 01/31] =?UTF-8?q?:rocket:=20=E5=8D=87=E7=BA=A7=20orion-kit?= =?UTF-8?q?=20=E7=89=88=E6=9C=AC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/visor/common/constant/Const.java | 3 --- .../{HttpHeaderConst.java => CustomHeaderConst.java} | 6 ++---- orion-visor-dependencies/pom.xml | 2 +- .../module/infra/controller/UserAggregateController.java | 7 +++---- .../infra/define/cache/PreferenceCacheKeyDefine.java | 2 +- .../dromara/visor/module/terminal/utils/SftpFileUtils.java | 2 +- 6 files changed, 8 insertions(+), 14 deletions(-) rename orion-visor-common/src/main/java/org/dromara/visor/common/constant/{HttpHeaderConst.java => CustomHeaderConst.java} (87%) diff --git a/orion-visor-common/src/main/java/org/dromara/visor/common/constant/Const.java b/orion-visor-common/src/main/java/org/dromara/visor/common/constant/Const.java index 1fcd64f8..e0b5ba56 100644 --- a/orion-visor-common/src/main/java/org/dromara/visor/common/constant/Const.java +++ b/orion-visor-common/src/main/java/org/dromara/visor/common/constant/Const.java @@ -51,9 +51,6 @@ public interface Const extends cn.orionsec.kit.lang.constant.Const, FieldConst, String SYSTEM_USERNAME = "system"; - // FIXME KIT - String ADMINISTRATOR = "Administrator"; - Long ALL_HOST_ID = -1L; int BATCH_COUNT = 500; diff --git a/orion-visor-common/src/main/java/org/dromara/visor/common/constant/HttpHeaderConst.java b/orion-visor-common/src/main/java/org/dromara/visor/common/constant/CustomHeaderConst.java similarity index 87% rename from orion-visor-common/src/main/java/org/dromara/visor/common/constant/HttpHeaderConst.java rename to orion-visor-common/src/main/java/org/dromara/visor/common/constant/CustomHeaderConst.java index 3e87a5ea..3f1017cc 100644 --- a/orion-visor-common/src/main/java/org/dromara/visor/common/constant/HttpHeaderConst.java +++ b/orion-visor-common/src/main/java/org/dromara/visor/common/constant/CustomHeaderConst.java @@ -22,16 +22,14 @@ */ package org.dromara.visor.common.constant; -import cn.orionsec.kit.lang.constant.StandardHttpHeader; - /** - * http 请求头 + * 自定义请求头 * * @author Jiahang Li * @version 1.0.0 * @since 2025/7/1 1:02 */ -public interface HttpHeaderConst extends StandardHttpHeader { +public interface CustomHeaderConst { String APP_VERSION = "X-App-Version"; diff --git a/orion-visor-dependencies/pom.xml b/orion-visor-dependencies/pom.xml index 7dc53199..96526559 100644 --- a/orion-visor-dependencies/pom.xml +++ b/orion-visor-dependencies/pom.xml @@ -18,7 +18,7 @@ 2.7.17 2.7.15 1.5.0 - 2.0.1 + 2.0.2 1.9.7 1.18.26 1.6.15 diff --git a/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/controller/UserAggregateController.java b/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/controller/UserAggregateController.java index c43678d2..71dc5b99 100644 --- a/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/controller/UserAggregateController.java +++ b/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/controller/UserAggregateController.java @@ -22,11 +22,12 @@ */ package org.dromara.visor.module.infra.controller; +import cn.orionsec.kit.web.servlet.web.Servlets; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.dromara.visor.common.constant.AppConst; -import org.dromara.visor.common.constant.HttpHeaderConst; +import org.dromara.visor.common.constant.CustomHeaderConst; import org.dromara.visor.framework.log.core.annotation.IgnoreLog; import org.dromara.visor.framework.log.core.enums.IgnoreLogMode; import org.dromara.visor.framework.web.core.annotation.RestWrapper; @@ -71,10 +72,8 @@ public class UserAggregateController { @GetMapping("/user") @Operation(summary = "获取用户权限聚合信息") public UserAggregateVO getUserAggregateInfo(HttpServletResponse response) { - // FIXME KIT // 设置版本号请求头 - response.setHeader(HttpHeaderConst.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaderConst.APP_VERSION); - response.setHeader(HttpHeaderConst.APP_VERSION, AppConst.VERSION); + Servlets.addCustomHeader(response, CustomHeaderConst.APP_VERSION, AppConst.VERSION); // 获取用户信息 return userAggregateService.getUserAggregateInfo(); } diff --git a/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/define/cache/PreferenceCacheKeyDefine.java b/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/define/cache/PreferenceCacheKeyDefine.java index 2075a57d..5f6a1d89 100644 --- a/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/define/cache/PreferenceCacheKeyDefine.java +++ b/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/define/cache/PreferenceCacheKeyDefine.java @@ -39,7 +39,7 @@ import java.util.concurrent.TimeUnit; public interface PreferenceCacheKeyDefine { CacheKeyDefine PREFERENCE = new CacheKeyBuilder() - .key("v1:user:prefer:{}:{}") + .key("user:prefer:{}:{}") .desc("用户偏好 ${userId} ${type}") .type(JSONObject.class) .struct(RedisCacheStruct.STRING) diff --git a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/utils/SftpFileUtils.java b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/utils/SftpFileUtils.java index 8c97c447..2ffe54cb 100644 --- a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/utils/SftpFileUtils.java +++ b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/utils/SftpFileUtils.java @@ -79,7 +79,7 @@ public class SftpFileUtils { SftpFileVO vo = new SftpFileVO(); vo.setName(file.getName()); vo.setPath(file.getPath()); - vo.setSuffix(Files1.getSuffix(file.getName())); + vo.setSuffix(Files1.getFileNameSuffix(file.getName())); vo.setSize(file.getSize()); vo.setPermission(file.getPermission()); vo.setUid(file.getUid()); From 2175a9fb40866b7484b9899e7eae608f323bdb0f Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Wed, 2 Jul 2025 23:43:01 +0800 Subject: [PATCH 02/31] =?UTF-8?q?:hammer:=20=E6=B7=BB=E5=8A=A0=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E6=95=B0=E6=8D=AE=E7=89=88=E6=9C=AC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 2 ++ docker-compose.yml | 2 ++ .../configuration/OrionRedisAutoConfiguration.java | 12 ++++++++++++ .../additional-spring-configuration-metadata.json | 6 ++++++ .../src/main/resources/application-dev.yaml | 2 ++ .../src/main/resources/application-prod.yaml | 2 ++ 6 files changed, 26 insertions(+) diff --git a/.env.example b/.env.example index 5979522a..886ce7a2 100644 --- a/.env.example +++ b/.env.example @@ -15,6 +15,8 @@ MYSQL_ROOT_PASSWORD=Data@123456 REDIS_HOST=redis REDIS_PASSWORD=Data@123456 +REDIS_DATABASE=0 +REDIS_DATA_VERSION=1 GUACD_HOST=guacd GUACD_PORT=4822 diff --git a/docker-compose.yml b/docker-compose.yml index a1f6fd61..24736576 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -27,6 +27,8 @@ services: MYSQL_PASSWORD: ${MYSQL_PASSWORD:-Data@123456} REDIS_HOST: ${REDIS_HOST:-redis} REDIS_PASSWORD: ${REDIS_PASSWORD:-Data@123456} + REDIS_DATABASE: ${REDIS_DATABASE:-0} + REDIS_DATA_VERSION: ${REDIS_DATA_VERSION:-1} GUACD_HOST: ${GUACD_HOST:-guacd} GUACD_PORT: ${GUACD_PORT:-4822} GUACD_DRIVE_PATH: ${GUACD_DRIVE_PATH:-/drive} diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionRedisAutoConfiguration.java b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionRedisAutoConfiguration.java index 96652341..55ca9b83 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionRedisAutoConfiguration.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionRedisAutoConfiguration.java @@ -22,6 +22,7 @@ */ package org.dromara.visor.framework.redis.configuration; +import cn.orionsec.kit.lang.define.cache.key.CacheKeyDefine; import org.dromara.visor.common.constant.AutoConfigureOrderConst; import org.dromara.visor.common.interfaces.Locker; import org.dromara.visor.common.utils.LockerUtils; @@ -31,6 +32,7 @@ import org.dromara.visor.framework.redis.core.utils.RedisUtils; import org.redisson.api.RedissonClient; import org.redisson.config.SingleServerConfig; import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -101,5 +103,15 @@ public class OrionRedisAutoConfiguration { return redisLocker; } + /** + * 设置 redis 数据版本 + * + * @param dataVersion dataVersion + */ + @Value("${spring.redis.data-version}") + public void setDataVersion(String dataVersion) { + CacheKeyDefine.setGlobalPrefix("v" + dataVersion + ":"); + } + } diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 51558866..6164f65c 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -25,6 +25,12 @@ "description": "最小空闲连接数.", "defaultValue": "16" }, + { + "name": "spring.redis.data-version", + "type": "java.lang.String", + "description": "redis 数据版本.", + "defaultValue": "1" + }, { "name": "no.redis", "type": "java.lang.Boolean", diff --git a/orion-visor-launch/src/main/resources/application-dev.yaml b/orion-visor-launch/src/main/resources/application-dev.yaml index 1d3509f1..84d61baa 100644 --- a/orion-visor-launch/src/main/resources/application-dev.yaml +++ b/orion-visor-launch/src/main/resources/application-dev.yaml @@ -13,6 +13,8 @@ spring: host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} password: ${REDIS_PASSWORD:Data@123456} + database: ${REDIS_DATABASE:10} + data-version: ${REDIS_DATA_VERSION:1} redisson: threads: 2 netty-threads: 2 diff --git a/orion-visor-launch/src/main/resources/application-prod.yaml b/orion-visor-launch/src/main/resources/application-prod.yaml index 244f939c..c86b4f11 100644 --- a/orion-visor-launch/src/main/resources/application-prod.yaml +++ b/orion-visor-launch/src/main/resources/application-prod.yaml @@ -24,6 +24,8 @@ spring: host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} password: ${REDIS_PASSWORD:Data@123456} + database: ${REDIS_DATABASE:0} + data-version: ${REDIS_DATA_VERSION:1} redisson: threads: 4 netty-threads: 4 From 0b4e42ee89387babd507b07a9242c2f463272f05 Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Wed, 2 Jul 2025 23:50:27 +0800 Subject: [PATCH 03/31] =?UTF-8?q?:hammer:=20=E4=BF=AE=E6=94=B9=E6=97=A0?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=85=8D=E7=BD=AE.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orion-visor-spring-boot-starter-redis/pom.xml | 2 +- ...figuration.java => OrionMockRedisAutoConfiguration.java} | 6 +++--- .../META-INF/additional-spring-configuration-metadata.json | 4 ++-- ...ngframework.boot.autoconfigure.AutoConfiguration.imports | 2 +- orion-visor-launch/src/main/resources/application-dev.yaml | 4 +--- 5 files changed, 8 insertions(+), 10 deletions(-) rename orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/{OrionNoRedisAutoConfiguration.java => OrionMockRedisAutoConfiguration.java} (95%) diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-redis/pom.xml b/orion-visor-framework/orion-visor-spring-boot-starter-redis/pom.xml index a33a408a..10fa2ffc 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-redis/pom.xml +++ b/orion-visor-framework/orion-visor-spring-boot-starter-redis/pom.xml @@ -37,7 +37,7 @@ netty-all - + com.github.fppt jedis-mock diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionNoRedisAutoConfiguration.java b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionMockRedisAutoConfiguration.java similarity index 95% rename from orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionNoRedisAutoConfiguration.java rename to orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionMockRedisAutoConfiguration.java index c5d2303b..be3188ec 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionNoRedisAutoConfiguration.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/java/org/dromara/visor/framework/redis/configuration/OrionMockRedisAutoConfiguration.java @@ -38,17 +38,17 @@ import java.net.InetAddress; import java.util.function.Supplier; /** - * noRedis 配置 + * MockRedis * 仅用于本地调试无 redis 的情况 * * @author Jiahang Li * @version 1.0.0 * @since 2024/12/26 10:02 */ -@ConditionalOnProperty(value = "no.redis", havingValue = "true") +@ConditionalOnProperty(value = "spring.redis.mock", havingValue = "true") @AutoConfiguration @AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_REDIS - 10) -public class OrionNoRedisAutoConfiguration { +public class OrionMockRedisAutoConfiguration { /** * @return mocked redis server diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 6164f65c..c4acc2b4 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -32,9 +32,9 @@ "defaultValue": "1" }, { - "name": "no.redis", + "name": "spring.redis.mock", "type": "java.lang.Boolean", - "description": "是否无 redis.", + "description": "是否使用 mock redis, 一般用于无 redis 调试时使用.", "defaultValue": false } ] diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index cccc4c8f..62154a02 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/orion-visor-framework/orion-visor-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,3 +1,3 @@ -org.dromara.visor.framework.redis.configuration.OrionNoRedisAutoConfiguration +org.dromara.visor.framework.redis.configuration.OrionMockRedisAutoConfiguration org.dromara.visor.framework.redis.configuration.OrionRedisAutoConfiguration org.dromara.visor.framework.redis.configuration.OrionCacheAutoConfiguration \ No newline at end of file diff --git a/orion-visor-launch/src/main/resources/application-dev.yaml b/orion-visor-launch/src/main/resources/application-dev.yaml index 84d61baa..2c59d903 100644 --- a/orion-visor-launch/src/main/resources/application-dev.yaml +++ b/orion-visor-launch/src/main/resources/application-dev.yaml @@ -15,6 +15,7 @@ spring: password: ${REDIS_PASSWORD:Data@123456} database: ${REDIS_DATABASE:10} data-version: ${REDIS_DATA_VERSION:1} + mock: false redisson: threads: 2 netty-threads: 2 @@ -42,6 +43,3 @@ mybatis-plus: configuration: # 日志打印 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - -no: - redis: false From 6fa2d65e1883c324675ed8861748d7ed363c8992 Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Thu, 3 Jul 2025 00:01:41 +0800 Subject: [PATCH 04/31] =?UTF-8?q?:hammer:=20=E4=BC=98=E5=8C=96=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=8A=A0=E8=BD=BD=E9=80=BB=E8=BE=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/store/modules/user/index.ts | 2 +- .../src/views/asset/grant/index.vue | 4 +- .../src/views/asset/host-identity/index.vue | 4 +- .../host-list/components/host-card-list.vue | 37 +++++++++++++------ .../asset/host-list/components/host-table.vue | 1 - .../src/views/asset/host-list/index.vue | 4 +- .../src/views/exec/batch-upload/index.vue | 4 +- .../src/views/exec/exec-command/index.vue | 4 +- 8 files changed, 41 insertions(+), 19 deletions(-) diff --git a/orion-visor-ui/src/store/modules/user/index.ts b/orion-visor-ui/src/store/modules/user/index.ts index 8db1ebaf..0a39d838 100644 --- a/orion-visor-ui/src/store/modules/user/index.ts +++ b/orion-visor-ui/src/store/modules/user/index.ts @@ -30,7 +30,7 @@ const checkForVersionUpdate = (serverVersion: string) => { return; } // 提示用户更新 - if (window.confirm('检测到新版本, 是否刷新页面以获取最新内容?')) { + if (window.confirm('检测到新版本, 请强制刷新页面以获取最新内容!')) { window.location.reload(); } // 更新 localStorage 记录 diff --git a/orion-visor-ui/src/views/asset/grant/index.vue b/orion-visor-ui/src/views/asset/grant/index.vue index bfef9767..bf203965 100644 --- a/orion-visor-ui/src/views/asset/grant/index.vue +++ b/orion-visor-ui/src/views/asset/grant/index.vue @@ -1,5 +1,5 @@