添加执行人.

This commit is contained in:
lijiahangmax
2024-12-12 21:35:05 +08:00
parent 247ae2c862
commit 824f7317d7
45 changed files with 369 additions and 142 deletions

View File

@@ -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

View File

@@ -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")

View File

@@ -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, "删除批量执行日志 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.H, DELETE_HOST, "删除批量执行主机日志 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(OperatorRiskLevel.H, CLEAR, "清理批量执行日志 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.L, DOWNLOAD, "下载批量执行日志 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(OperatorRiskLevel.M, INTERRUPT, "中断批量执行命令"),
new OperatorType(OperatorRiskLevel.M, INTERRUPT_HOST, "中断批量执行主机命令 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(H, DELETE, "删除批量执行日志 <sb>${count}</sb> 条"),
new OperatorType(H, DELETE_HOST, "删除批量执行主机日志 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(H, CLEAR, "清理批量执行日志 <sb>${count}</sb> 条"),
new OperatorType(L, DOWNLOAD, "下载批量执行日志 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(M, INTERRUPT, "中断批量执行命令"),
new OperatorType(M, INTERRUPT_HOST, "中断批量执行主机命令 <sb>${logId}</sb> <sb>${hostName}</sb>"),
};
}

View File

@@ -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, "执行主机命令"),
};
}

View File

@@ -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, "删除计划任务执行日志 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.H, DELETE_HOST, "删除计划任务执行主机日志 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(OperatorRiskLevel.H, CLEAR, "清理计划任务执行日志 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.L, DOWNLOAD, "下载计划任务执行日志 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(OperatorRiskLevel.M, INTERRUPT, "中断计划任务执行命令"),
new OperatorType(OperatorRiskLevel.M, INTERRUPT_HOST, "中断计划任务执行主机命令 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(H, DELETE, "删除计划任务执行日志 <sb>${count}</sb> 条"),
new OperatorType(H, DELETE_HOST, "删除计划任务执行主机日志 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(H, CLEAR, "清理计划任务执行日志 <sb>${count}</sb> 条"),
new OperatorType(L, DOWNLOAD, "下载计划任务执行日志 <sb>${logId}</sb> <sb>${hostName}</sb>"),
new OperatorType(M, INTERRUPT, "中断计划任务执行命令"),
new OperatorType(M, INTERRUPT_HOST, "中断计划任务执行主机命令 <sb>${logId}</sb> <sb>${hostName}</sb>"),
};
}

View File

@@ -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, "创建计划任务 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE, "更新计划任务 <sb>${before}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE_STATUS, "<sb>${statusName}</sb> 计划任务 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.M, TRIGGER, "手动触发计划任务 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除计划任务 <sb>${name}</sb>"),
new OperatorType(L, CREATE, "创建计划任务 <sb>${name}</sb>"),
new OperatorType(M, UPDATE, "更新计划任务 <sb>${before}</sb>"),
new OperatorType(M, UPDATE_STATUS, "<sb>${statusName}</sb> 计划任务 <sb>${name}</sb>"),
new OperatorType(M, TRIGGER, "手动触发计划任务 <sb>${name}</sb>"),
new OperatorType(M, SET_EXEC_USER, "修改计划任务 <sb>${name}</sb> 执行用户为 <sb>${username}</sb>"),
new OperatorType(H, DELETE, "删除计划任务 <sb>${name}</sb>"),
new OperatorType(H, IMPORT, "导入计划任务 <sb>${count}</sb> 条"),
new OperatorType(H, EXPORT, "导出计划任务 <sb>${count}</sb> 条"),
};
}

View File

@@ -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, "创建执行模板 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE, "更新执行模板 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除执行模板 <sb>${name}</sb>"),
new OperatorType(L, CREATE, "创建执行模板 <sb>${name}</sb>"),
new OperatorType(M, UPDATE, "更新执行模板 <sb>${name}</sb>"),
new OperatorType(H, DELETE, "删除执行模板 <sb>${name}</sb>"),
};
}

View File

