diff --git a/docker/adminer/build.sh b/docker/adminer/build.sh index 6e10de181..5cb800a98 100644 --- a/docker/adminer/build.sh +++ b/docker/adminer/build.sh @@ -1,5 +1,5 @@ #/bin/bash -version=2.3.0 +version=2.3.1 docker build -t orion-visor-adminer:${version} . docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:${version} docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:latest diff --git a/docker/mysql/build.sh b/docker/mysql/build.sh index 0c7db7dac..f5ca4806a 100644 --- a/docker/mysql/build.sh +++ b/docker/mysql/build.sh @@ -1,5 +1,5 @@ #/bin/bash -version=2.3.0 +version=2.3.1 cp -r ../../sql ./sql docker build -t orion-visor-mysql:${version} . rm -rf ./sql diff --git a/docker/push.sh b/docker/push.sh index bb296787b..625b93326 100644 --- a/docker/push.sh +++ b/docker/push.sh @@ -1,5 +1,5 @@ #/bin/bash -version=2.3.0 +version=2.3.1 docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:${version} docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:${version} docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:${version} diff --git a/docker/redis/build.sh b/docker/redis/build.sh index a58ef2549..9ed0c6581 100644 --- a/docker/redis/build.sh +++ b/docker/redis/build.sh @@ -1,5 +1,5 @@ #/bin/bash -version=2.3.0 +version=2.3.1 docker build -t orion-visor-redis:${version} . docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:${version} docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest diff --git a/docker/service/build.sh b/docker/service/build.sh index 6312f1939..0d553c44d 100644 --- a/docker/service/build.sh +++ b/docker/service/build.sh @@ -1,5 +1,5 @@ #/bin/bash -version=2.3.0 +version=2.3.1 mv ../../orion-visor-launch/target/orion-visor-launch.jar ./orion-visor-launch.jar mv ../../orion-visor-ui/dist ./dist docker build --no-cache -t orion-visor-service:${version} . diff --git a/orion-visor-common/src/main/java/org/dromara/visor/common/constant/AppConst.java b/orion-visor-common/src/main/java/org/dromara/visor/common/constant/AppConst.java index 444bd0224..9b6f00426 100644 --- a/orion-visor-common/src/main/java/org/dromara/visor/common/constant/AppConst.java +++ b/orion-visor-common/src/main/java/org/dromara/visor/common/constant/AppConst.java @@ -36,7 +36,7 @@ public interface AppConst extends OrionConst { /** * 同 ${orion.version} 迭代时候需要手动更改 */ - String VERSION = "2.3.0"; + String VERSION = "2.3.1"; /** * 同 ${spring.application.name} diff --git a/orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaEncryptor.java b/orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaDecryptor.java similarity index 86% rename from orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaEncryptor.java rename to orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaDecryptor.java index a0edc757c..a0bec1ae9 100644 --- a/orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaEncryptor.java +++ b/orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaDecryptor.java @@ -23,21 +23,13 @@ package org.dromara.visor.common.interfaces; /** - * rsa 加密器 + * rsa 解密器 * * @author Jiahang Li * @version 1.0.0 * @since 2025/1/5 20:58 */ -public interface RsaEncryptor { - - /** - * 加密 - * - * @param value value - * @return value - */ - String encrypt(String value); +public interface RsaDecryptor { /** * 解密 diff --git a/orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaEncryptUtils.java b/orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaParamDecryptUtils.java similarity index 70% rename from orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaEncryptUtils.java rename to orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaParamDecryptUtils.java index b048b6b24..56b24887e 100644 --- a/orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaEncryptUtils.java +++ b/orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaParamDecryptUtils.java @@ -23,30 +23,20 @@ package org.dromara.visor.common.utils; import cn.orionsec.kit.lang.utils.Exceptions; -import org.dromara.visor.common.interfaces.RsaEncryptor; +import org.dromara.visor.common.interfaces.RsaDecryptor; /** - * rsa 加密工具类 + * rsa 参数解密工具类 * * @author Jiahang Li * @version 1.0.0 * @since 2025/1/5 21:13 */ -public class RsaEncryptUtils { +public class RsaParamDecryptUtils { - private static RsaEncryptor delegate; + private static RsaDecryptor delegate; - private RsaEncryptUtils() { - } - - /** - * 加密 - * - * @param value value - * @return value - */ - public static String encrypt(String value) { - return delegate.encrypt(value); + private RsaParamDecryptUtils() { } /** @@ -59,12 +49,12 @@ public static String decrypt(String value) { return delegate.decrypt(value); } - public static void setDelegate(RsaEncryptor delegate) { - if (RsaEncryptUtils.delegate != null) { + public static void setDelegate(RsaDecryptor delegate) { + if (RsaParamDecryptUtils.delegate != null) { // unmodified throw Exceptions.state(); } - RsaEncryptUtils.delegate = delegate; + RsaParamDecryptUtils.delegate = delegate; } } diff --git a/orion-visor-dependencies/pom.xml b/orion-visor-dependencies/pom.xml index 92f73f8d0..3cedb2b4c 100644 --- a/orion-visor-dependencies/pom.xml +++ b/orion-visor-dependencies/pom.xml @@ -14,7 +14,7 @@ https://github.com/dromara/orion-visor - 2.3.0 + 2.3.1 2.7.17 2.7.15 1.5.0 diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/configuration/OrionEncryptAutoConfiguration.java b/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/configuration/OrionEncryptAutoConfiguration.java index 2157a14b8..f6e942be0 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/configuration/OrionEncryptAutoConfiguration.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/configuration/OrionEncryptAutoConfiguration.java @@ -25,12 +25,12 @@ import org.dromara.visor.common.config.ConfigStore; import org.dromara.visor.common.constant.AutoConfigureOrderConst; import org.dromara.visor.common.interfaces.AesEncryptor; -import org.dromara.visor.common.interfaces.RsaEncryptor; +import org.dromara.visor.common.interfaces.RsaDecryptor; import org.dromara.visor.common.utils.AesEncryptUtils; -import org.dromara.visor.common.utils.RsaEncryptUtils; +import org.dromara.visor.common.utils.RsaParamDecryptUtils; import org.dromara.visor.framework.encrypt.configuration.config.AesEncryptConfig; import org.dromara.visor.framework.encrypt.core.impl.AesEncryptorImpl; -import org.dromara.visor.framework.encrypt.core.impl.RsaEncryptorImpl; +import org.dromara.visor.framework.encrypt.core.impl.RsaDecryptorImpl; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -63,15 +63,15 @@ public AesEncryptor aesEncryptor(AesEncryptConfig config) { /** * @param configStore configStore - * @return rsa 加密器 + * @return rsa 参数解密器 */ @Bean - public RsaEncryptor rsaEncryptor(ConfigStore configStore) { - // 加密器 - RsaEncryptor encryptor = new RsaEncryptorImpl(configStore); + public RsaDecryptor rsaParamDecryptor(ConfigStore configStore) { + // 解密器 + RsaDecryptor decryptor = new RsaDecryptorImpl(configStore); // 设置工具类 - RsaEncryptUtils.setDelegate(encryptor); - return encryptor; + RsaParamDecryptUtils.setDelegate(decryptor); + return decryptor; } } diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaEncryptorImpl.java b/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaDecryptorImpl.java similarity index 72% rename from orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaEncryptorImpl.java rename to orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaDecryptorImpl.java index be53e73a4..1b482252c 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaEncryptorImpl.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaDecryptorImpl.java @@ -26,10 +26,11 @@ import org.dromara.visor.common.config.ConfigRef; import org.dromara.visor.common.config.ConfigStore; import org.dromara.visor.common.constant.ConfigKeys; -import org.dromara.visor.common.interfaces.RsaEncryptor; +import org.dromara.visor.common.interfaces.RsaDecryptor; import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; +import java.util.Arrays; +import java.util.stream.Collectors; /** * rsa 加密器 @@ -38,25 +39,21 @@ * @version 1.0.0 * @since 2025/1/7 11:32 */ -public class RsaEncryptorImpl implements RsaEncryptor { +public class RsaDecryptorImpl implements RsaDecryptor { - private final ConfigRef publicKey; + private static final String SPLIT = "\\|"; private final ConfigRef privateKey; - public RsaEncryptorImpl(ConfigStore configStore) { - this.publicKey = configStore.ref(ConfigKeys.ENCRYPT_PUBLIC_KEY, RSA::getPublicKey); + public RsaDecryptorImpl(ConfigStore configStore) { this.privateKey = configStore.ref(ConfigKeys.ENCRYPT_PRIVATE_KEY, RSA::getPrivateKey); } - @Override - public String encrypt(String value) { - return RSA.encrypt(value, publicKey.value); - } - @Override public String decrypt(String value) { - return RSA.decrypt(value, privateKey.value); + return Arrays.stream(value.split(SPLIT)) + .map(s -> RSA.decrypt(s, privateKey.value)) + .collect(Collectors.joining()); } } diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/deserializer/ParamDecryptDeserializer.java b/orion-visor-framework/orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/deserializer/ParamDecryptDeserializer.java index 608367a2a..fee715dd2 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/deserializer/ParamDecryptDeserializer.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/deserializer/ParamDecryptDeserializer.java @@ -28,7 +28,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import org.dromara.visor.common.constant.ErrorMessage; -import org.dromara.visor.common.utils.RsaEncryptUtils; +import org.dromara.visor.common.utils.RsaParamDecryptUtils; import org.dromara.visor.common.utils.Valid; import java.io.IOException; @@ -51,7 +51,7 @@ public String deserialize(JsonParser p, DeserializationContext ctx) throws IOExc return value; } // 解密参数 - String decrypt = RsaEncryptUtils.decrypt(value); + String decrypt = RsaParamDecryptUtils.decrypt(value); return Valid.notNull(decrypt, ErrorMessage.DECRYPT_ERROR); } diff --git a/orion-visor-launch/src/test/java/org/dromara/visor/launch/ReplaceVersion.java b/orion-visor-launch/src/test/java/org/dromara/visor/launch/ReplaceVersion.java index 865584349..7ff40dac9 100644 --- a/orion-visor-launch/src/test/java/org/dromara/visor/launch/ReplaceVersion.java +++ b/orion-visor-launch/src/test/java/org/dromara/visor/launch/ReplaceVersion.java @@ -39,9 +39,9 @@ */ public class ReplaceVersion { - private static final String TARGET_VERSION = "2.2.3"; + private static final String TARGET_VERSION = "2.3.0"; - private static final String REPLACE_VERSION = "2.3.0"; + private static final String REPLACE_VERSION = "2.3.1"; private static final String PATH = new File("").getAbsolutePath(); diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java index 0fd5da54d..d20f46d7d 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java @@ -29,7 +29,7 @@ import org.dromara.visor.common.constant.ErrorMessage; import org.dromara.visor.common.handler.data.strategy.AbstractGenericsDataStrategy; import org.dromara.visor.common.utils.AesEncryptUtils; -import org.dromara.visor.common.utils.RsaEncryptUtils; +import org.dromara.visor.common.utils.RsaParamDecryptUtils; import org.dromara.visor.common.utils.Valid; import org.dromara.visor.module.asset.dao.HostIdentityDAO; import org.dromara.visor.module.asset.dao.HostKeyDAO; @@ -134,7 +134,7 @@ private void checkEncryptPassword(HostSshConfigModel before, HostSshConfigModel // 检查新密码 String newPassword = Valid.notBlank(after.getPassword(), ErrorMessage.PASSWORD_MISSING); // 解密密码 - newPassword = RsaEncryptUtils.decrypt(newPassword); + newPassword = RsaParamDecryptUtils.decrypt(newPassword); Valid.notBlank(newPassword, ErrorMessage.DECRYPT_ERROR); // 设置密码 after.setPassword(AesEncryptUtils.encryptAsString(newPassword)); diff --git a/orion-visor-ui/.env.development b/orion-visor-ui/.env.development index c8ffe522e..1075bb2e6 100644 --- a/orion-visor-ui/.env.development +++ b/orion-visor-ui/.env.development @@ -3,4 +3,4 @@ VITE_API_BASE_URL=http://127.0.0.1:9200/orion-visor/api # websocket 路径 VITE_WS_BASE_URL=ws://127.0.0.1:9200/orion-visor/keep-alive # 版本号 -VITE_APP_VERSION=2.3.0 +VITE_APP_VERSION=2.3.1 diff --git a/orion-visor-ui/.env.production b/orion-visor-ui/.env.production index a147a44a5..c0e5d778e 100644 --- a/orion-visor-ui/.env.production +++ b/orion-visor-ui/.env.production @@ -3,4 +3,4 @@ VITE_API_BASE_URL=/orion-visor/api # websocket 路径 VITE_WS_BASE_URL=/orion-visor/keep-alive # 版本号 -VITE_APP_VERSION=2.3.0 +VITE_APP_VERSION=2.3.1 diff --git a/orion-visor-ui/package.json b/orion-visor-ui/package.json index 8212c1030..38d22d812 100644 --- a/orion-visor-ui/package.json +++ b/orion-visor-ui/package.json @@ -1,7 +1,7 @@ { "name": "orion-visor-ui", "description": "Orion Visor UI", - "version": "2.3.0", + "version": "2.3.1", "private": true, "author": "Jiahang Li", "license": "Apache 2.0", diff --git a/orion-visor-ui/src/utils/rsa.ts b/orion-visor-ui/src/utils/rsa.ts index 98befd058..b741990fb 100644 --- a/orion-visor-ui/src/utils/rsa.ts +++ b/orion-visor-ui/src/utils/rsa.ts @@ -2,6 +2,9 @@ import { JSEncrypt } from 'jsencrypt'; import { useCacheStore } from '@/store'; import { Message } from '@arco-design/web-vue'; +// 分块大小 +const BLOCK_SIZE = 100; + // 加密 export const encrypt = async (data: string | undefined): Promise => { // 为空直接返回 @@ -9,14 +12,32 @@ export const encrypt = async (data: string | undefined): Promise { + const encrypted = encryptor.encrypt(chunk); + if (encrypted === false) { + throw new Error(); + } + return encrypted; + }); + return encryptedChunks.join('|'); + } catch (error) { Message.error('数据加密失败'); throw new Error('数据加密失败'); } - return value; +}; + +// 分割字符串 +const splitString = (str: string): string[] => { + const chunks: string[] = []; + for (let i = 0; i < str.length; i += BLOCK_SIZE) { + chunks.push(str.slice(i, i + BLOCK_SIZE)); + } + return chunks; }; diff --git a/pom.xml b/pom.xml index 468415062..3b65eba6e 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ - 2.3.0 + 2.3.1 8 8 3.0.0-M5