From 824f7317d7925fcd05f5a4b6a00ad2facaf91349 Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Thu, 12 Dec 2024 21:35:05 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E6=B7=BB=E5=8A=A0=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E4=BA=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.yaml | 8 +-- .../asset/controller/ExecJobController.java | 9 +++ .../operator/ExecCommandLogOperatorType.java | 15 ++--- .../operator/ExecCommandOperatorType.java | 5 +- .../operator/ExecJobLogOperatorType.java | 15 ++--- .../define/operator/ExecJobOperatorType.java | 24 +++++--- .../operator/ExecTemplateOperatorType.java | 9 +-- .../operator/HostGroupOperatorType.java | 15 ++--- .../operator/HostIdentityOperatorType.java | 12 ++-- .../define/operator/HostKeyOperatorType.java | 12 ++-- .../define/operator/HostOperatorType.java | 13 +++-- .../TerminalConnectLogOperatorType.java | 10 ++-- .../define/operator/TerminalOperatorType.java | 25 ++++---- .../operator/UploadTaskOperatorType.java | 12 ++-- .../module/asset/entity/domain/ExecJobDO.java | 8 +++ .../module/asset/entity/domain/ExecLogDO.java | 4 ++ .../asset/entity/dto/ExecCommandExecDTO.java | 3 + .../exec/ExecJobSetExecUserRequest.java | 47 +++++++++++++++ .../request/exec/ExecJobTriggerRequest.java | 3 + .../request/exec/ExecLogQueryRequest.java | 4 ++ .../module/asset/entity/vo/ExecJobVO.java | 6 ++ .../module/asset/entity/vo/ExecLogVO.java | 3 + .../module/asset/enums/ExecModeEnum.java | 37 ++++++++++++ .../strategy/HostSshConfigStrategy.java | 1 - .../handler/BaseExecCommandHandler.java | 2 +- .../handler/host/exec/job/ExecCommandJob.java | 19 ++++-- .../handler/TerminalCheckHandler.java | 2 +- .../transfer/handler/TransferHandler.java | 2 +- .../module/asset/service/ExecJobService.java | 12 +++- .../module/asset/service/TerminalService.java | 4 +- .../service/impl/ExecCommandServiceImpl.java | 2 + .../service/impl/ExecJobServiceImpl.java | 58 ++++++++++++++----- .../service/impl/TerminalServiceImpl.java | 6 +- .../service/impl/TerminalSftpServiceImpl.java | 4 +- .../main/resources/mapper/ExecJobMapper.xml | 4 +- .../main/resources/mapper/ExecLogMapper.xml | 3 +- .../operator/AuthenticationOperatorType.java | 9 +-- .../define/operator/DictKeyOperatorType.java | 9 +-- .../operator/DictValueOperatorType.java | 9 +-- .../operator/OperatorLogOperatorType.java | 7 ++- .../operator/SystemMenuOperatorType.java | 11 ++-- .../operator/SystemRoleOperatorType.java | 13 +++-- .../operator/SystemUserOperatorType.java | 17 +++--- orion-visor-ui/src/api/exec/exec-log.ts | 1 + orion-visor-ui/src/api/job/exec-job.ts | 17 ++++++ 45 files changed, 369 insertions(+), 142 deletions(-) create mode 100644 orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecJobSetExecUserRequest.java create mode 100644 orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/enums/ExecModeEnum.java diff --git a/orion-visor-launch/src/main/resources/application-dev.yaml b/orion-visor-launch/src/main/resources/application-dev.yaml index d5a313c7..914d5c78 100644 --- a/orion-visor-launch/src/main/resources/application-dev.yaml +++ b/orion-visor-launch/src/main/resources/application-dev.yaml @@ -1,18 +1,18 @@ spring: datasource: druid: - url: jdbc:mysql://127.0.0.1:3306/orion_visor?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true + url: jdbc:mysql://116.62.194.246:3306/orion_visor?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true username: root - password: Data@123456 + password: Orionsec@123456 initial-size: 0 min-idle: 1 max-active: 5 stat-view-servlet: enabled: false redis: - host: 127.0.0.1 + host: 116.62.194.246 port: 6379 - password: Data@123456 + password: Orionsec@123456 redisson: threads: 2 netty-threads: 2 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/ExecJobController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/ExecJobController.java index a9878e56..64f6a0a6 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/ExecJobController.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/controller/ExecJobController.java @@ -107,6 +107,15 @@ public class ExecJobController { return execJobService.getExecJobPage(request); } + @DemoDisableApi + @OperatorLog(ExecJobOperatorType.SET_EXEC_USER) + @PutMapping("/set-exec-user") + @Operation(summary = "设置计划任务执行用户") + @PreAuthorize("@ss.hasPermission('exec:exec-job:set-exec-user')") + public Integer setExecJobExecUser(@Validated @RequestBody ExecJobSetExecUserRequest request) { + return execJobService.setExecJobExecUser(request); + } + @DemoDisableApi @OperatorLog(ExecJobOperatorType.DELETE) @DeleteMapping("/delete") diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecCommandLogOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecCommandLogOperatorType.java index ec4363a2..9d4709d6 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecCommandLogOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecCommandLogOperatorType.java @@ -16,10 +16,11 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + /** * 批量执行日志 操作记录类型 * @@ -45,12 +46,12 @@ public class ExecCommandLogOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.H, DELETE, "删除批量执行日志 ${count} 条"), - new OperatorType(OperatorRiskLevel.H, DELETE_HOST, "删除批量执行主机日志 ${logId} ${hostName}"), - new OperatorType(OperatorRiskLevel.H, CLEAR, "清理批量执行日志 ${count} 条"), - new OperatorType(OperatorRiskLevel.L, DOWNLOAD, "下载批量执行日志 ${logId} ${hostName}"), - new OperatorType(OperatorRiskLevel.M, INTERRUPT, "中断批量执行命令"), - new OperatorType(OperatorRiskLevel.M, INTERRUPT_HOST, "中断批量执行主机命令 ${logId} ${hostName}"), + new OperatorType(H, DELETE, "删除批量执行日志 ${count} 条"), + new OperatorType(H, DELETE_HOST, "删除批量执行主机日志 ${logId} ${hostName}"), + new OperatorType(H, CLEAR, "清理批量执行日志 ${count} 条"), + new OperatorType(L, DOWNLOAD, "下载批量执行日志 ${logId} ${hostName}"), + new OperatorType(M, INTERRUPT, "中断批量执行命令"), + new OperatorType(M, INTERRUPT_HOST, "中断批量执行主机命令 ${logId} ${hostName}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecCommandOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecCommandOperatorType.java index 92a1509d..d0e4e32b 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecCommandOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecCommandOperatorType.java @@ -16,10 +16,11 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.M; + /** * 批量执行 操作记录类型 * @@ -35,7 +36,7 @@ public class ExecCommandOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.M, EXEC, "执行主机命令"), + new OperatorType(M, EXEC, "执行主机命令"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecJobLogOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecJobLogOperatorType.java index 8eee798b..b6c34667 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecJobLogOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecJobLogOperatorType.java @@ -16,10 +16,11 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + /** * 计划任务执行日志 操作记录类型 * @@ -45,12 +46,12 @@ public class ExecJobLogOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.H, DELETE, "删除计划任务执行日志 ${count} 条"), - new OperatorType(OperatorRiskLevel.H, DELETE_HOST, "删除计划任务执行主机日志 ${logId} ${hostName}"), - new OperatorType(OperatorRiskLevel.H, CLEAR, "清理计划任务执行日志 ${count} 条"), - new OperatorType(OperatorRiskLevel.L, DOWNLOAD, "下载计划任务执行日志 ${logId} ${hostName}"), - new OperatorType(OperatorRiskLevel.M, INTERRUPT, "中断计划任务执行命令"), - new OperatorType(OperatorRiskLevel.M, INTERRUPT_HOST, "中断计划任务执行主机命令 ${logId} ${hostName}"), + new OperatorType(H, DELETE, "删除计划任务执行日志 ${count} 条"), + new OperatorType(H, DELETE_HOST, "删除计划任务执行主机日志 ${logId} ${hostName}"), + new OperatorType(H, CLEAR, "清理计划任务执行日志 ${count} 条"), + new OperatorType(L, DOWNLOAD, "下载计划任务执行日志 ${logId} ${hostName}"), + new OperatorType(M, INTERRUPT, "中断计划任务执行命令"), + new OperatorType(M, INTERRUPT_HOST, "中断计划任务执行主机命令 ${logId} ${hostName}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecJobOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecJobOperatorType.java index 7c859191..7fc94943 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecJobOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecJobOperatorType.java @@ -16,10 +16,11 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + /** * 计划任务 操作日志类型 * @@ -27,7 +28,7 @@ import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; * @version 1.0.3 * @since 2024-3-28 12:03 */ -@Module("asset:exec-job") +@Module("exec:exec-job") public class ExecJobOperatorType extends InitializingOperatorTypes { public static final String CREATE = "exec-job:create"; @@ -38,16 +39,25 @@ public class ExecJobOperatorType extends InitializingOperatorTypes { public static final String TRIGGER = "exec-job:trigger"; + public static final String SET_EXEC_USER = "exec-job:set-exec-user"; + public static final String DELETE = "exec-job:delete"; + public static final String IMPORT = "exec-job:import"; + + public static final String EXPORT = "exec-job:export"; + @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.L, CREATE, "创建计划任务 ${name}"), - new OperatorType(OperatorRiskLevel.M, UPDATE, "更新计划任务 ${before}"), - new OperatorType(OperatorRiskLevel.M, UPDATE_STATUS, "${statusName} 计划任务 ${name}"), - new OperatorType(OperatorRiskLevel.M, TRIGGER, "手动触发计划任务 ${name}"), - new OperatorType(OperatorRiskLevel.H, DELETE, "删除计划任务 ${name}"), + new OperatorType(L, CREATE, "创建计划任务 ${name}"), + new OperatorType(M, UPDATE, "更新计划任务 ${before}"), + new OperatorType(M, UPDATE_STATUS, "${statusName} 计划任务 ${name}"), + new OperatorType(M, TRIGGER, "手动触发计划任务 ${name}"), + new OperatorType(M, SET_EXEC_USER, "修改计划任务 ${name} 执行用户为 ${username}"), + new OperatorType(H, DELETE, "删除计划任务 ${name}"), + new OperatorType(H, IMPORT, "导入计划任务 ${count} 条"), + new OperatorType(H, EXPORT, "导出计划任务 ${count} 条"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecTemplateOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecTemplateOperatorType.java index 9497ba5d..f128f68d 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecTemplateOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/ExecTemplateOperatorType.java @@ -16,10 +16,11 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + /** * 执行模板 操作日志类型 * @@ -39,9 +40,9 @@ public class ExecTemplateOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.L, CREATE, "创建执行模板 ${name}"), - new OperatorType(OperatorRiskLevel.M, UPDATE, "更新执行模板 ${name}"), - new OperatorType(OperatorRiskLevel.H, DELETE, "删除执行模板 ${name}"), + new OperatorType(L, CREATE, "创建执行模板 ${name}"), + new OperatorType(M, UPDATE, "更新执行模板 ${name}"), + new OperatorType(H, DELETE, "删除执行模板 ${name}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostGroupOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostGroupOperatorType.java index 2d111ee7..758f0c8e 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostGroupOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostGroupOperatorType.java @@ -16,10 +16,11 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + /** * 主机分组 操作日志类型 * @@ -45,12 +46,12 @@ public class HostGroupOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.L, CREATE, "创建主机分组 ${name}"), - new OperatorType(OperatorRiskLevel.L, RENAME, "重命名主机分组 ${before} -> ${name}"), - new OperatorType(OperatorRiskLevel.L, MOVE, "移动主机分组 ${source}${target}(${position})"), - new OperatorType(OperatorRiskLevel.H, DELETE, "删除主机分组 ${groupName}"), - new OperatorType(OperatorRiskLevel.M, UPDATE_REL, "修改分组内主机 ${groupName}"), - new OperatorType(OperatorRiskLevel.H, GRANT, "将主机分组权限授予 ${grantType} ${grantName}"), + new OperatorType(L, CREATE, "创建主机分组 ${name}"), + new OperatorType(L, RENAME, "重命名主机分组 ${before} -> ${name}"), + new OperatorType(L, MOVE, "移动主机分组 ${source}${target}(${position})"), + new OperatorType(H, DELETE, "删除主机分组 ${groupName}"), + new OperatorType(M, UPDATE_REL, "修改分组内主机 ${groupName}"), + new OperatorType(H, GRANT, "将主机分组权限授予 ${grantType} ${grantName}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostIdentityOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostIdentityOperatorType.java index 4b13912b..079f5a71 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostIdentityOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostIdentityOperatorType.java @@ -16,10 +16,12 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.H; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.L; + /** * 主机身份 操作日志类型 * @@ -41,10 +43,10 @@ public class HostIdentityOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.L, CREATE, "创建主机身份 ${name}"), - new OperatorType(OperatorRiskLevel.L, UPDATE, "修改主机身份 ${name}"), - new OperatorType(OperatorRiskLevel.H, DELETE, "删除主机身份 ${name}"), - new OperatorType(OperatorRiskLevel.H, GRANT, "将主机身份权限授予 ${grantType} ${grantName}"), + new OperatorType(L, CREATE, "创建主机身份 ${name}"), + new OperatorType(L, UPDATE, "修改主机身份 ${name}"), + new OperatorType(H, DELETE, "删除主机身份 ${name}"), + new OperatorType(H, GRANT, "将主机身份权限授予 ${grantType} ${grantName}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostKeyOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostKeyOperatorType.java index 0be618d0..f15e9dda 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostKeyOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostKeyOperatorType.java @@ -16,10 +16,12 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.H; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.L; + /** * 主机密钥 操作日志类型 * @@ -41,10 +43,10 @@ public class HostKeyOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.L, CREATE, "创建主机密钥 ${name}"), - new OperatorType(OperatorRiskLevel.L, UPDATE, "修改主机密钥 ${name}"), - new OperatorType(OperatorRiskLevel.H, DELETE, "删除主机密钥 ${name}"), - new OperatorType(OperatorRiskLevel.H, GRANT, "将主机密钥权限授予 ${grantType} ${grantName}"), + new OperatorType(L, CREATE, "创建主机密钥 ${name}"), + new OperatorType(L, UPDATE, "修改主机密钥 ${name}"), + new OperatorType(H, DELETE, "删除主机密钥 ${name}"), + new OperatorType(H, GRANT, "将主机密钥权限授予 ${grantType} ${grantName}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostOperatorType.java index e061d93d..02922bc6 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/HostOperatorType.java @@ -16,10 +16,11 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + /** * 主机 操作日志类型 * @@ -43,11 +44,11 @@ public class HostOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.L, CREATE, "创建主机 ${name}"), - new OperatorType(OperatorRiskLevel.L, UPDATE, "修改主机 ${name}"), - new OperatorType(OperatorRiskLevel.H, DELETE, "删除主机 ${count} 条"), - new OperatorType(OperatorRiskLevel.M, UPDATE_STATUS, "修改主机状态 ${name} - ${status}"), - new OperatorType(OperatorRiskLevel.M, UPDATE_CONFIG, "修改主机配置 ${name}"), + new OperatorType(L, CREATE, "创建主机 ${name}"), + new OperatorType(L, UPDATE, "修改主机 ${name}"), + new OperatorType(H, DELETE, "删除主机 ${count} 条"), + new OperatorType(M, UPDATE_STATUS, "修改主机状态 ${name} - ${status}"), + new OperatorType(M, UPDATE_CONFIG, "修改主机配置 ${name}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/TerminalConnectLogOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/TerminalConnectLogOperatorType.java index b945e582..7e366821 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/TerminalConnectLogOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/TerminalConnectLogOperatorType.java @@ -16,10 +16,12 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.H; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.M; + /** * 终端连接日志 操作日志类型 * @@ -39,9 +41,9 @@ public class TerminalConnectLogOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.H, DELETE, "删除终端连接记录 ${count} 条"), - new OperatorType(OperatorRiskLevel.H, CLEAR, "清空终端连接记录 ${count} 条"), - new OperatorType(OperatorRiskLevel.M, FORCE_OFFLINE, "强制下线终端连接 ${hostName}"), + new OperatorType(H, DELETE, "删除终端连接记录 ${count} 条"), + new OperatorType(H, CLEAR, "清空终端连接记录 ${count} 条"), + new OperatorType(M, FORCE_OFFLINE, "强制下线终端连接 ${hostName}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/TerminalOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/TerminalOperatorType.java index 886f9847..b1f63228 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/TerminalOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/TerminalOperatorType.java @@ -17,12 +17,13 @@ package org.dromara.visor.module.asset.define.operator; import cn.orionsec.kit.lang.utils.collect.Lists; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; import java.util.List; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; + /** * 终端 操作日志类型 * @@ -70,17 +71,17 @@ public class TerminalOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.L, CONNECT, "连接主机 ${connectType} ${hostName}"), - new OperatorType(OperatorRiskLevel.H, DELETE_SFTP_LOG, "删除 SFTP 操作日志 ${count} 条"), - new OperatorType(OperatorRiskLevel.L, SFTP_MKDIR, "创建文件夹 ${hostName} ${path}"), - new OperatorType(OperatorRiskLevel.L, SFTP_TOUCH, "创建文件 ${hostName} ${path}"), - new OperatorType(OperatorRiskLevel.M, SFTP_MOVE, "移动文件 ${hostName} ${path}${target}"), - new OperatorType(OperatorRiskLevel.H, SFTP_REMOVE, "删除文件 ${hostName} ${path}"), - new OperatorType(OperatorRiskLevel.H, SFTP_TRUNCATE, "截断文件 ${hostName} ${path}"), - new OperatorType(OperatorRiskLevel.M, SFTP_CHMOD, "文件提权 ${hostName} ${path} ${mod}"), - new OperatorType(OperatorRiskLevel.M, SFTP_SET_CONTENT, "修改文件内容 ${hostName} ${path}"), - new OperatorType(OperatorRiskLevel.M, SFTP_UPLOAD, "上传文件 ${hostName} ${path}"), - new OperatorType(OperatorRiskLevel.M, SFTP_DOWNLOAD, "下载文件 ${hostName} ${path}"), + new OperatorType(L, CONNECT, "连接主机 ${connectType} ${hostName}"), + new OperatorType(H, DELETE_SFTP_LOG, "删除 SFTP 操作日志 ${count} 条"), + new OperatorType(L, SFTP_MKDIR, "创建文件夹 ${hostName} ${path}"), + new OperatorType(L, SFTP_TOUCH, "创建文件 ${hostName} ${path}"), + new OperatorType(M, SFTP_MOVE, "移动文件 ${hostName} ${path}${target}"), + new OperatorType(H, SFTP_REMOVE, "删除文件 ${hostName} ${path}"), + new OperatorType(H, SFTP_TRUNCATE, "截断文件 ${hostName} ${path}"), + new OperatorType(M, SFTP_CHMOD, "文件提权 ${hostName} ${path} ${mod}"), + new OperatorType(M, SFTP_SET_CONTENT, "修改文件内容 ${hostName} ${path}"), + new OperatorType(M, SFTP_UPLOAD, "上传文件 ${hostName} ${path}"), + new OperatorType(M, SFTP_DOWNLOAD, "下载文件 ${hostName} ${path}"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/UploadTaskOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/UploadTaskOperatorType.java index 1455ae2e..44f567cc 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/UploadTaskOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/define/operator/UploadTaskOperatorType.java @@ -16,10 +16,12 @@ package org.dromara.visor.module.asset.define.operator; import org.dromara.visor.framework.biz.operator.log.core.annotation.Module; -import org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel; import org.dromara.visor.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import org.dromara.visor.framework.biz.operator.log.core.model.OperatorType; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.H; +import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.M; + /** * 上传任务 操作日志类型 * @@ -41,10 +43,10 @@ public class UploadTaskOperatorType extends InitializingOperatorTypes { @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(OperatorRiskLevel.M, UPLOAD, "批量上传文件 ${count} 个 (${name})"), - new OperatorType(OperatorRiskLevel.M, CANCEL, "取消上传文件 ${name}"), - new OperatorType(OperatorRiskLevel.H, DELETE, "删除上传记录 ${count}条"), - new OperatorType(OperatorRiskLevel.H, CLEAR, "清理上传记录 ${count}条"), + new OperatorType(M, UPLOAD, "批量上传文件 ${count} 个 (${name})"), + new OperatorType(M, CANCEL, "取消上传文件 ${name}"), + new OperatorType(H, DELETE, "删除上传记录 ${count}条"), + new OperatorType(H, CLEAR, "清理上传记录 ${count}条"), }; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/ExecJobDO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/ExecJobDO.java index 5e7238b8..637d05bc 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/ExecJobDO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/ExecJobDO.java @@ -81,4 +81,12 @@ public class ExecJobDO extends BaseDO { @TableField("recent_log_id") private Long recentLogId; + @Schema(description = "执行用户id") + @TableField("exec_user_id") + private Long execUserId; + + @Schema(description = "执行用户名") + @TableField("exec_username") + private String execUsername; + } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/ExecLogDO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/ExecLogDO.java index 1014d7f0..50a5791a 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/ExecLogDO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/ExecLogDO.java @@ -63,6 +63,10 @@ public class ExecLogDO extends BaseDO { @TableField("source_id") private Long sourceId; + @Schema(description = "执行方式") + @TableField("exec_mode") + private String execMode; + @Schema(description = "执行描述") @TableField("description") private String description; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/dto/ExecCommandExecDTO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/dto/ExecCommandExecDTO.java index 956ef61a..4351b72e 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/dto/ExecCommandExecDTO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/dto/ExecCommandExecDTO.java @@ -49,6 +49,9 @@ public class ExecCommandExecDTO { @Schema(description = "来源id") private Long sourceId; + @Schema(description = "执行方式") + private String execMode; + @Schema(description = "执行序列") private Integer execSeq; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecJobSetExecUserRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecJobSetExecUserRequest.java new file mode 100644 index 00000000..e1d96477 --- /dev/null +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecJobSetExecUserRequest.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2023 - present Jiahang Li (visor.orionsec.cn ljh1553488six@139.com). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.dromara.visor.module.asset.entity.request.exec; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import org.dromara.visor.framework.common.entity.PageRequest; + +import javax.validation.constraints.NotNull; + +/** + * 设置计划任务执行用户 查询请求对象 + * + * @author Jiahang Li + * @version 1.0.3 + * @since 2024-3-28 12:03 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Schema(name = "ExecJobSetExecUserRequest", description = "设置计划任务执行用户 查询请求对象") +public class ExecJobSetExecUserRequest extends PageRequest { + + @NotNull + @Schema(description = "id") + private Long id; + + @NotNull + @Schema(description = "userId") + private Long userId; + +} diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecJobTriggerRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecJobTriggerRequest.java index 6b3ac4f8..e8146e97 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecJobTriggerRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecJobTriggerRequest.java @@ -50,4 +50,7 @@ public class ExecJobTriggerRequest implements Serializable { @Schema(description = "执行用户名") private String username; + @Schema(description = "执行方式") + private String execMode; + } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecLogQueryRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecLogQueryRequest.java index ff7d69fa..884e3120 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecLogQueryRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/exec/ExecLogQueryRequest.java @@ -55,6 +55,10 @@ public class ExecLogQueryRequest extends PageRequest { @Schema(description = "执行来源id") private Long sourceId; + @Size(max = 8) + @Schema(description = "执行方式") + private String execMode; + @Size(max = 128) @Schema(description = "执行描述") private String description; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/ExecJobVO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/ExecJobVO.java index 553ba2af..5ff766f3 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/ExecJobVO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/ExecJobVO.java @@ -74,6 +74,12 @@ public class ExecJobVO implements Serializable { @Schema(description = "最近执行时间") private Date recentLogTime; + @Schema(description = "执行用户id") + private Long execUserId; + + @Schema(description = "执行用户名") + private String execUsername; + @Schema(description = "创建时间") private Date createTime; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/ExecLogVO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/ExecLogVO.java index 91a7839d..393b4462 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/ExecLogVO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/ExecLogVO.java @@ -44,6 +44,9 @@ public class ExecLogVO implements Serializable { @Schema(description = "id") private Long id; + @Schema(description = "执行方式") + private String execMode; + @Schema(description = "执行用户id") private Long userId; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/enums/ExecModeEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/enums/ExecModeEnum.java new file mode 100644 index 00000000..d1d9494d --- /dev/null +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/enums/ExecModeEnum.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2023 - present Jiahang Li (visor.orionsec.cn ljh1553488six@139.com). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.dromara.visor.module.asset.enums; + +/** + * 执行方式 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024/12/12 17:37 + */ +public enum ExecModeEnum { + + /** + * 手动执行 + */ + MANUAL, + + /** + * 定时任务 + */ + JOB, + +} diff --git a/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-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java index bd7742dd..a62b9e5c 100644 --- a/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-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java @@ -27,7 +27,6 @@ import org.dromara.visor.framework.common.utils.Valid; import org.dromara.visor.module.asset.dao.HostIdentityDAO; import org.dromara.visor.module.asset.dao.HostKeyDAO; import org.dromara.visor.module.asset.enums.HostSshAuthTypeEnum; -import org.dromara.visor.module.asset.enums.HostSshOsTypeEnum; import org.dromara.visor.module.asset.handler.host.config.model.HostSshConfigModel; import org.springframework.stereotype.Component; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/exec/command/handler/BaseExecCommandHandler.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/exec/command/handler/BaseExecCommandHandler.java index 27854dcc..61c7937e 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/exec/command/handler/BaseExecCommandHandler.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/exec/command/handler/BaseExecCommandHandler.java @@ -146,7 +146,7 @@ public abstract class BaseExecCommandHandler implements IExecCommandHandler { // 初始化日志 this.initLogOutputStream(); // 打开会话 - TerminalConnectDTO connect = terminalService.getTerminalConnectInfo(execHostCommand.getHostId()); + TerminalConnectDTO connect = terminalService.getTerminalConnectInfo(execHostCommand.getHostId(), execCommand.getUserId()); this.sessionStore = SessionStores.openSessionStore(connect); if (Booleans.isTrue(execCommand.getScriptExec())) { // 上传脚本文件 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/exec/job/ExecCommandJob.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/exec/job/ExecCommandJob.java index 18a6e1ee..05424b3e 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/exec/job/ExecCommandJob.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/exec/job/ExecCommandJob.java @@ -18,9 +18,11 @@ package org.dromara.visor.module.asset.handler.host.exec.job; import cn.orionsec.kit.spring.SpringHolder; import lombok.extern.slf4j.Slf4j; import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs; -import org.dromara.visor.framework.common.constant.Const; import org.dromara.visor.framework.common.constant.FieldConst; +import org.dromara.visor.module.asset.dao.ExecJobDAO; +import org.dromara.visor.module.asset.entity.domain.ExecJobDO; import org.dromara.visor.module.asset.entity.request.exec.ExecJobTriggerRequest; +import org.dromara.visor.module.asset.enums.ExecModeEnum; import org.dromara.visor.module.asset.service.ExecJobService; import org.quartz.Job; import org.quartz.JobExecutionContext; @@ -35,19 +37,28 @@ import org.quartz.JobExecutionContext; @Slf4j public class ExecCommandJob implements Job { + private static final ExecJobDAO execJobDAO = SpringHolder.getBean(ExecJobDAO.class); + private static final ExecJobService execJobService = SpringHolder.getBean(ExecJobService.class); @Override public void execute(JobExecutionContext context) { long id = context.getMergedJobDataMap().getLong(FieldConst.KEY); log.info("ExecCommandJob.execute id: {}", id); + // 查询任务 + ExecJobDO job = execJobDAO.selectById(id); + if (job == null) { + log.info("ExecCommandJob.execute absent id: {}", id); + return; + } // 执行命令 ExecJobTriggerRequest request = ExecJobTriggerRequest.builder() .id(id) - .userId(Const.SYSTEM_USER_ID) - .username(Const.SYSTEM_USERNAME) + .userId(job.getExecUserId()) + .username(job.getExecUsername()) + .execMode(ExecModeEnum.JOB.name()) .build(); - execJobService.triggerExecJob(request); + execJobService.triggerExecJob(request, job); // 清理日志上下文 OperatorLogs.clear(); } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/terminal/handler/TerminalCheckHandler.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/terminal/handler/TerminalCheckHandler.java index f41aef13..4bd59504 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/terminal/handler/TerminalCheckHandler.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/terminal/handler/TerminalCheckHandler.java @@ -95,7 +95,7 @@ public class TerminalCheckHandler extends AbstractTerminalHandler getExecJobPage(ExecJobQueryRequest request); + /** + * 设置执行用户 + * + * @param request request + * @return effect + */ + Integer setExecJobExecUser(ExecJobSetExecUserRequest request); + /** * 获取下一个执行序列 * @@ -112,7 +121,8 @@ public interface ExecJobService { * 触发任务 * * @param request request + * @param job job */ - void triggerExecJob(ExecJobTriggerRequest request); + void triggerExecJob(ExecJobTriggerRequest request, ExecJobDO job); } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/TerminalService.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/TerminalService.java index aaed144e..ac7cd8b5 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/TerminalService.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/TerminalService.java @@ -84,7 +84,7 @@ public interface TerminalService { * @param userId userId * @return session */ - TerminalConnectDTO getTerminalConnectInfo(Long userId, Long hostId); + TerminalConnectDTO getTerminalConnectInfo(Long hostId, Long userId); /** * 使用用户配置获取连接信息 @@ -93,6 +93,6 @@ public interface TerminalService { * @param userId userId * @return session */ - TerminalConnectDTO getTerminalConnectInfo(Long userId, HostDO host); + TerminalConnectDTO getTerminalConnectInfo(HostDO host, Long userId); } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/ExecCommandServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/ExecCommandServiceImpl.java index 297a085e..611802cf 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/ExecCommandServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/ExecCommandServiceImpl.java @@ -121,12 +121,14 @@ public class ExecCommandServiceImpl implements ExecCommandService { execRequest.setUserId(userId); execRequest.setUsername(user.getUsername()); execRequest.setSource(ExecSourceEnum.BATCH.name()); + execRequest.setExecMode(ExecModeEnum.MANUAL.name()); return this.execCommandWithSource(execRequest); } @Override @Transactional(rollbackFor = Exception.class) public ExecLogVO execCommandWithSource(ExecCommandExecDTO request) { + log.info("ExecService.execCommandWithSource start params: {}", JSON.toJSONString(request)); String command = request.getCommand(); List hostIdList = request.getHostIdList(); // 查询主机信息 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/ExecJobServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/ExecJobServiceImpl.java index cb454f40..457dedf8 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/ExecJobServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/ExecJobServiceImpl.java @@ -26,6 +26,7 @@ import lombok.extern.slf4j.Slf4j; import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs; import org.dromara.visor.framework.common.constant.Const; import org.dromara.visor.framework.common.constant.ErrorMessage; +import org.dromara.visor.framework.common.security.LoginUser; import org.dromara.visor.framework.common.utils.Valid; import org.dromara.visor.framework.job.core.utils.QuartzUtils; import org.dromara.visor.framework.security.core.utils.SecurityUtils; @@ -41,15 +42,13 @@ import org.dromara.visor.module.asset.entity.request.exec.*; import org.dromara.visor.module.asset.entity.vo.ExecJobVO; import org.dromara.visor.module.asset.entity.vo.ExecLogVO; import org.dromara.visor.module.asset.entity.vo.HostBaseVO; -import org.dromara.visor.module.asset.enums.ExecJobStatusEnum; -import org.dromara.visor.module.asset.enums.ExecSourceEnum; -import org.dromara.visor.module.asset.enums.HostTypeEnum; -import org.dromara.visor.module.asset.enums.ScriptExecEnum; +import org.dromara.visor.module.asset.enums.*; import org.dromara.visor.module.asset.handler.host.exec.job.ExecCommandJob; import org.dromara.visor.module.asset.service.AssetAuthorizedDataService; import org.dromara.visor.module.asset.service.ExecCommandService; import org.dromara.visor.module.asset.service.ExecJobHostService; import org.dromara.visor.module.asset.service.ExecJobService; +import org.dromara.visor.module.infra.api.SystemUserApi; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -57,7 +56,6 @@ import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; @@ -83,6 +81,9 @@ public class ExecJobServiceImpl implements ExecJobService { @Resource private HostDAO hostDAO; + @Resource + private SystemUserApi systemUserApi; + @Resource private ExecJobHostService execJobHostService; @@ -238,6 +239,30 @@ public class ExecJobServiceImpl implements ExecJobService { return dataGrid; } + @Override + public Integer setExecJobExecUser(ExecJobSetExecUserRequest request) { + Long id = request.getId(); + Long userId = request.getUserId(); + log.info("ExecJobService-setExecJobExecUser id: {}, userId: {}", id, userId); + // 查询任务 + ExecJobDO job = execJobDAO.selectById(id); + Valid.notNull(job, ErrorMessage.DATA_ABSENT); + // 查询用户 + String username = systemUserApi.getUsernameById(userId); + Valid.notNull(username, ErrorMessage.USER_ABSENT); + // 修改任务 + ExecJobDO update = new ExecJobDO(); + update.setId(id); + update.setExecUserId(userId); + update.setExecUsername(username); + int effect = execJobDAO.updateById(update); + // 设置日志参数 + OperatorLogs.add(OperatorLogs.NAME, job.getName()); + OperatorLogs.add(OperatorLogs.USERNAME, username); + log.info("ExecJobService-setExecJobExecUser effect: {}", effect); + return effect; + } + @Override public Integer getNextExecSeq(Long id) { // 自增 @@ -285,25 +310,27 @@ public class ExecJobServiceImpl implements ExecJobService { @Transactional(rollbackFor = Exception.class) public void manualTriggerExecJob(Long id) { log.info("ExecJobService.manualTriggerExecJob start id: {}", id); + // 查询任务 + ExecJobDO job = execJobDAO.selectById(id); + Valid.notNull(job, ErrorMessage.DATA_ABSENT); + // 触发请求 ExecJobTriggerRequest request = new ExecJobTriggerRequest(); request.setId(id); + request.setExecMode(ExecModeEnum.MANUAL.name()); // 设置执行用户 - Optional.ofNullable(SecurityUtils.getLoginUser()) - .ifPresent(s -> { - request.setUserId(s.getId()); - request.setUsername(s.getUsername()); - }); + LoginUser user = SecurityUtils.getLoginUser(); + if (user != null) { + request.setUserId(user.getId()); + request.setUsername(user.getUsername()); + } // 触发任务 - this.triggerExecJob(request); + this.triggerExecJob(request, job); } @Override @Transactional(rollbackFor = Exception.class) - public void triggerExecJob(ExecJobTriggerRequest request) { + public void triggerExecJob(ExecJobTriggerRequest request, ExecJobDO job) { Long id = request.getId(); - // 查询任务 - ExecJobDO job = execJobDAO.selectById(id); - Valid.notNull(job, ErrorMessage.DATA_ABSENT); // 查询任务主机 List hostIdList = execJobHostService.getHostIdByJobId(id); if (hostIdList.isEmpty()) { @@ -322,6 +349,7 @@ public class ExecJobServiceImpl implements ExecJobService { .username(request.getUsername()) .source(ExecSourceEnum.JOB.name()) .sourceId(id) + .execMode(request.getExecMode()) .execSeq(execSeq) .description(job.getName()) .timeout(job.getTimeout()) diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalServiceImpl.java index f11dece2..4488be7c 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalServiceImpl.java @@ -170,16 +170,16 @@ public class TerminalServiceImpl implements TerminalService { } @Override - public TerminalConnectDTO getTerminalConnectInfo(Long userId, Long hostId) { + public TerminalConnectDTO getTerminalConnectInfo(Long hostId, Long userId) { // 查询主机 HostDO host = hostDAO.selectById(hostId); Valid.notNull(host, ErrorMessage.HOST_ABSENT); // 获取配置 - return this.getTerminalConnectInfo(userId, host); + return this.getTerminalConnectInfo(host, userId); } @Override - public TerminalConnectDTO getTerminalConnectInfo(Long userId, HostDO host) { + public TerminalConnectDTO getTerminalConnectInfo(HostDO host, Long userId) { Long hostId = host.getId(); log.info("HostTerminalService.getTerminalConnectInfo hostId: {}, userId: {}", hostId, userId); // 验证主机是否有权限 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalSftpServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalSftpServiceImpl.java index c7483611..7e04d3aa 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalSftpServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalSftpServiceImpl.java @@ -131,7 +131,7 @@ public class TerminalSftpServiceImpl implements TerminalSftpService { InputStream in = null; try { // 获取终端连接信息 - TerminalConnectDTO connectInfo = terminalService.getTerminalConnectInfo(SecurityUtils.getLoginUserId(), cache.getHostId()); + TerminalConnectDTO connectInfo = terminalService.getTerminalConnectInfo(cache.getHostId(), SecurityUtils.getLoginUserId()); sessionStore = SessionStores.openSessionStore(connectInfo); executor = sessionStore.getSftpExecutor(connectInfo.getFileNameCharset()); executor.connect(); @@ -164,7 +164,7 @@ public class TerminalSftpServiceImpl implements TerminalSftpService { InputStream in = null; try { // 获取终端连接信息 - TerminalConnectDTO connectInfo = terminalService.getTerminalConnectInfo(SecurityUtils.getLoginUserId(), cache.getHostId()); + TerminalConnectDTO connectInfo = terminalService.getTerminalConnectInfo(cache.getHostId(), SecurityUtils.getLoginUserId()); sessionStore = SessionStores.openSessionStore(connectInfo); executor = sessionStore.getSftpExecutor(connectInfo.getFileNameCharset()); executor.connect(); diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/ExecJobMapper.xml b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/ExecJobMapper.xml index a6605473..dc415613 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/ExecJobMapper.xml +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/ExecJobMapper.xml @@ -14,6 +14,8 @@ + + @@ -23,7 +25,7 @@ - id, name, exec_seq, expression, timeout, script_exec, command, parameter_schema, status, recent_log_id, create_time, update_time, creator, updater, deleted + id, name, exec_seq, expression, timeout, script_exec, command, parameter_schema, status, recent_log_id, exec_user_id, exec_username, create_time, update_time, creator, updater, deleted diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/ExecLogMapper.xml b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/ExecLogMapper.xml index 2c49b99d..ab7845e5 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/ExecLogMapper.xml +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/ExecLogMapper.xml @@ -9,6 +9,7 @@ + @@ -27,7 +28,7 @@ - id, user_id, username, source, source_id, description, exec_seq, command, parameter_schema, timeout, script_exec, status, start_time, finish_time, create_time, update_time, creator, updater, deleted + id, user_id, username, source, source_id, exec_mode, description, exec_seq, command, parameter_schema, timeout, script_exec, status, start_time, finish_time, create_time, update_time, creator, updater, deleted