@@ -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, "创建主机分组 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.L, RENAME, "重命名主机分组 <sb>${before}</sb> -> <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.L, MOVE, "移动主机分组 <sb>${source}</sb> 到 <sb>${target}(${position})</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除主机分组 <sb>${groupName}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE_REL, "修改分组内主机 <sb>${groupName}</sb>"),
new OperatorType(OperatorRiskLevel.H, GRANT, "将主机分组权限授予 <sb>${grantType}</sb> <sb>${grantName}</sb>"),
new OperatorType(L, CREATE, "创建主机分组 <sb>${name}</sb>"),
new OperatorType(L, RENAME, "重命名主机分组 <sb>${before}</sb> -> <sb>${name}</sb>"),
new OperatorType(L, MOVE, "移动主机分组 <sb>${source}</sb> 到 <sb>${target}(${position})</sb>"),
new OperatorType(H, DELETE, "删除主机分组 <sb>${groupName}</sb>"),
new OperatorType(M, UPDATE_REL, "修改分组内主机 <sb>${groupName}</sb>"),
new OperatorType(H, GRANT, "将主机分组权限授予 <sb>${grantType}</sb> <sb>${grantName}</sb>"),
};
}

View File

@@ -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, "创建主机身份 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.L, UPDATE, "修改主机身份 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除主机身份 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.H, GRANT, "将主机身份权限授予 <sb>${grantType}</sb> <sb>${grantName}</sb>"),
new OperatorType(L, CREATE, "创建主机身份 <sb>${name}</sb>"),
new OperatorType(L, UPDATE, "修改主机身份 <sb>${name}</sb>"),
new OperatorType(H, DELETE, "删除主机身份 <sb>${name}</sb>"),
new OperatorType(H, GRANT, "将主机身份权限授予 <sb>${grantType}</sb> <sb>${grantName}</sb>"),
};
}

View File

@@ -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, "创建主机密钥 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.L, UPDATE, "修改主机密钥 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除主机密钥 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.H, GRANT, "将主机密钥权限授予 <sb>${grantType}</sb> <sb>${grantName}</sb>"),
new OperatorType(L, CREATE, "创建主机密钥 <sb>${name}</sb>"),
new OperatorType(L, UPDATE, "修改主机密钥 <sb>${name}</sb>"),
new OperatorType(H, DELETE, "删除主机密钥 <sb>${name}</sb>"),
new OperatorType(H, GRANT, "将主机密钥权限授予 <sb>${grantType}</sb> <sb>${grantName}</sb>"),
};
}

View File

@@ -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, "创建主机 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.L, UPDATE, "修改主机 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除主机 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.M, UPDATE_STATUS, "修改主机状态 <sb>${name}</sb> - <sb>${status}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE_CONFIG, "修改主机配置 <sb>${name}</sb>"),
new OperatorType(L, CREATE, "创建主机 <sb>${name}</sb>"),
new OperatorType(L, UPDATE, "修改主机 <sb>${name}</sb>"),
new OperatorType(H, DELETE, "删除主机 <sb>${count}</sb> 条"),
new OperatorType(M, UPDATE_STATUS, "修改主机状态 <sb>${name}</sb> - <sb>${status}</sb>"),
new OperatorType(M, UPDATE_CONFIG, "修改主机配置 <sb>${name}</sb>"),
};
}

View File

@@ -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, "删除终端连接记录 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.H, CLEAR, "清空终端连接记录 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.M, FORCE_OFFLINE, "强制下线终端连接 <sb>${hostName}</sb>"),
new OperatorType(H, DELETE, "删除终端连接记录 <sb>${count}</sb> 条"),
new OperatorType(H, CLEAR, "清空终端连接记录 <sb>${count}</sb> 条"),
new OperatorType(M, FORCE_OFFLINE, "强制下线终端连接 <sb>${hostName}</sb>"),
};
}

View File

