diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/constant/ErrorMessage.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/constant/ErrorMessage.java index ecfc6fad..64e9d45c 100644 --- a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/constant/ErrorMessage.java +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/constant/ErrorMessage.java @@ -1,5 +1,8 @@ package com.orion.visor.framework.common.constant; +import com.orion.lang.exception.ApplicationException; +import com.orion.lang.exception.argument.InvalidArgumentException; + /** * 错误信息 * @@ -97,6 +100,14 @@ public interface ErrorMessage { String TASK_ABSENT = "任务不存在"; + String CONNECT_ERROR = "连接失败"; + + String AUTH_ERROR = "认证失败"; + + String SCRIPT_UPLOAD_ERROR = "脚本上传失败"; + + String EXEC_ERROR = "执行失败"; + String ILLEGAL_STATUS = "当前状态不支持此操作"; String CHECK_AUTHORIZED_HOST = "请选择已授权的主机"; @@ -111,4 +122,41 @@ public interface ErrorMessage { String UNABLE_DOWNLOAD_FOLDER = "无法下载文件夹"; + /** + * 是否为业务异常 + * + * @param ex ex + * @return biz exception + */ + static boolean isBizException(Exception ex) { + if (ex == null) { + return false; + } + return ex instanceof InvalidArgumentException + || ex instanceof IllegalArgumentException + || ex instanceof ApplicationException; + } + + /** + * 获取错误信息 + * + * @param ex ex + * @param defaultMsg defaultMsg + * @return message + */ + static String getErrorMessage(Exception ex, String defaultMsg) { + if (ex == null) { + return null; + } + String message = ex.getMessage(); + if (message == null) { + return defaultMsg; + } + // 业务异常 + if (isBizException(ex)) { + return message; + } + return defaultMsg; + } + } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostExtraSshAuthTypeEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostExtraSshAuthTypeEnum.java index 141b8d53..628a9bc0 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostExtraSshAuthTypeEnum.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostExtraSshAuthTypeEnum.java @@ -10,17 +10,17 @@ package com.orion.visor.module.asset.enums; public enum HostExtraSshAuthTypeEnum { /** - * 默认验证方式 + * 默认认证方式 */ DEFAULT, /** - * 自定义密钥验证 + * 自定义密钥认证 */ CUSTOM_KEY, /** - * 自定义身份验证 + * 自定义身份认证 */ CUSTOM_IDENTITY, @@ -28,14 +28,14 @@ public enum HostExtraSshAuthTypeEnum { public static HostExtraSshAuthTypeEnum of(String type) { if (type == null) { - return null; + return DEFAULT; } for (HostExtraSshAuthTypeEnum value : values()) { if (value.name().equals(type)) { return value; } } - return null; + return DEFAULT; } } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostSshAuthTypeEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostSshAuthTypeEnum.java index ed0c4b89..7d7f5021 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostSshAuthTypeEnum.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostSshAuthTypeEnum.java @@ -1,7 +1,7 @@ package com.orion.visor.module.asset.enums; /** - * 主机验证类型 - ssh + * 主机认证类型 - ssh * * @author Jiahang Li * @version 1.0.0 @@ -10,17 +10,17 @@ package com.orion.visor.module.asset.enums; public enum HostSshAuthTypeEnum { /** - * 密码验证 + * 密码认证 */ PASSWORD, /** - * 密钥验证 + * 密钥认证 */ KEY, /** - * 身份验证 + * 身份认证 */ IDENTITY, @@ -28,14 +28,14 @@ public enum HostSshAuthTypeEnum { public static HostSshAuthTypeEnum of(String type) { if (type == null) { - return null; + return PASSWORD; } for (HostSshAuthTypeEnum value : values()) { if (value.name().equals(type)) { return value; } } - return null; + return PASSWORD; } } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostSshOsTypeEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostSshOsTypeEnum.java index a77915ca..63d07784 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostSshOsTypeEnum.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostSshOsTypeEnum.java @@ -30,14 +30,14 @@ public enum HostSshOsTypeEnum { public static HostSshOsTypeEnum of(String type) { if (type == null) { - return null; + return LINUX; } for (HostSshOsTypeEnum value : values()) { if (value.name().equals(type)) { return value; } } - return null; + return LINUX; } } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java index 92e4c1f2..c05f480e 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java @@ -55,10 +55,6 @@ public class HostSshConfigStrategy extends AbstractGenericsDataStrategy imp * @return msg */ protected String getErrorMessage(Exception ex) { - if (ex == null) { - return null; - } - if (ex instanceof InvalidArgumentException || ex instanceof IllegalArgumentException) { - return ex.getMessage(); - } - return ErrorMessage.OPERATE_ERROR; + // 获取错误信息 + return ErrorMessage.getErrorMessage(ex, ErrorMessage.OPERATE_ERROR); } } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/utils/TransferUtils.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/utils/TransferUtils.java index 38ba3287..1bb7dde6 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/utils/TransferUtils.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/utils/TransferUtils.java @@ -1,7 +1,6 @@ package com.orion.visor.module.asset.handler.host.transfer.utils; import com.alibaba.fastjson.JSON; -import com.orion.lang.exception.argument.InvalidArgumentException; import com.orion.lang.utils.Strings; import com.orion.visor.framework.common.constant.ErrorMessage; import com.orion.visor.framework.websocket.core.utils.WebSockets; @@ -62,13 +61,15 @@ public class TransferUtils { public static String getErrorMessage(Exception ex) { if (ex == null) { return null; - } else if (ex instanceof InvalidArgumentException || ex instanceof IllegalArgumentException) { + } else if (ErrorMessage.isBizException(ex)) { + // 业务异常 String message = ex.getMessage(); if (Strings.isBlank(message)) { return ErrorMessage.OPERATE_ERROR; } return message; } else if (ex instanceof ClientAbortException) { + // 客户端主动断开 return ErrorMessage.CLIENT_ABORT; } return ErrorMessage.OPERATE_ERROR; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecLogServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecLogServiceImpl.java index e015d31f..835ce5a3 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecLogServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/ExecLogServiceImpl.java @@ -3,7 +3,6 @@ package com.orion.visor.module.asset.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.orion.lang.define.wrapper.DataGrid; -import com.orion.lang.exception.argument.InvalidArgumentException; import com.orion.lang.id.UUIds; import com.orion.lang.utils.Arrays1; import com.orion.lang.utils.Objects1; @@ -421,10 +420,8 @@ public class ExecLogServiceImpl implements ExecLogService { } catch (Exception e) { log.error("ExecLogService.downloadLogFile error id: {}", id, e); Streams.close(in); - String errorMessage = ErrorMessage.FILE_READ_ERROR_CLEAR; - if (e instanceof InvalidArgumentException || e instanceof IllegalArgumentException) { - errorMessage = e.getMessage(); - } + // 获取错误信息 + String errorMessage = ErrorMessage.getErrorMessage(e, ErrorMessage.FILE_READ_ERROR_CLEAR); // 响应错误信息 try { Servlets.transfer(response, Strings.bytes(errorMessage), FileConst.ERROR_LOG); diff --git a/orion-visor-ui/src/mock/index.ts b/orion-visor-ui/src/mock/index.ts index 7cac1120..337b9322 100644 --- a/orion-visor-ui/src/mock/index.ts +++ b/orion-visor-ui/src/mock/index.ts @@ -28,21 +28,11 @@ interface XHRCustom extends XHR { Mock.XHR.prototype.send = (() => { // @ts-ignore const _send = Mock.XHR.prototype.send; - const defaultEvent = () => { - }; return function (this: XHRCustom) { if (!this.match) { this.custom.xhr.responseType = this.responseType || ''; this.custom.xhr.timeout = this.timeout || 0; this.custom.xhr.withCredentials = this.withCredentials || false; - this.custom.xhr.onabort = this.onabort || defaultEvent; - this.custom.xhr.onerror = this.onerror || defaultEvent; - this.custom.xhr.onload = this.onload || defaultEvent; - this.custom.xhr.onloadend = this.onloadend || defaultEvent; - this.custom.xhr.onloadstart = this.onloadstart || defaultEvent; - this.custom.xhr.onprogress = this.onprogress || defaultEvent; - this.custom.xhr.onreadystatechange = this.onreadystatechange || defaultEvent; - this.custom.xhr.ontimeout = this.ontimeout || defaultEvent; } return _send.apply(this, arguments); }; diff --git a/orion-visor-ui/src/views/asset/host-config/components/ssh-config-form.vue b/orion-visor-ui/src/views/asset/host-config/components/ssh-config-form.vue index db9ab9e5..8b8a4d51 100644 --- a/orion-visor-ui/src/views/asset/host-config/components/ssh-config-form.vue +++ b/orion-visor-ui/src/views/asset/host-config/components/ssh-config-form.vue @@ -43,9 +43,9 @@ :disabled="SshAuthType.IDENTITY === formModel.authType" placeholder="请输入用户名" /> - + { if (value && value.length > 128) { @@ -179,7 +179,7 @@ } }] as FieldRule[]; - // 密码验证 + // 密码认证 const passwordRules = [{ validator: (value, cb) => { if (value && value.length > 256) { diff --git a/orion-visor-ui/src/views/asset/host-config/types/const.ts b/orion-visor-ui/src/views/asset/host-config/types/const.ts index c949d0c6..286b8e83 100644 --- a/orion-visor-ui/src/views/asset/host-config/types/const.ts +++ b/orion-visor-ui/src/views/asset/host-config/types/const.ts @@ -14,17 +14,17 @@ export interface HostSshConfig { hasPassword?: boolean; } -// 主机验证方式 +// 主机认证方式 export const SshAuthType = { - // 密码验证 + // 密码认证 PASSWORD: 'PASSWORD', - // 密钥验证 + // 密钥认证 KEY: 'KEY', - // 身份验证 + // 身份认证 IDENTITY: 'IDENTITY' }; -// 主机验证方式 字典项 +// 主机认证方式 字典项 export const sshAuthTypeKey = 'hostSshAuthType'; // 主机系统类型 字典项 diff --git a/orion-visor-ui/src/views/asset/host-identity/components/host-identity-form-modal.vue b/orion-visor-ui/src/views/asset/host-identity/components/host-identity-form-modal.vue index c3594507..71a1604b 100644 --- a/orion-visor-ui/src/views/asset/host-identity/components/host-identity-form-modal.vue +++ b/orion-visor-ui/src/views/asset/host-identity/components/host-identity-form-modal.vue @@ -127,7 +127,7 @@ defineExpose({ openAdd, openUpdate }); - // 密码验证 + // 密码认证 const passwordRules = [{ validator: (value, cb) => { if (value && value.length > 512) { diff --git a/orion-visor-ui/src/views/asset/host-key/components/host-key-form-drawer.vue b/orion-visor-ui/src/views/asset/host-key/components/host-key-form-drawer.vue index 67c931d7..6af6d1e2 100644 --- a/orion-visor-ui/src/views/asset/host-key/components/host-key-form-drawer.vue +++ b/orion-visor-ui/src/views/asset/host-key/components/host-key-form-drawer.vue @@ -163,7 +163,7 @@ defineExpose({ openAdd, openUpdate, openView }); - // 密码验证 + // 密码认证 const passwordRules = [{ validator: (value, cb) => { if (value && value.length > 512) { diff --git a/orion-visor-ui/src/views/host/terminal/components/setting/extra/ssh-setting-form.vue b/orion-visor-ui/src/views/host/terminal/components/setting/extra/ssh-setting-form.vue index 61ea4cb5..fe80a736 100644 --- a/orion-visor-ui/src/views/host/terminal/components/setting/extra/ssh-setting-form.vue +++ b/orion-visor-ui/src/views/host/terminal/components/setting/extra/ssh-setting-form.vue @@ -4,8 +4,8 @@ label-align="right" :label-col-props="{ span: 5 }" :wrapper-col-props="{ span: 18 }"> - - + + diff --git a/orion-visor-ui/src/views/host/terminal/handler/terminal-output-processor.ts b/orion-visor-ui/src/views/host/terminal/handler/terminal-output-processor.ts index 851c932a..9b792c83 100644 --- a/orion-visor-ui/src/views/host/terminal/handler/terminal-output-processor.ts +++ b/orion-visor-ui/src/views/host/terminal/handler/terminal-output-processor.ts @@ -36,7 +36,7 @@ export default class TerminalOutputProcessor implements ITerminalOutputProcessor }); } else { // 未成功展示错误信息 - ssh.write(`${msg || ''}\r\n输入回车重新连接...\r\n\r\n`); + ssh.write(`${msg || ''}\r\n\r\n输入回车重新连接...\r\n\r\n`); ssh.status = TerminalStatus.CLOSED; } }, sftp => { @@ -69,7 +69,7 @@ export default class TerminalOutputProcessor implements ITerminalOutputProcessor ssh.connect(); } else { // 未成功展示错误信息 - ssh.write(`${msg || ''}\r\n输入回车重新连接...\r\n\r\n`); + ssh.write(`${msg || ''}\r\n\r\n输入回车重新连接...\r\n\r\n`); ssh.status = TerminalStatus.CLOSED; } }, sftp => { diff --git a/sql/init-4-data.sql b/sql/init-4-data.sql index ffea26d8..e79455b3 100644 --- a/sql/init-4-data.sql +++ b/sql/init-4-data.sql @@ -18,7 +18,7 @@ INSERT INTO `dict_key` VALUES (7, 'systemMenuCache', 'INTEGER', '[]', '菜单缓 INSERT INTO `dict_key` VALUES (8, 'dictValueType', 'STRING', '[{\"name\": \"color\", \"type\": \"COLOR\"}]', '字典配置值类型', '2023-10-27 01:48:51', '2023-10-27 01:48:51', '1', '1', 0); INSERT INTO `dict_key` VALUES (9, 'systemUserStatus', 'INTEGER', '[{\"name\": \"color\", \"type\": \"COLOR\"}]', '用户状态', '2023-10-27 12:10:41', '2023-10-27 12:10:41', '1', '1', 0); INSERT INTO `dict_key` VALUES (10, 'systemRoleStatus', 'INTEGER', '[{\"name\": \"color\", \"type\": \"COLOR\"}, {\"name\": \"status\", \"type\": \"STRING\"}]', '角色状态', '2023-10-27 12:33:04', '2023-10-27 12:33:17', '1', '1', 0); -INSERT INTO `dict_key` VALUES (11, 'hostSshAuthType', 'STRING', '[]', '主机ssh身份验证方式', '2023-10-27 14:29:12', '2023-12-25 15:41:40', '1', '1', 0); +INSERT INTO `dict_key` VALUES (11, 'hostSshAuthType', 'STRING', '[]', '主机ssh身份认证方式', '2023-10-27 14:29:12', '2023-12-25 15:41:40', '1', '1', 0); INSERT INTO `dict_key` VALUES (15, 'operatorLogResult', 'INTEGER', '[{\"name\": \"color\", \"type\": \"COLOR\"}]', '操作日志结果', '2023-10-31 17:35:28', '2023-10-31 17:42:50', '2', '2', 0); INSERT INTO `dict_key` VALUES (16, 'operatorRiskLevel', 'STRING', '[{\"name\": \"color\", \"type\": \"COLOR\"}]', '操作风险等级', '2023-11-01 16:03:00', '2023-11-01 16:03:00', '1', '1', 0); INSERT INTO `dict_key` VALUES (19, 'systemMenuNewWindow', 'INTEGER', '[]', '菜单是否开启新窗口', '2023-12-05 14:14:29', '2023-12-05 14:14:29', '1', '1', 0); @@ -68,9 +68,9 @@ INSERT INTO `dict_value` VALUES (17, 9, 'systemUserStatus', '0', '停用', '{\"c INSERT INTO `dict_value` VALUES (18, 9, 'systemUserStatus', '1', '启用', '{\"color\": \"arcoblue\"}', 20, '2023-10-27 12:13:17', '2024-04-24 16:35:00', '1', '1', 0); INSERT INTO `dict_value` VALUES (20, 10, 'systemRoleStatus', '0', '停用', '{\"color\": \"orange\", \"status\": \"danger\"}', 10, '2023-10-27 12:33:45', '2023-10-27 12:33:45', '1', '1', 0); INSERT INTO `dict_value` VALUES (21, 10, 'systemRoleStatus', '1', '启用', '{\"color\": \"arcoblue\", \"status\": \"default\"}', 20, '2023-10-27 12:33:56', '2024-04-24 16:34:52', '1', '1', 0); -INSERT INTO `dict_value` VALUES (22, 11, 'hostSshAuthType', 'PASSWORD', '密码验证', '{}', 10, '2023-10-27 14:29:28', '2023-12-25 15:40:47', '1', '1', 0); -INSERT INTO `dict_value` VALUES (23, 11, 'hostSshAuthType', 'KEY', '密钥验证', '{}', 20, '2023-10-27 14:29:35', '2024-05-17 12:48:53', '1', '1', 0); -INSERT INTO `dict_value` VALUES (24, 11, 'hostSshAuthType', 'IDENTITY', '身份验证', '{}', 30, '2023-10-27 14:29:42', '2023-12-25 15:40:47', '1', '1', 0); +INSERT INTO `dict_value` VALUES (22, 11, 'hostSshAuthType', 'PASSWORD', '密码认证', '{}', 10, '2023-10-27 14:29:28', '2023-12-25 15:40:47', '1', '1', 0); +INSERT INTO `dict_value` VALUES (23, 11, 'hostSshAuthType', 'KEY', '密钥认证', '{}', 20, '2023-10-27 14:29:35', '2024-05-17 12:48:53', '1', '1', 0); +INSERT INTO `dict_value` VALUES (24, 11, 'hostSshAuthType', 'IDENTITY', '身份认证', '{}', 30, '2023-10-27 14:29:42', '2023-12-25 15:40:47', '1', '1', 0); INSERT INTO `dict_value` VALUES (55, 1, 'operatorLogModule', 'infra:authentication', '身份认证', '{}', 1000, '2023-10-31 10:47:48', '2023-10-31 10:55:12', '1', '1', 0); INSERT INTO `dict_value` VALUES (56, 1, 'operatorLogModule', 'infra:system-user', '系统用户', '{}', 1010, '2023-10-31 10:47:51', '2023-10-31 11:00:59', '1', '1', 0); INSERT INTO `dict_value` VALUES (57, 1, 'operatorLogModule', 'infra:system-role', '系统角色', '{}', 1020, '2023-10-31 10:47:52', '2023-10-31 10:54:59', '1', '1', 0);