@@ -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} <sb>${hostName}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE_SFTP_LOG, "删除 SFTP 操作日志 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.L, SFTP_MKDIR, "创建文件夹 ${hostName} <sb>${path}</sb>"),
new OperatorType(OperatorRiskLevel.L, SFTP_TOUCH, "创建文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(OperatorRiskLevel.M, SFTP_MOVE, "移动文件 ${hostName} <sb>${path}</sb> 至 <sb>${target}</sb>"),
new OperatorType(OperatorRiskLevel.H, SFTP_REMOVE, "删除文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(OperatorRiskLevel.H, SFTP_TRUNCATE, "截断文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(OperatorRiskLevel.M, SFTP_CHMOD, "文件提权 ${hostName} <sb>${path}</sb> <sb>${mod}</sb>"),
new OperatorType(OperatorRiskLevel.M, SFTP_SET_CONTENT, "修改文件内容 ${hostName} <sb>${path}</sb>"),
new OperatorType(OperatorRiskLevel.M, SFTP_UPLOAD, "上传文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(OperatorRiskLevel.M, SFTP_DOWNLOAD, "下载文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(L, CONNECT, "连接主机 ${connectType} <sb>${hostName}</sb>"),
new OperatorType(H, DELETE_SFTP_LOG, "删除 SFTP 操作日志 <sb>${count}</sb> 条"),
new OperatorType(L, SFTP_MKDIR, "创建文件夹 ${hostName} <sb>${path}</sb>"),
new OperatorType(L, SFTP_TOUCH, "创建文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(M, SFTP_MOVE, "移动文件 ${hostName} <sb>${path}</sb> 至 <sb>${target}</sb>"),
new OperatorType(H, SFTP_REMOVE, "删除文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(H, SFTP_TRUNCATE, "截断文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(M, SFTP_CHMOD, "文件提权 ${hostName} <sb>${path}</sb> <sb>${mod}</sb>"),
new OperatorType(M, SFTP_SET_CONTENT, "修改文件内容 ${hostName} <sb>${path}</sb>"),
new OperatorType(M, SFTP_UPLOAD, "上传文件 ${hostName} <sb>${path}</sb>"),
new OperatorType(M, SFTP_DOWNLOAD, "下载文件 ${hostName} <sb>${path}</sb>"),
};
}

View File

@@ -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, "批量上传文件 <sb>${count}</sb> 个 (${name})"),
new OperatorType(OperatorRiskLevel.M, CANCEL, "取消上传文件 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除上传记录 <sb>${count}</sb>条"),
new OperatorType(OperatorRiskLevel.H, CLEAR, "清理上传记录 <sb>${count}</sb>条"),
new OperatorType(M, UPLOAD, "批量上传文件 <sb>${count}</sb> 个 (${name})"),
new OperatorType(M, CANCEL, "取消上传文件 <sb>${name}</sb>"),
new OperatorType(H, DELETE, "删除上传记录 <sb>${count}</sb>条"),
new OperatorType(H, CLEAR, "清理上传记录 <sb>${count}</sb>条"),
};
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -49,6 +49,9 @@ public class ExecCommandExecDTO {
@Schema(description = "来源id")
private Long sourceId;
@Schema(description = "执行方式")
private String execMode;
@Schema(description = "执行序列")
private Integer execSeq;

View File

@@ -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;
}

View File

@@ -50,4 +50,7 @@ public class ExecJobTriggerRequest implements Serializable {
@Schema(description = "执行用户名")
private String username;
@Schema(description = "执行方式")
private String execMode;
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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,
}

View File

@@ -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;

View File

@@ -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())) {
// 上传脚本文件

View File

@@ -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();
}

View File

@@ -95,7 +95,7 @@ public class TerminalCheckHandler extends AbstractTerminalHandler<TerminalCheckR
Exception ex = null;
try {
// 获取连接信息
connect = terminalService.getTerminalConnectInfo(userId, host);
connect = terminalService.getTerminalConnectInfo(host, userId);
connect.setConnectType(connectType.name());
// 设置到缓存中
channel.getAttributes().put(sessionId, connect);

View File

@@ -110,7 +110,7 @@ public class TransferHandler implements ITransferHandler {
if (terminalConnection == null) {
// 获取终端连接信息
Long userId = WebSockets.getAttr(channel, ExtraFieldConst.USER_ID);
TerminalConnectDTO connectInfo = terminalService.getTerminalConnectInfo(userId, hostId);
TerminalConnectDTO connectInfo = terminalService.getTerminalConnectInfo(hostId, userId);
terminalConnection = new TerminalConnection(connectInfo, SessionStores.openSessionStore(connectInfo));
terminalConnections.put(hostId, terminalConnection);
}

View File

@@ -16,6 +16,7 @@
package org.dromara.visor.module.asset.service;
import cn.orionsec.kit.lang.define.wrapper.DataGrid;
import org.dromara.visor.module.asset.entity.domain.ExecJobDO;
import org.dromara.visor.module.asset.entity.request.exec.*;
import org.dromara.visor.module.asset.entity.vo.ExecJobVO;
@@ -77,6 +78,14 @@ public interface ExecJobService {
*/
DataGrid<ExecJobVO> 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);
}

View File

@@ -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);
}

View File

@@ -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<Long> hostIdList = request.getHostIdList();
// 查询主机信息

View File

@@ -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<Long> 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())

View File

@@ -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);
// 验证主机是否有权限

View File

@@ -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();

View File

@@ -14,6 +14,8 @@
<result column="parameter_schema" property="parameterSchema"/>
<result column="status" property="status"/>
<result column="recent_log_id" property="recentLogId"/>
<result column="exec_user_id" property="execUserId"/>
<result column="exec_username" property="execUsername"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="creator" property="creator"/>
@@ -23,7 +25,7 @@
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
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
</sql>
<update id="incrExecSeq">

View File

@@ -9,6 +9,7 @@
<result column="username" property="username"/>
<result column="source" property="source"/>
<result column="source_id" property="sourceId"/>
<result column="exec_mode" property="execMode"/>
<result column="description" property="description"/>
<result column="exec_seq" property="execSeq"/>
<result column="command" property="command"/>
@@ -27,7 +28,7 @@
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
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
</sql>
<select id="getExecHistory" resultMap="BaseResultMap">

View File

@@ -16,10 +16,11 @@
package org.dromara.visor.module.infra.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.L;
/**
* 认证服务 操作日志类型
*
@@ -39,9 +40,9 @@ public class AuthenticationOperatorType extends InitializingOperatorTypes {
@Override
public OperatorType[] types() {
return new OperatorType[]{
new OperatorType(OperatorRiskLevel.L, LOGIN, "登录系统"),
new OperatorType(OperatorRiskLevel.L, LOGOUT, "登出系统"),
new OperatorType(OperatorRiskLevel.L, UPDATE_PASSWORD, "修改密码"),
new OperatorType(L, LOGIN, "登录系统"),
new OperatorType(L, LOGOUT, "登出系统"),
new OperatorType(L, UPDATE_PASSWORD, "修改密码"),
};
}

View File

@@ -16,10 +16,11 @@
package org.dromara.visor.module.infra.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 DictKeyOperatorType extends InitializingOperatorTypes {
@Override
public OperatorType[] types() {
return new OperatorType[]{
new OperatorType(OperatorRiskLevel.L, CREATE, "创建字典配置项 <sb>${keyName}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE, "更新字典配置项 <sb>${keyName}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除字典配置项 <sb>${keyName}</sb>"),
new OperatorType(L, CREATE, "创建字典配置项 <sb>${keyName}</sb>"),
new OperatorType(M, UPDATE, "更新字典配置项 <sb>${keyName}</sb>"),
new OperatorType(H, DELETE, "删除字典配置项 <sb>${keyName}</sb>"),
};
}

View File

@@ -16,10 +16,11 @@
package org.dromara.visor.module.infra.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 DictValueOperatorType extends InitializingOperatorTypes {
@Override
public OperatorType[] types() {
return new OperatorType[]{
new OperatorType(OperatorRiskLevel.L, CREATE, "创建字典配置值 <sb>${keyName}</sb> - <sb>${label}</sb> | <sb>${value}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE, "更新字典配置值 <sb>${keyName}</sb> - <sb>${label}</sb> | <sb>${value}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除字典配置值 <sb>${value}</sb>"),
new OperatorType(L, CREATE, "创建字典配置值 <sb>${keyName}</sb> - <sb>${label}</sb> | <sb>${value}</sb>"),
new OperatorType(M, UPDATE, "更新字典配置值 <sb>${keyName}</sb> - <sb>${label}</sb> | <sb>${value}</sb>"),
new OperatorType(H, DELETE, "删除字典配置值 <sb>${value}</sb>"),
};
}

View File

@@ -16,10 +16,11 @@
package org.dromara.visor.module.infra.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;
/**
* 操作日志 操作日志类型
*
@@ -37,8 +38,8 @@ public class OperatorLogOperatorType extends InitializingOperatorTypes {
@Override
public OperatorType[] types() {
return new OperatorType[]{
new OperatorType(OperatorRiskLevel.H, DELETE, "删除操作日志 <sb>${count}</sb> 条"),
new OperatorType(OperatorRiskLevel.H, CLEAR, "清空操作日志 <sb>${count}</sb> 条"),
new OperatorType(H, DELETE, "删除操作日志 <sb>${count}</sb> 条"),
new OperatorType(H, CLEAR, "清空操作日志 <sb>${count}</sb> 条"),
};
}

View File

@@ -16,10 +16,11 @@
package org.dromara.visor.module.infra.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.*;
/**
* 系统菜单 操作日志类型
*
@@ -41,10 +42,10 @@ public class SystemMenuOperatorType extends InitializingOperatorTypes {
@Override
public OperatorType[] types() {
return new OperatorType[]{
new OperatorType(OperatorRiskLevel.L, CREATE, "创建菜单 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.L, UPDATE, "修改菜单 <sb>${name}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE_STATUS, "修改菜单状态 <sb>${name}</sb> - <sb>${label}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除菜单 <sb>${name}</sb>"),
new OperatorType(L, CREATE, "创建菜单 <sb>${name}</sb>"),
new OperatorType(L, UPDATE, "修改菜单 <sb>${name}</sb>"),
new OperatorType(M, UPDATE_STATUS, "修改菜单状态 <sb>${name}</sb> - <sb>${label}</sb>"),
new OperatorType(H, DELETE, "删除菜单 <sb>${name}</sb>"),
};
}

View File

@@ -16,10 +16,11 @@
package org.dromara.visor.module.infra.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 SystemRoleOperatorType extends InitializingOperatorTypes {
@Override
public OperatorType[] types() {
return new OperatorType[]{
new OperatorType(OperatorRiskLevel.L, CREATE, "创建角色 <sb>${name}(${code})</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE, "修改角色 <sb>${name}(${code})</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE_STATUS, "修改角色状态 <sb>${name}(${code})</sb> - <sb>${statusName}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除角色 <sb>${name}(${code})</sb>"),
new OperatorType(OperatorRiskLevel.M, GRANT_MENU, "分配角色菜单 <sb>${name}(${code})</sb>"),
new OperatorType(L, CREATE, "创建角色 <sb>${name}(${code})</sb>"),
new OperatorType(M, UPDATE, "修改角色 <sb>${name}(${code})</sb>"),
new OperatorType(M, UPDATE_STATUS, "修改角色状态 <sb>${name}(${code})</sb> - <sb>${statusName}</sb>"),
new OperatorType(H, DELETE, "删除角色 <sb>${name}(${code})</sb>"),
new OperatorType(M, GRANT_MENU, "分配角色菜单 <sb>${name}(${code})</sb>"),
};
}

View File

@@ -16,10 +16,11 @@
package org.dromara.visor.module.infra.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.*;
/**
* 系统用户 操作日志类型
*
@@ -47,13 +48,13 @@ public class SystemUserOperatorType extends InitializingOperatorTypes {
@Override
public OperatorType[] types() {
return new OperatorType[]{
new OperatorType(OperatorRiskLevel.L, CREATE, "创建用户 <sb>${username}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE, "修改用户 <sb>${username}</sb>"),
new OperatorType(OperatorRiskLevel.M, UPDATE_STATUS, "修改用户状态 <sb>${username}</sb> - <sb>${statusName}</sb>"),
new OperatorType(OperatorRiskLevel.M, GRANT_ROLE, "分配用户角色 <sb>${username}</sb>"),
new OperatorType(OperatorRiskLevel.H, RESET_PASSWORD, "重置用户密码 <sb>${username}</sb>"),
new OperatorType(OperatorRiskLevel.H, DELETE, "删除用户 <sb>${username}</sb>"),
new OperatorType(OperatorRiskLevel.M, OFFLINE, "下线用户会话 <sb>${username}</sb>"),
new OperatorType(L, CREATE, "创建用户 <sb>${username}</sb>"),
new OperatorType(M, UPDATE, "修改用户 <sb>${username}</sb>"),
new OperatorType(M, UPDATE_STATUS, "修改用户状态 <sb>${username}</sb> - <sb>${statusName}</sb>"),
new OperatorType(M, GRANT_ROLE, "分配用户角色 <sb>${username}</sb>"),
new OperatorType(H, RESET_PASSWORD, "重置用户密码 <sb>${username}</sb>"),
new OperatorType(H, DELETE, "删除用户 <sb>${username}</sb>"),
new OperatorType(M, OFFLINE, "下线用户会话 <sb>${username}</sb>"),
};
}

View File

@@ -37,6 +37,7 @@ export interface ExecLogQueryResponse extends TableData, ExecLogQueryExtraRespon
status: string;
startTime: number;
finishTime: number;
execMode: string;
hostIdList: Array<number>;
}

View File

@@ -58,12 +58,22 @@ export interface ExecJobQueryResponse extends TableData {
recentLogId: number;
recentLogStatus: string;
recentLogTime: number;
execUserId: number;
execUsername: string;
createTime: number;
updateTime: number;
hostIdList: Array<number>;
hostList: Array<HostQueryResponse>;
}
/**
* 设置计划任务执行用户
*/
export interface ExecJobSetExecUserRequest {
id: number;
userId: number;
}
/**
* 创建计划任务
*/
@@ -106,6 +116,13 @@ export function getExecJobPage(request: ExecJobQueryRequest) {
return axios.post<DataGrid<ExecJobQueryResponse>>('/asset/exec-job/query', request);
}
/**
* 设置计划任务执行用户
*/
export function setExecJobExecUser(request: ExecJobSetExecUserRequest) {
return axios.put<number>('/exec/exec-job/set-exec-user', request);
}
/**
* 删除计划任务
*/