diff --git a/orion-visor-launch/src/main/resources/application.yaml b/orion-visor-launch/src/main/resources/application.yaml index 3b5f9f8e..32ce71be 100644 --- a/orion-visor-launch/src/main/resources/application.yaml +++ b/orion-visor-launch/src/main/resources/application.yaml @@ -197,8 +197,8 @@ app: exec-log: enabled: false keep-period: 30 - # 主机连接日志 - host-connect-log: + # 终端连接日志 + terminal-connect-log: enabled: false keep-period: 30 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostConnectLogController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostConnectLogController.java deleted file mode 100644 index 41b98eca..00000000 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/HostConnectLogController.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * 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 com.orion.visor.module.asset.controller; - -import com.orion.lang.define.wrapper.DataGrid; -import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; -import com.orion.visor.framework.common.validator.group.Id; -import com.orion.visor.framework.common.validator.group.Page; -import com.orion.visor.framework.log.core.annotation.IgnoreLog; -import com.orion.visor.framework.log.core.enums.IgnoreLogMode; -import com.orion.visor.framework.web.core.annotation.DemoDisableApi; -import com.orion.visor.framework.web.core.annotation.RestWrapper; -import com.orion.visor.module.asset.define.operator.HostConnectLogOperatorType; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogClearRequest; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogQueryRequest; -import com.orion.visor.module.asset.entity.vo.HostConnectLogVO; -import com.orion.visor.module.asset.service.HostConnectLogService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.extern.slf4j.Slf4j; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.List; - -/** - * 主机连接日志 api - * - * @author Jiahang Li - * @version 1.0.0 - * @since 2023-12-26 22:09 - */ -@Tag(name = "asset - 主机连接日志服务") -@Slf4j -@Validated -@RestWrapper -@RestController -@RequestMapping("/asset/host-connect-log") -public class HostConnectLogController { - - @Resource - private HostConnectLogService hostConnectLogService; - - @IgnoreLog(IgnoreLogMode.RET) - @PostMapping("/query") - @Operation(summary = "分页查询主机连接日志") - @PreAuthorize("@ss.hasPermission('asset:host-connect-log:management:query')") - public DataGrid getHostConnectLogPage(@Validated(Page.class) @RequestBody HostConnectLogQueryRequest request) { - return hostConnectLogService.getHostConnectLogPage(request); - } - - @PostMapping("/count") - @Operation(summary = "查询主机连接日志数量") - @PreAuthorize("@ss.hasPermission('asset:host-connect-log:management:query')") - public Long getHostConnectLogCount(@Validated @RequestBody HostConnectLogQueryRequest request) { - return hostConnectLogService.getHostConnectLogCount(request); - } - - @IgnoreLog(IgnoreLogMode.RET) - @PostMapping("/session") - @Operation(summary = "查询全部主机连接会话") - @PreAuthorize("@ss.hasPermission('asset:host-connect-session:management:query')") - public List getHostConnectSessions(@Validated @RequestBody HostConnectLogQueryRequest request) { - return hostConnectLogService.getHostConnectSessions(request); - } - - @IgnoreLog(IgnoreLogMode.RET) - @PostMapping("/latest-connect") - @Operation(summary = "查询用户最近连接的主机") - public List getLatestConnectHostId(@RequestBody HostConnectLogQueryRequest request) { - return hostConnectLogService.getLatestConnectHostId(request); - } - - @OperatorLog(HostConnectLogOperatorType.DELETE) - @DeleteMapping("/delete") - @Operation(summary = "删除主机连接日志") - @Parameter(name = "idList", description = "idList", required = true) - @PreAuthorize("@ss.hasPermission('asset:host-connect-log:management:delete')") - public Integer deleteHostConnectLog(@RequestParam("idList") List idList) { - return hostConnectLogService.deleteHostConnectLog(idList); - } - - @OperatorLog(HostConnectLogOperatorType.CLEAR) - @PostMapping("/clear") - @Operation(summary = "清空主机连接日志") - @PreAuthorize("@ss.hasPermission('asset:host-connect-log:management:clear')") - public Integer clearHostConnectLog(@Validated @RequestBody HostConnectLogClearRequest request) { - return hostConnectLogService.clearHostConnectLog(request); - } - - @DemoDisableApi - @OperatorLog(HostConnectLogOperatorType.FORCE_OFFLINE) - @PutMapping("/force-offline") - @Operation(summary = "强制断开主机连接") - @PreAuthorize("@ss.hasAnyPermission('asset:host-connect-log:management:force-offline', 'asset:host-connect-session:management:force-offline')") - public Integer forceOffline(@Validated(Id.class) @RequestBody HostConnectLogQueryRequest request) { - return hostConnectLogService.forceOffline(request); - } - -} - diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/TerminalConnectLogController.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/TerminalConnectLogController.java new file mode 100644 index 00000000..872c00bf --- /dev/null +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/controller/TerminalConnectLogController.java @@ -0,0 +1,117 @@ +/* + * 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 com.orion.visor.module.asset.controller; + +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.visor.framework.biz.operator.log.core.annotation.OperatorLog; +import com.orion.visor.framework.common.validator.group.Id; +import com.orion.visor.framework.common.validator.group.Page; +import com.orion.visor.framework.log.core.annotation.IgnoreLog; +import com.orion.visor.framework.log.core.enums.IgnoreLogMode; +import com.orion.visor.framework.web.core.annotation.DemoDisableApi; +import com.orion.visor.framework.web.core.annotation.RestWrapper; +import com.orion.visor.module.asset.define.operator.TerminalConnectLogOperatorType; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogClearRequest; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogQueryRequest; +import com.orion.visor.module.asset.entity.vo.TerminalConnectLogVO; +import com.orion.visor.module.asset.service.TerminalConnectLogService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 终端连接日志 api + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-12-26 22:09 + */ +@Tag(name = "asset - 终端连接日志服务") +@Slf4j +@Validated +@RestWrapper +@RestController +@RequestMapping("/asset/terminal-connect-log") +public class TerminalConnectLogController { + + @Resource + private TerminalConnectLogService terminalConnectLogService; + + @IgnoreLog(IgnoreLogMode.RET) + @PostMapping("/query") + @Operation(summary = "分页查询终端连接日志") + @PreAuthorize("@ss.hasPermission('asset:terminal-connect-log:management:query')") + public DataGrid getTerminalConnectLogPage(@Validated(Page.class) @RequestBody TerminalConnectLogQueryRequest request) { + return terminalConnectLogService.getTerminalConnectLogPage(request); + } + + @PostMapping("/count") + @Operation(summary = "查询终端连接日志数量") + @PreAuthorize("@ss.hasPermission('asset:terminal-connect-log:management:query')") + public Long getTerminalConnectLogCount(@Validated @RequestBody TerminalConnectLogQueryRequest request) { + return terminalConnectLogService.getTerminalConnectLogCount(request); + } + + @IgnoreLog(IgnoreLogMode.RET) + @PostMapping("/session") + @Operation(summary = "查询全部终端连接会话") + @PreAuthorize("@ss.hasPermission('asset:terminal-connect-session:management:query')") + public List getHostConnectSessions(@Validated @RequestBody TerminalConnectLogQueryRequest request) { + return terminalConnectLogService.getTerminalConnectSessions(request); + } + + @IgnoreLog(IgnoreLogMode.RET) + @PostMapping("/latest-connect") + @Operation(summary = "查询用户最近连接的主机") + public List getLatestConnectHostId(@RequestBody TerminalConnectLogQueryRequest request) { + return terminalConnectLogService.getLatestConnectHostId(request); + } + + @OperatorLog(TerminalConnectLogOperatorType.DELETE) + @DeleteMapping("/delete") + @Operation(summary = "删除终端连接日志") + @Parameter(name = "idList", description = "idList", required = true) + @PreAuthorize("@ss.hasPermission('asset:terminal-connect-log:management:delete')") + public Integer deleteTerminalConnectLog(@RequestParam("idList") List idList) { + return terminalConnectLogService.deleteTerminalConnectLog(idList); + } + + @OperatorLog(TerminalConnectLogOperatorType.CLEAR) + @PostMapping("/clear") + @Operation(summary = "清空终端连接日志") + @PreAuthorize("@ss.hasPermission('asset:terminal-connect-log:management:clear')") + public Integer clearTerminalConnectLog(@Validated @RequestBody TerminalConnectLogClearRequest request) { + return terminalConnectLogService.clearTerminalConnectLog(request); + } + + @DemoDisableApi + @OperatorLog(TerminalConnectLogOperatorType.FORCE_OFFLINE) + @PutMapping("/force-offline") + @Operation(summary = "强制断开终端连接") + @PreAuthorize("@ss.hasAnyPermission('asset:terminal-connect-log:management:force-offline', 'asset:terminal-connect-session:management:force-offline')") + public Integer forceOffline(@Validated(Id.class) @RequestBody TerminalConnectLogQueryRequest request) { + return terminalConnectLogService.forceOffline(request); + } + +} + diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/convert/HostConnectLogConvert.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/convert/TerminalConnectLogConvert.java similarity index 53% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/convert/HostConnectLogConvert.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/convert/TerminalConnectLogConvert.java index 8b706824..9b2b7f2c 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/convert/HostConnectLogConvert.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/convert/TerminalConnectLogConvert.java @@ -15,36 +15,36 @@ */ package com.orion.visor.module.asset.convert; -import com.orion.visor.module.asset.entity.domain.HostConnectLogDO; +import com.orion.visor.module.asset.entity.domain.TerminalConnectLogDO; import com.orion.visor.module.asset.entity.dto.HostTerminalConnectDTO; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogCreateRequest; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogQueryRequest; -import com.orion.visor.module.asset.entity.vo.HostConnectLogVO; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogCreateRequest; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogQueryRequest; +import com.orion.visor.module.asset.entity.vo.TerminalConnectLogVO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import java.util.List; /** - * 主机连接日志 内部对象转换器 + * 终端连接日志 内部对象转换器 * * @author Jiahang Li * @version 1.0.0 * @since 2023-12-26 22:09 */ @Mapper -public interface HostConnectLogConvert { +public interface TerminalConnectLogConvert { - HostConnectLogConvert MAPPER = Mappers.getMapper(HostConnectLogConvert.class); + TerminalConnectLogConvert MAPPER = Mappers.getMapper(TerminalConnectLogConvert.class); - HostConnectLogDO to(HostConnectLogCreateRequest request); + TerminalConnectLogDO to(TerminalConnectLogCreateRequest request); - HostConnectLogDO to(HostConnectLogQueryRequest request); + TerminalConnectLogDO to(TerminalConnectLogQueryRequest request); - HostConnectLogVO to(HostConnectLogDO domain); + TerminalConnectLogVO to(TerminalConnectLogDO domain); - HostConnectLogCreateRequest to(HostTerminalConnectDTO dto); + TerminalConnectLogCreateRequest to(HostTerminalConnectDTO dto); - List to(List list); + List to(List list); } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/dao/HostConnectLogDAO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/dao/TerminalConnectLogDAO.java similarity index 86% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/dao/HostConnectLogDAO.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/dao/TerminalConnectLogDAO.java index 7a4f455d..77bdd4e2 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/dao/HostConnectLogDAO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/dao/TerminalConnectLogDAO.java @@ -16,21 +16,21 @@ package com.orion.visor.module.asset.dao; import com.orion.visor.framework.mybatis.core.mapper.IMapper; -import com.orion.visor.module.asset.entity.domain.HostConnectLogDO; +import com.orion.visor.module.asset.entity.domain.TerminalConnectLogDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** - * 主机连接日志 Mapper 接口 + * 终端连接日志 Mapper 接口 * * @author Jiahang Li * @version 1.0.0 * @since 2023-12-26 22:09 */ @Mapper -public interface HostConnectLogDAO extends IMapper { +public interface TerminalConnectLogDAO extends IMapper { /** * 查询最近连接的 hostId diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/config/AppHostConnectLogAutoClearConfig.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/config/AppTerminalConnectLogAutoClearConfig.java similarity index 85% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/config/AppHostConnectLogAutoClearConfig.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/config/AppTerminalConnectLogAutoClearConfig.java index ec2a82a3..c745780b 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/config/AppHostConnectLogAutoClearConfig.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/config/AppTerminalConnectLogAutoClearConfig.java @@ -22,7 +22,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** - * 主机连接日志自动清理配置 + * 终端连接日志自动清理配置 * * @author Jiahang Li * @version 1.0.0 @@ -31,7 +31,7 @@ import org.springframework.stereotype.Component; @Data @Component @EqualsAndHashCode(callSuper = true) -@ConfigurationProperties(prefix = "app.auto-clear.host-connect-log") -public class AppHostConnectLogAutoClearConfig extends AutoClearConfig { +@ConfigurationProperties(prefix = "app.auto-clear.terminal-connect-log") +public class AppTerminalConnectLogAutoClearConfig extends AutoClearConfig { } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/operator/HostConnectLogOperatorType.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/operator/TerminalConnectLogOperatorType.java similarity index 72% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/operator/HostConnectLogOperatorType.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/operator/TerminalConnectLogOperatorType.java index 7b44046d..79067726 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/operator/HostConnectLogOperatorType.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/define/operator/TerminalConnectLogOperatorType.java @@ -23,27 +23,27 @@ import static com.orion.visor.framework.biz.operator.log.core.enums.OperatorRisk import static com.orion.visor.framework.biz.operator.log.core.enums.OperatorRiskLevel.M; /** - * 主机连接日志 操作日志类型 + * 终端连接日志 操作日志类型 * * @author Jiahang Li * @version 1.0.0 * @since 2024/3/2 14:37 */ -@Module("asset:host-connect-log") -public class HostConnectLogOperatorType extends InitializingOperatorTypes { +@Module("asset:terminal-connect-log") +public class TerminalConnectLogOperatorType extends InitializingOperatorTypes { - public static final String DELETE = "host-connect-log:delete"; + public static final String DELETE = "terminal-connect-log:delete"; - public static final String CLEAR = "host-connect-log:clear"; + public static final String CLEAR = "terminal-connect-log:clear"; - public static final String FORCE_OFFLINE = "host-connect-log:force-offline"; + public static final String FORCE_OFFLINE = "terminal-connect-log:force-offline"; @Override public OperatorType[] types() { return new OperatorType[]{ - new OperatorType(H, DELETE, "删除主机连接记录 ${count} 条"), - new OperatorType(H, CLEAR, "清空主机连接记录 ${count} 条"), - new OperatorType(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/com/orion/visor/module/asset/entity/domain/HostConnectLogDO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/TerminalConnectLogDO.java similarity index 91% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/HostConnectLogDO.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/TerminalConnectLogDO.java index 29c0bfb6..b7033316 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/HostConnectLogDO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/domain/TerminalConnectLogDO.java @@ -26,7 +26,7 @@ import lombok.*; import java.util.Date; /** - * 主机连接日志 实体对象 + * 终端连接日志 实体对象 * * @author Jiahang Li * @version 1.0.0 @@ -37,9 +37,9 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper = true) -@TableName(value = "host_connect_log", autoResultMap = true) -@Schema(name = "HostConnectLogDO", description = "主机连接日志 实体对象") -public class HostConnectLogDO extends BaseDO { +@TableName(value = "terminal_connect_log", autoResultMap = true) +@Schema(name = "TerminalConnectLogDO", description = "终端连接日志 实体对象") +public class TerminalConnectLogDO extends BaseDO { private static final long serialVersionUID = 1L; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/dto/HostConnectLogExtraDTO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/dto/TerminalConnectLogExtraDTO.java similarity index 90% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/dto/HostConnectLogExtraDTO.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/dto/TerminalConnectLogExtraDTO.java index 83d5002c..531f2a5c 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/dto/HostConnectLogExtraDTO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/dto/TerminalConnectLogExtraDTO.java @@ -22,7 +22,7 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * 主机连接日志拓展信息对象 + * 终端连接日志拓展信息对象 * * @author Jiahang Li * @version 1.0.0 @@ -32,8 +32,8 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor -@Schema(name = "HostConnectLogExtraDTO", description = "主机连接日志拓展信息对象") -public class HostConnectLogExtraDTO { +@Schema(name = "TerminalConnectLogExtraDTO", description = "终端连接日志拓展信息对象") +public class TerminalConnectLogExtraDTO { @Schema(description = "hostId") private Long hostId; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogClearRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogClearRequest.java similarity index 83% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogClearRequest.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogClearRequest.java index de2cab94..1c7c8d31 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogClearRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogClearRequest.java @@ -25,7 +25,7 @@ import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; /** - * 主机连接日志 清理请求对象 + * 终端连接日志 清理请求对象 * * @author Jiahang Li * @version 1.0.0 @@ -33,8 +33,8 @@ import javax.validation.constraints.NotNull; */ @Data @EqualsAndHashCode(callSuper = true) -@Schema(name = "HostConnectLogClearRequest", description = "主机连接日志 清理请求对象") -public class HostConnectLogClearRequest extends HostConnectLogQueryRequest implements DataClearRequest { +@Schema(name = "TerminalConnectLogClearRequest", description = "终端连接日志 清理请求对象") +public class TerminalConnectLogClearRequest extends TerminalConnectLogQueryRequest implements DataClearRequest { @NotNull @Min(value = 1) diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogCreateRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogCreateRequest.java similarity index 89% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogCreateRequest.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogCreateRequest.java index c1f1a106..bd414b6b 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogCreateRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogCreateRequest.java @@ -25,7 +25,7 @@ import javax.validation.constraints.Size; import java.util.Map; /** - * 主机连接日志 创建请求对象 + * 终端连接日志 创建请求对象 * * @author Jiahang Li * @version 1.0.0 @@ -35,8 +35,8 @@ import java.util.Map; @Builder @NoArgsConstructor @AllArgsConstructor -@Schema(name = "HostConnectLogCreateRequest", description = "主机连接日志 创建请求对象") -public class HostConnectLogCreateRequest { +@Schema(name = "TerminalConnectLogCreateRequest", description = "终端连接日志 创建请求对象") +public class TerminalConnectLogCreateRequest { @Schema(description = "用户id") private Long userId; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogQueryRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogQueryRequest.java similarity index 91% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogQueryRequest.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogQueryRequest.java index c969c768..5b7d756e 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/HostConnectLogQueryRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/request/host/TerminalConnectLogQueryRequest.java @@ -27,7 +27,7 @@ import java.util.Date; import java.util.List; /** - * 主机连接日志 查询请求对象 + * 终端连接日志 查询请求对象 * * @author Jiahang Li * @version 1.0.0 @@ -38,8 +38,8 @@ import java.util.List; @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper = true) -@Schema(name = "HostConnectLogQueryRequest", description = "主机连接日志 查询请求对象") -public class HostConnectLogQueryRequest extends PageRequest { +@Schema(name = "TerminalConnectLogQueryRequest", description = "终端连接日志 查询请求对象") +public class TerminalConnectLogQueryRequest extends PageRequest { @NotNull(groups = Id.class) @Schema(description = "id") diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/vo/HostConnectLogVO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/vo/TerminalConnectLogVO.java similarity index 85% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/vo/HostConnectLogVO.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/vo/TerminalConnectLogVO.java index 429ca5c5..59c5ed8f 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/vo/HostConnectLogVO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/entity/vo/TerminalConnectLogVO.java @@ -15,7 +15,7 @@ */ package com.orion.visor.module.asset.entity.vo; -import com.orion.visor.module.asset.entity.dto.HostConnectLogExtraDTO; +import com.orion.visor.module.asset.entity.dto.TerminalConnectLogExtraDTO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; @@ -26,7 +26,7 @@ import java.io.Serializable; import java.util.Date; /** - * 主机连接日志 视图响应对象 + * 终端连接日志 视图响应对象 * * @author Jiahang Li * @version 1.0.0 @@ -36,8 +36,8 @@ import java.util.Date; @Builder @NoArgsConstructor @AllArgsConstructor -@Schema(name = "HostConnectLogVO", description = "主机连接日志 视图响应对象") -public class HostConnectLogVO implements Serializable { +@Schema(name = "TerminalConnectLogVO", description = "终端连接日志 视图响应对象") +public class TerminalConnectLogVO implements Serializable { private static final long serialVersionUID = 1L; @@ -72,6 +72,6 @@ public class HostConnectLogVO implements Serializable { private Date endTime; @Schema(description = "额外信息") - private HostConnectLogExtraDTO extra; + private TerminalConnectLogExtraDTO extra; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostConnectStatusEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/TerminalConnectStatusEnum.java similarity index 88% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostConnectStatusEnum.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/TerminalConnectStatusEnum.java index 4c8cb492..0e42dcb4 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostConnectStatusEnum.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/TerminalConnectStatusEnum.java @@ -20,13 +20,13 @@ import com.orion.lang.utils.collect.Lists; import java.util.List; /** - * 主机连接状态 + * 终端连接状态 * * @author Jiahang Li * @version 1.0.0 * @since 2023/12/26 22:27 */ -public enum HostConnectStatusEnum { +public enum TerminalConnectStatusEnum { /** * 连接中 @@ -52,11 +52,11 @@ public enum HostConnectStatusEnum { public static final List FINISH_STATUS_LIST = Lists.of(COMPLETE.name(), FAILED.name(), FORCE_OFFLINE.name()); - public static HostConnectStatusEnum of(String type) { + public static TerminalConnectStatusEnum of(String type) { if (type == null) { return null; } - for (HostConnectStatusEnum value : values()) { + for (TerminalConnectStatusEnum value : values()) { if (value.name().equals(type)) { return value; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostConnectTypeEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/TerminalConnectTypeEnum.java similarity index 85% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostConnectTypeEnum.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/TerminalConnectTypeEnum.java index 36d3c5d3..42c3c8ab 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/HostConnectTypeEnum.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/enums/TerminalConnectTypeEnum.java @@ -16,13 +16,13 @@ package com.orion.visor.module.asset.enums; /** - * 主机连接类型 + * 终端连接类型 * * @author Jiahang Li * @version 1.0.0 * @since 2023/12/26 22:27 */ -public enum HostConnectTypeEnum { +public enum TerminalConnectTypeEnum { /** * ssh @@ -36,11 +36,11 @@ public enum HostConnectTypeEnum { ; - public static HostConnectTypeEnum of(String type) { + public static TerminalConnectTypeEnum of(String type) { if (type == null) { return null; } - for (HostConnectTypeEnum value : values()) { + for (TerminalConnectTypeEnum value : values()) { if (value.name().equalsIgnoreCase(type)) { return value; } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/InputTypeEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/InputTypeEnum.java index d537089c..d83b0059 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/InputTypeEnum.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/InputTypeEnum.java @@ -35,7 +35,7 @@ import javax.annotation.PostConstruct; public enum InputTypeEnum { /** - * 主机连接检查 + * 终端连接检查 */ CHECK("ck", TerminalCheckHandler.class, diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/OutputTypeEnum.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/OutputTypeEnum.java index 9089b479..71ac0887 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/OutputTypeEnum.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/enums/OutputTypeEnum.java @@ -31,12 +31,12 @@ import lombok.Getter; public enum OutputTypeEnum { /** - * 主机连接检查 + * 终端连接检查 */ CHECK("ck", "${type}|${sessionId}|${result}|${msg}"), /** - * 主机连接 + * 终端连接 */ CONNECT("co", "${type}|${sessionId}|${result}|${msg}"), diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/TerminalCheckHandler.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/TerminalCheckHandler.java index 69cee445..80c0ba69 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/TerminalCheckHandler.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/handler/TerminalCheckHandler.java @@ -28,19 +28,19 @@ import com.orion.visor.framework.common.enums.BooleanBit; import com.orion.visor.framework.websocket.core.utils.WebSockets; import com.orion.visor.module.asset.dao.HostDAO; import com.orion.visor.module.asset.define.operator.HostTerminalOperatorType; -import com.orion.visor.module.asset.entity.domain.HostConnectLogDO; +import com.orion.visor.module.asset.entity.domain.TerminalConnectLogDO; import com.orion.visor.module.asset.entity.domain.HostDO; import com.orion.visor.module.asset.entity.dto.HostTerminalConnectDTO; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogCreateRequest; -import com.orion.visor.module.asset.enums.HostConnectStatusEnum; -import com.orion.visor.module.asset.enums.HostConnectTypeEnum; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogCreateRequest; +import com.orion.visor.module.asset.enums.TerminalConnectStatusEnum; +import com.orion.visor.module.asset.enums.TerminalConnectTypeEnum; import com.orion.visor.module.asset.handler.host.terminal.constant.TerminalMessage; import com.orion.visor.module.asset.handler.host.terminal.enums.OutputTypeEnum; import com.orion.visor.module.asset.handler.host.terminal.model.request.TerminalCheckRequest; import com.orion.visor.module.asset.handler.host.terminal.model.response.TerminalCheckResponse; import com.orion.visor.module.asset.handler.host.terminal.session.ITerminalSession; import com.orion.visor.module.asset.handler.host.terminal.utils.TerminalUtils; -import com.orion.visor.module.asset.service.HostConnectLogService; +import com.orion.visor.module.asset.service.TerminalConnectLogService; import com.orion.visor.module.asset.service.HostTerminalService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -50,7 +50,7 @@ import javax.annotation.Resource; import java.util.Map; /** - * 主机连接检查 + * 终端连接检查 * * @author Jiahang Li * @version 1.0.0 @@ -67,7 +67,7 @@ public class TerminalCheckHandler extends AbstractTerminalHandler { @Resource - private HostConnectLogService hostConnectLogService; + private TerminalConnectLogService terminalConnectLogService; @Override public void handle(WebSocketSession channel, TerminalConnectRequest payload) { String sessionId = payload.getSessionId(); log.info("TerminalConnectHandler-handle start sessionId: {}", sessionId); - // 获取主机连接信息 + // 获取终端连接信息 HostTerminalConnectDTO connect = WebSockets.getAttr(channel, sessionId); if (connect == null) { log.info("TerminalConnectHandler-handle unknown sessionId: {}", sessionId); @@ -92,7 +92,7 @@ public class TerminalConnectHandler extends AbstractTerminalHandler extra = Maps.newMap(4); extra.put(ExtraFieldConst.ERROR_MESSAGE, this.getConnectErrorMessage(e)); - hostConnectLogService.updateStatusById(connect.getLogId(), HostConnectStatusEnum.FAILED, extra); + terminalConnectLogService.updateStatusById(connect.getLogId(), TerminalConnectStatusEnum.FAILED, extra); } // 返回连接状态 this.send(channel, @@ -132,12 +132,12 @@ public class TerminalConnectHandler extends AbstractTerminalHandler * ck|eff00a1|1 * diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/response/TerminalCheckResponse.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/response/TerminalCheckResponse.java index 8b763106..2ae16fda 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/response/TerminalCheckResponse.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/response/TerminalCheckResponse.java @@ -23,7 +23,7 @@ import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; /** - * 主机连接检查响应 实体对象 + * 终端连接检查响应 实体对象 * * @author Jiahang Li * @version 1.0.0 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/response/TerminalCloseResponse.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/response/TerminalCloseResponse.java index c073b333..0efdc158 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/response/TerminalCloseResponse.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/model/response/TerminalCloseResponse.java @@ -23,7 +23,7 @@ import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; /** - * 主机连接关闭响应 实体对象 + * 终端连接关闭响应 实体对象 * * @author Jiahang Li * @version 1.0.0 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/session/TerminalSession.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/session/TerminalSession.java index 1fc804f1..a1b7be9b 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/session/TerminalSession.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/terminal/session/TerminalSession.java @@ -18,12 +18,12 @@ package com.orion.visor.module.asset.handler.host.terminal.session; import com.orion.spring.SpringHolder; import com.orion.visor.framework.common.enums.BooleanBit; import com.orion.visor.framework.websocket.core.utils.WebSockets; -import com.orion.visor.module.asset.enums.HostConnectStatusEnum; +import com.orion.visor.module.asset.enums.TerminalConnectStatusEnum; import com.orion.visor.module.asset.handler.host.terminal.constant.TerminalMessage; import com.orion.visor.module.asset.handler.host.terminal.enums.OutputTypeEnum; import com.orion.visor.module.asset.handler.host.terminal.model.TerminalConfig; import com.orion.visor.module.asset.handler.host.terminal.model.response.TerminalCloseResponse; -import com.orion.visor.module.asset.service.HostConnectLogService; +import com.orion.visor.module.asset.service.TerminalConnectLogService; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.web.socket.WebSocketSession; @@ -83,8 +83,8 @@ public abstract class TerminalSession implements ITerminalSession { // 检查并且关闭 if (this.checkAndClose()) { // 修改状态 - SpringHolder.getBean(HostConnectLogService.class) - .updateStatusById(config.getLogId(), HostConnectStatusEnum.COMPLETE, null); + SpringHolder.getBean(TerminalConnectLogService.class) + .updateStatusById(config.getLogId(), TerminalConnectStatusEnum.COMPLETE, null); } } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/handler/TransferHandler.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/handler/TransferHandler.java index 905e74e0..be60d2b7 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/handler/TransferHandler.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/handler/TransferHandler.java @@ -26,7 +26,7 @@ import com.orion.visor.module.asset.handler.host.jsch.SessionStores; import com.orion.visor.module.asset.handler.host.transfer.enums.TransferOperator; import com.orion.visor.module.asset.handler.host.transfer.enums.TransferReceiver; import com.orion.visor.module.asset.handler.host.transfer.enums.TransferType; -import com.orion.visor.module.asset.handler.host.transfer.model.HostConnection; +import com.orion.visor.module.asset.handler.host.transfer.model.TerminalConnection; import com.orion.visor.module.asset.handler.host.transfer.model.TransferOperatorRequest; import com.orion.visor.module.asset.handler.host.transfer.session.DownloadSession; import com.orion.visor.module.asset.handler.host.transfer.session.ITransferSession; @@ -56,12 +56,12 @@ public class TransferHandler implements ITransferHandler { private final ConcurrentHashMap sessions; - private final ConcurrentHashMap hostConnections; + private final ConcurrentHashMap terminalConnections; public TransferHandler(WebSocketSession channel) { this.channel = channel; this.sessions = new ConcurrentHashMap<>(); - this.hostConnections = new ConcurrentHashMap<>(); + this.terminalConnections = new ConcurrentHashMap<>(); } @Override @@ -105,17 +105,17 @@ public class TransferHandler implements ITransferHandler { TransferType type = TransferType.of(payload.getType()); String sessionKey = hostId + "_" + type.getType(); try { - // 获取主机连接信息 - HostConnection hostConnection = hostConnections.get(hostId); - if (hostConnection == null) { - // 获取主机连接信息 + // 获取终端连接信息 + TerminalConnection terminalConnection = terminalConnections.get(hostId); + if (terminalConnection == null) { + // 获取终端连接信息 Long userId = WebSockets.getAttr(channel, ExtraFieldConst.USER_ID); HostTerminalConnectDTO connectInfo = hostTerminalService.getTerminalConnectInfo(userId, hostId); - hostConnection = new HostConnection(connectInfo, SessionStores.openSessionStore(connectInfo)); - hostConnections.put(hostId, hostConnection); + terminalConnection = new TerminalConnection(connectInfo, SessionStores.openSessionStore(connectInfo)); + terminalConnections.put(hostId, terminalConnection); } - SessionStore sessionStore = hostConnection.getSessionStore(); - HostTerminalConnectDTO connectInfo = hostConnection.getConnectInfo(); + SessionStore sessionStore = terminalConnection.getSessionStore(); + HostTerminalConnectDTO connectInfo = terminalConnection.getConnectInfo(); // 获取会话 ITransferSession session = sessions.get(sessionKey); if (session == null) { diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/model/HostConnection.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/model/TerminalConnection.java similarity index 95% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/model/HostConnection.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/model/TerminalConnection.java index 89a9d486..c5756f62 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/model/HostConnection.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/handler/host/transfer/model/TerminalConnection.java @@ -23,7 +23,7 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * 主机连接信息 + * 终端连接信息 * * @author Jiahang Li * @version 1.0.0 @@ -33,7 +33,7 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor -public class HostConnection { +public class TerminalConnection { /** * connectInfo diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/HostConnectLogService.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/TerminalConnectLogService.java similarity index 52% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/HostConnectLogService.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/TerminalConnectLogService.java index 3c8f0cb3..1d942035 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/HostConnectLogService.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/TerminalConnectLogService.java @@ -17,51 +17,51 @@ package com.orion.visor.module.asset.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.orion.lang.define.wrapper.DataGrid; -import com.orion.visor.module.asset.entity.domain.HostConnectLogDO; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogClearRequest; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogCreateRequest; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogQueryRequest; -import com.orion.visor.module.asset.entity.vo.HostConnectLogVO; -import com.orion.visor.module.asset.enums.HostConnectStatusEnum; -import com.orion.visor.module.asset.enums.HostConnectTypeEnum; +import com.orion.visor.module.asset.entity.domain.TerminalConnectLogDO; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogClearRequest; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogCreateRequest; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogQueryRequest; +import com.orion.visor.module.asset.entity.vo.TerminalConnectLogVO; +import com.orion.visor.module.asset.enums.TerminalConnectStatusEnum; +import com.orion.visor.module.asset.enums.TerminalConnectTypeEnum; import java.util.List; import java.util.Map; import java.util.concurrent.Future; /** - * 主机连接日志 服务类 + * 终端连接日志 服务类 * * @author Jiahang Li * @version 1.0.0 * @since 2023-12-26 22:09 */ -public interface HostConnectLogService { +public interface TerminalConnectLogService { /** - * 创建主机连接日志 + * 创建终端连接日志 * * @param type type * @param request request * @return record */ - HostConnectLogDO create(HostConnectTypeEnum type, HostConnectLogCreateRequest request); + TerminalConnectLogDO create(TerminalConnectTypeEnum type, TerminalConnectLogCreateRequest request); /** - * 分页查询主机连接日志 + * 分页查询终端连接日志 * * @param request request * @return rows */ - DataGrid getHostConnectLogPage(HostConnectLogQueryRequest request); + DataGrid getTerminalConnectLogPage(TerminalConnectLogQueryRequest request); /** - * 分页查询主机连接会话 + * 分页查询终端连接会话 * * @param request request * @return rows */ - List getHostConnectSessions(HostConnectLogQueryRequest request); + List getTerminalConnectSessions(TerminalConnectLogQueryRequest request); /** * 更新连接状态 @@ -71,7 +71,7 @@ public interface HostConnectLogService { * @param extra extra * @return effect */ - Integer updateStatusById(Long id, HostConnectStatusEnum status, Map extra); + Integer updateStatusById(Long id, TerminalConnectStatusEnum status, Map extra); /** * 查询用户最近连接的主机 @@ -79,7 +79,7 @@ public interface HostConnectLogService { * @param request request * @return hostId */ - List getLatestConnectHostId(HostConnectLogQueryRequest request); + List getLatestConnectHostId(TerminalConnectLogQueryRequest request); /** * 查询用户最近连接的主机 @@ -88,39 +88,39 @@ public interface HostConnectLogService { * @param userId userId * @return hostId */ - Future> getLatestConnectHostIdAsync(HostConnectTypeEnum type, Long userId); + Future> getLatestConnectHostIdAsync(TerminalConnectTypeEnum type, Long userId); /** - * 删除主机连接日志 + * 删除终端连接日志 * * @param idList idList * @return effect */ - Integer deleteHostConnectLog(List idList); + Integer deleteTerminalConnectLog(List idList); /** - * 获取主机连接日志数量 + * 获取终端连接日志数量 * * @param request request * @return count */ - Long getHostConnectLogCount(HostConnectLogQueryRequest request); + Long getTerminalConnectLogCount(TerminalConnectLogQueryRequest request); /** - * 清空主机连接日志 + * 清空终端连接日志 * * @param request request * @return effect */ - Integer clearHostConnectLog(HostConnectLogClearRequest request); + Integer clearTerminalConnectLog(TerminalConnectLogClearRequest request); /** - * 强制断开主机连接 + * 强制断开终端连接 * * @param request request * @return effect */ - Integer forceOffline(HostConnectLogQueryRequest request); + Integer forceOffline(TerminalConnectLogQueryRequest request); /** * 构建查询 wrapper @@ -128,6 +128,6 @@ public interface HostConnectLogService { * @param request request * @return wrapper */ - LambdaQueryWrapper buildQueryWrapper(HostConnectLogQueryRequest request); + LambdaQueryWrapper buildQueryWrapper(TerminalConnectLogQueryRequest request); } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/AssetAuthorizedDataServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/AssetAuthorizedDataServiceImpl.java index 5619cc01..3e596143 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/AssetAuthorizedDataServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/AssetAuthorizedDataServiceImpl.java @@ -26,7 +26,7 @@ import com.orion.visor.module.asset.convert.HostGroupConvert; import com.orion.visor.module.asset.dao.HostDAO; import com.orion.visor.module.asset.entity.request.asset.AssetAuthorizedDataQueryRequest; import com.orion.visor.module.asset.entity.vo.*; -import com.orion.visor.module.asset.enums.HostConnectTypeEnum; +import com.orion.visor.module.asset.enums.TerminalConnectTypeEnum; import com.orion.visor.module.asset.enums.HostExtraItemEnum; import com.orion.visor.module.asset.enums.HostStatusEnum; import com.orion.visor.module.asset.enums.HostTypeEnum; @@ -79,7 +79,7 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic private HostIdentityService hostIdentityService; @Resource - private HostConnectLogService hostConnectLogService; + private TerminalConnectLogService terminalConnectLogService; @Resource private FavoriteApi favoriteApi; @@ -151,7 +151,7 @@ public class AssetAuthorizedDataServiceImpl implements AssetAuthorizedDataServic // 查询我的收藏 Future> favoriteResult = favoriteApi.getFavoriteRelIdListAsync(FavoriteTypeEnum.HOST, userId); // 查询最近连接的主机 - Future> latestConnectHostIdList = hostConnectLogService.getLatestConnectHostIdAsync(HostConnectTypeEnum.of(type), userId); + Future> latestConnectHostIdList = terminalConnectLogService.getLatestConnectHostIdAsync(TerminalConnectTypeEnum.of(type), userId); // 查询主机拓展信息 Future> labelExtraResult = dataExtraApi.getExtraItemValuesByCacheAsync(userId, DataExtraTypeEnum.HOST, diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostConnectLogServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostConnectLogServiceImpl.java deleted file mode 100644 index 72a020cf..00000000 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostConnectLogServiceImpl.java +++ /dev/null @@ -1,275 +0,0 @@ -/* - * 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 com.orion.visor.module.asset.service.impl; - -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.orion.lang.define.wrapper.DataGrid; -import com.orion.lang.utils.Arrays1; -import com.orion.lang.utils.collect.Lists; -import com.orion.visor.framework.biz.operator.log.core.utils.OperatorLogs; -import com.orion.visor.framework.common.constant.Const; -import com.orion.visor.framework.common.constant.ErrorMessage; -import com.orion.visor.framework.common.utils.SqlUtils; -import com.orion.visor.framework.common.utils.Valid; -import com.orion.visor.framework.security.core.utils.SecurityUtils; -import com.orion.visor.module.asset.convert.HostConnectLogConvert; -import com.orion.visor.module.asset.dao.HostConnectLogDAO; -import com.orion.visor.module.asset.entity.domain.HostConnectLogDO; -import com.orion.visor.module.asset.entity.dto.HostConnectLogExtraDTO; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogClearRequest; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogCreateRequest; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogQueryRequest; -import com.orion.visor.module.asset.entity.vo.HostConnectLogVO; -import com.orion.visor.module.asset.enums.HostConnectStatusEnum; -import com.orion.visor.module.asset.enums.HostConnectTypeEnum; -import com.orion.visor.module.asset.handler.host.terminal.manager.HostTerminalManager; -import com.orion.visor.module.asset.handler.host.terminal.model.TerminalConfig; -import com.orion.visor.module.asset.handler.host.terminal.session.ITerminalSession; -import com.orion.visor.module.asset.service.HostConnectLogService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Future; -import java.util.stream.Collectors; - -/** - * 主机连接日志 服务实现类 - * - * @author Jiahang Li - * @version 1.0.0 - * @since 2023-12-26 22:09 - */ -@Slf4j -@Service -public class HostConnectLogServiceImpl implements HostConnectLogService { - - @Resource - private HostConnectLogDAO hostConnectLogDAO; - - @Resource - private HostTerminalManager hostTerminalManager; - - @Override - public HostConnectLogDO create(HostConnectTypeEnum type, HostConnectLogCreateRequest request) { - HostConnectLogDO record = HostConnectLogConvert.MAPPER.to(request); - record.setType(type.name()); - String status = request.getStatus(); - record.setStatus(status); - record.setStartTime(new Date()); - record.setExtraInfo(JSON.toJSONString(request.getExtra())); - // 失败直接设置结束时间 - if (HostConnectStatusEnum.FAILED.name().equals(status)) { - record.setEndTime(new Date()); - } - hostConnectLogDAO.insert(record); - return record; - } - - @Override - public DataGrid getHostConnectLogPage(HostConnectLogQueryRequest request) { - // 条件 - LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) - .orderByDesc(HostConnectLogDO::getId); - // 查询 - return hostConnectLogDAO.of(wrapper) - .page(request) - .dataGrid(s -> { - HostConnectLogVO vo = HostConnectLogConvert.MAPPER.to(s); - vo.setExtra(JSON.parseObject(s.getExtraInfo(), HostConnectLogExtraDTO.class)); - return vo; - }); - } - - @Override - public List getHostConnectSessions(HostConnectLogQueryRequest request) { - // 查询全部 - List idList = hostTerminalManager.getChannelSessions() - .values() - .stream() - .map(ConcurrentHashMap::values) - .flatMap(Collection::stream) - .filter(s -> !s.isClosed()) - .map(ITerminalSession::getConfig) - .filter(Objects::nonNull) - .map(TerminalConfig::getLogId) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - if (idList.isEmpty()) { - return Lists.empty(); - } - // 条件 - request.setIdList(idList); - request.setStatus(HostConnectStatusEnum.CONNECTING.name()); - LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) - .orderByDesc(HostConnectLogDO::getId); - // 查询 - return hostConnectLogDAO.of(wrapper) - .list(s -> { - HostConnectLogVO vo = HostConnectLogConvert.MAPPER.to(s); - vo.setExtra(JSON.parseObject(s.getExtraInfo(), HostConnectLogExtraDTO.class)); - return vo; - }); - } - - @Override - public Integer updateStatusById(Long id, HostConnectStatusEnum status, Map partial) { - log.info("HostConnectLogService-updateStatusById start id: {}, status: {}", id, status); - // 查询 - HostConnectLogDO record = hostConnectLogDAO.of() - .createWrapper() - .eq(HostConnectLogDO::getId, id) - .orderByDesc(HostConnectLogDO::getId) - .then() - .getOne(); - if (record == null) { - log.info("HostConnectLogService-updateStatusById no record id: {}", id); - return Const.N_0; - } - return this.updateStatus(record, status, partial); - } - - /** - * 更新状态 - * - * @param record record - * @param status status - * @param partial partial - * @return effect - */ - private int updateStatus(HostConnectLogDO record, HostConnectStatusEnum status, Map partial) { - // 更新 - HostConnectLogDO update = new HostConnectLogDO(); - update.setId(record.getId()); - update.setStatus(status.name()); - update.setEndTime(new Date()); - if (partial != null) { - Map extra = JSON.parseObject(record.getExtraInfo()); - if (extra == null) { - extra = partial; - } else { - extra.putAll(partial); - } - update.setExtraInfo(JSON.toJSONString(extra)); - } - return hostConnectLogDAO.updateById(update); - } - - @Override - public List getLatestConnectHostId(HostConnectLogQueryRequest request) { - return hostConnectLogDAO.selectLatestConnectHostId(SecurityUtils.getLoginUserId(), request.getType(), request.getLimit()); - } - - @Override - @Async("asyncExecutor") - public Future> getLatestConnectHostIdAsync(HostConnectTypeEnum type, Long userId) { - List hostIdList = hostConnectLogDAO.selectLatestConnectHostId(userId, type.name(), Const.N_10); - return CompletableFuture.completedFuture(hostIdList); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Integer deleteHostConnectLog(List idList) { - log.info("HostConnectLogService.deleteHostConnectLog start {}", JSON.toJSONString(idList)); - if (Lists.isEmpty(idList)) { - OperatorLogs.add(OperatorLogs.COUNT, Const.N_0); - return Const.N_0; - } - // 删除日志表 - int effect = hostConnectLogDAO.deleteBatchIds(idList); - log.info("HostConnectLogService.deleteHostConnectLog finish {}", effect); - // 设置日志参数 - OperatorLogs.add(OperatorLogs.COUNT, effect); - return effect; - } - - @Override - public Long getHostConnectLogCount(HostConnectLogQueryRequest request) { - // 条件 - LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); - // 查询 - return hostConnectLogDAO.of() - .wrapper(wrapper) - .countMax(request.getLimit()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Integer clearHostConnectLog(HostConnectLogClearRequest request) { - log.info("HostConnectLogService.clearHostConnectLog start {}", JSON.toJSONString(request)); - // 查询 - LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) - .select(HostConnectLogDO::getId) - .orderByAsc(HostConnectLogDO::getId) - .last(SqlUtils.limit(request.getLimit())); - List list = hostConnectLogDAO.selectList(wrapper); - if (list.isEmpty()) { - log.info("HostConnectLogService.clearHostConnectLog empty"); - // 设置日志参数 - OperatorLogs.add(OperatorLogs.COUNT, Const.N_0); - return Const.N_0; - } - // 删除 - List idList = list.stream() - .map(HostConnectLogDO::getId) - .collect(Collectors.toList()); - return this.deleteHostConnectLog(idList); - } - - @Override - public Integer forceOffline(HostConnectLogQueryRequest request) { - Long id = request.getId(); - // 查询数据是否存在 - HostConnectLogDO record = hostConnectLogDAO.selectById(id); - Valid.notNull(record, ErrorMessage.LOG_ABSENT); - Valid.eq(record.getStatus(), HostConnectStatusEnum.CONNECTING.name(), ErrorMessage.ILLEGAL_STATUS); - // 设置日志参数 - OperatorLogs.add(OperatorLogs.HOST_NAME, record.getHostName()); - // 获取会话 - HostConnectLogExtraDTO extra = JSON.parseObject(record.getExtraInfo(), HostConnectLogExtraDTO.class); - ITerminalSession session = hostTerminalManager.getSession(extra.getChannelId(), extra.getSessionId()); - if (session != null) { - // 关闭会话 - session.forceOffline(); - } - // 更新状态 - return this.updateStatus(record, HostConnectStatusEnum.FORCE_OFFLINE, null); - } - - @Override - public LambdaQueryWrapper buildQueryWrapper(HostConnectLogQueryRequest request) { - return hostConnectLogDAO.wrapper() - .eq(HostConnectLogDO::getId, request.getId()) - .in(HostConnectLogDO::getId, request.getIdList()) - .eq(HostConnectLogDO::getUserId, request.getUserId()) - .eq(HostConnectLogDO::getHostId, request.getHostId()) - .like(HostConnectLogDO::getHostAddress, request.getHostAddress()) - .eq(HostConnectLogDO::getType, request.getType()) - .like(HostConnectLogDO::getToken, request.getToken()) - .eq(HostConnectLogDO::getStatus, request.getStatus()) - .in(HostConnectLogDO::getStatus, request.getStatusList()) - .ge(HostConnectLogDO::getStartTime, Arrays1.getIfPresent(request.getStartTimeRange(), 0)) - .le(HostConnectLogDO::getStartTime, Arrays1.getIfPresent(request.getStartTimeRange(), 1)) - .le(HostConnectLogDO::getCreateTime, request.getCreateTimeLe()); - } - -} diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostTerminalServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostTerminalServiceImpl.java index 5c1e494a..43c38893 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostTerminalServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/HostTerminalServiceImpl.java @@ -52,7 +52,7 @@ import java.util.Optional; import java.util.stream.Collectors; /** - * 主机连接服务 + * 终端连接服务 * * @author Jiahang Li * @version 1.0.0 diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/TerminalConnectLogServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/TerminalConnectLogServiceImpl.java new file mode 100644 index 00000000..386f6c5b --- /dev/null +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/service/impl/TerminalConnectLogServiceImpl.java @@ -0,0 +1,275 @@ +/* + * 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 com.orion.visor.module.asset.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.orion.lang.define.wrapper.DataGrid; +import com.orion.lang.utils.Arrays1; +import com.orion.lang.utils.collect.Lists; +import com.orion.visor.framework.biz.operator.log.core.utils.OperatorLogs; +import com.orion.visor.framework.common.constant.Const; +import com.orion.visor.framework.common.constant.ErrorMessage; +import com.orion.visor.framework.common.utils.SqlUtils; +import com.orion.visor.framework.common.utils.Valid; +import com.orion.visor.framework.security.core.utils.SecurityUtils; +import com.orion.visor.module.asset.convert.TerminalConnectLogConvert; +import com.orion.visor.module.asset.dao.TerminalConnectLogDAO; +import com.orion.visor.module.asset.entity.domain.TerminalConnectLogDO; +import com.orion.visor.module.asset.entity.dto.TerminalConnectLogExtraDTO; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogClearRequest; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogCreateRequest; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogQueryRequest; +import com.orion.visor.module.asset.entity.vo.TerminalConnectLogVO; +import com.orion.visor.module.asset.enums.TerminalConnectStatusEnum; +import com.orion.visor.module.asset.enums.TerminalConnectTypeEnum; +import com.orion.visor.module.asset.handler.host.terminal.manager.HostTerminalManager; +import com.orion.visor.module.asset.handler.host.terminal.model.TerminalConfig; +import com.orion.visor.module.asset.handler.host.terminal.session.ITerminalSession; +import com.orion.visor.module.asset.service.TerminalConnectLogService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Future; +import java.util.stream.Collectors; + +/** + * 终端连接日志 服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-12-26 22:09 + */ +@Slf4j +@Service +public class TerminalConnectLogServiceImpl implements TerminalConnectLogService { + + @Resource + private TerminalConnectLogDAO terminalConnectLogDAO; + + @Resource + private HostTerminalManager hostTerminalManager; + + @Override + public TerminalConnectLogDO create(TerminalConnectTypeEnum type, TerminalConnectLogCreateRequest request) { + TerminalConnectLogDO record = TerminalConnectLogConvert.MAPPER.to(request); + record.setType(type.name()); + String status = request.getStatus(); + record.setStatus(status); + record.setStartTime(new Date()); + record.setExtraInfo(JSON.toJSONString(request.getExtra())); + // 失败直接设置结束时间 + if (TerminalConnectStatusEnum.FAILED.name().equals(status)) { + record.setEndTime(new Date()); + } + terminalConnectLogDAO.insert(record); + return record; + } + + @Override + public DataGrid getTerminalConnectLogPage(TerminalConnectLogQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) + .orderByDesc(TerminalConnectLogDO::getId); + // 查询 + return terminalConnectLogDAO.of(wrapper) + .page(request) + .dataGrid(s -> { + TerminalConnectLogVO vo = TerminalConnectLogConvert.MAPPER.to(s); + vo.setExtra(JSON.parseObject(s.getExtraInfo(), TerminalConnectLogExtraDTO.class)); + return vo; + }); + } + + @Override + public List getTerminalConnectSessions(TerminalConnectLogQueryRequest request) { + // 查询全部 + List idList = hostTerminalManager.getChannelSessions() + .values() + .stream() + .map(ConcurrentHashMap::values) + .flatMap(Collection::stream) + .filter(s -> !s.isClosed()) + .map(ITerminalSession::getConfig) + .filter(Objects::nonNull) + .map(TerminalConfig::getLogId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + if (idList.isEmpty()) { + return Lists.empty(); + } + // 条件 + request.setIdList(idList); + request.setStatus(TerminalConnectStatusEnum.CONNECTING.name()); + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) + .orderByDesc(TerminalConnectLogDO::getId); + // 查询 + return terminalConnectLogDAO.of(wrapper) + .list(s -> { + TerminalConnectLogVO vo = TerminalConnectLogConvert.MAPPER.to(s); + vo.setExtra(JSON.parseObject(s.getExtraInfo(), TerminalConnectLogExtraDTO.class)); + return vo; + }); + } + + @Override + public Integer updateStatusById(Long id, TerminalConnectStatusEnum status, Map partial) { + log.info("TerminalConnectLogService-updateStatusById start id: {}, status: {}", id, status); + // 查询 + TerminalConnectLogDO record = terminalConnectLogDAO.of() + .createWrapper() + .eq(TerminalConnectLogDO::getId, id) + .orderByDesc(TerminalConnectLogDO::getId) + .then() + .getOne(); + if (record == null) { + log.info("TerminalConnectLogService-updateStatusById no record id: {}", id); + return Const.N_0; + } + return this.updateStatus(record, status, partial); + } + + /** + * 更新状态 + * + * @param record record + * @param status status + * @param partial partial + * @return effect + */ + private int updateStatus(TerminalConnectLogDO record, TerminalConnectStatusEnum status, Map partial) { + // 更新 + TerminalConnectLogDO update = new TerminalConnectLogDO(); + update.setId(record.getId()); + update.setStatus(status.name()); + update.setEndTime(new Date()); + if (partial != null) { + Map extra = JSON.parseObject(record.getExtraInfo()); + if (extra == null) { + extra = partial; + } else { + extra.putAll(partial); + } + update.setExtraInfo(JSON.toJSONString(extra)); + } + return terminalConnectLogDAO.updateById(update); + } + + @Override + public List getLatestConnectHostId(TerminalConnectLogQueryRequest request) { + return terminalConnectLogDAO.selectLatestConnectHostId(SecurityUtils.getLoginUserId(), request.getType(), request.getLimit()); + } + + @Override + @Async("asyncExecutor") + public Future> getLatestConnectHostIdAsync(TerminalConnectTypeEnum type, Long userId) { + List hostIdList = terminalConnectLogDAO.selectLatestConnectHostId(userId, type.name(), Const.N_10); + return CompletableFuture.completedFuture(hostIdList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer deleteTerminalConnectLog(List idList) { + log.info("TerminalConnectLogService.deleteTerminalConnectLog start {}", JSON.toJSONString(idList)); + if (Lists.isEmpty(idList)) { + OperatorLogs.add(OperatorLogs.COUNT, Const.N_0); + return Const.N_0; + } + // 删除日志表 + int effect = terminalConnectLogDAO.deleteBatchIds(idList); + log.info("TerminalConnectLogService.deleteTerminalConnectLog finish {}", effect); + // 设置日志参数 + OperatorLogs.add(OperatorLogs.COUNT, effect); + return effect; + } + + @Override + public Long getTerminalConnectLogCount(TerminalConnectLogQueryRequest request) { + // 条件 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request); + // 查询 + return terminalConnectLogDAO.of() + .wrapper(wrapper) + .countMax(request.getLimit()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer clearTerminalConnectLog(TerminalConnectLogClearRequest request) { + log.info("TerminalConnectLogService.clearTerminalConnectLog start {}", JSON.toJSONString(request)); + // 查询 + LambdaQueryWrapper wrapper = this.buildQueryWrapper(request) + .select(TerminalConnectLogDO::getId) + .orderByAsc(TerminalConnectLogDO::getId) + .last(SqlUtils.limit(request.getLimit())); + List list = terminalConnectLogDAO.selectList(wrapper); + if (list.isEmpty()) { + log.info("TerminalConnectLogService.clearTerminalConnectLog empty"); + // 设置日志参数 + OperatorLogs.add(OperatorLogs.COUNT, Const.N_0); + return Const.N_0; + } + // 删除 + List idList = list.stream() + .map(TerminalConnectLogDO::getId) + .collect(Collectors.toList()); + return this.deleteTerminalConnectLog(idList); + } + + @Override + public Integer forceOffline(TerminalConnectLogQueryRequest request) { + Long id = request.getId(); + // 查询数据是否存在 + TerminalConnectLogDO record = terminalConnectLogDAO.selectById(id); + Valid.notNull(record, ErrorMessage.LOG_ABSENT); + Valid.eq(record.getStatus(), TerminalConnectStatusEnum.CONNECTING.name(), ErrorMessage.ILLEGAL_STATUS); + // 设置日志参数 + OperatorLogs.add(OperatorLogs.HOST_NAME, record.getHostName()); + // 获取会话 + TerminalConnectLogExtraDTO extra = JSON.parseObject(record.getExtraInfo(), TerminalConnectLogExtraDTO.class); + ITerminalSession session = hostTerminalManager.getSession(extra.getChannelId(), extra.getSessionId()); + if (session != null) { + // 关闭会话 + session.forceOffline(); + } + // 更新状态 + return this.updateStatus(record, TerminalConnectStatusEnum.FORCE_OFFLINE, null); + } + + @Override + public LambdaQueryWrapper buildQueryWrapper(TerminalConnectLogQueryRequest request) { + return terminalConnectLogDAO.wrapper() + .eq(TerminalConnectLogDO::getId, request.getId()) + .in(TerminalConnectLogDO::getId, request.getIdList()) + .eq(TerminalConnectLogDO::getUserId, request.getUserId()) + .eq(TerminalConnectLogDO::getHostId, request.getHostId()) + .like(TerminalConnectLogDO::getHostAddress, request.getHostAddress()) + .eq(TerminalConnectLogDO::getType, request.getType()) + .like(TerminalConnectLogDO::getToken, request.getToken()) + .eq(TerminalConnectLogDO::getStatus, request.getStatus()) + .in(TerminalConnectLogDO::getStatus, request.getStatusList()) + .ge(TerminalConnectLogDO::getStartTime, Arrays1.getIfPresent(request.getStartTimeRange(), 0)) + .le(TerminalConnectLogDO::getStartTime, Arrays1.getIfPresent(request.getStartTimeRange(), 1)) + .le(TerminalConnectLogDO::getCreateTime, request.getCreateTimeLe()); + } + +} diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/task/HostConnectLogAutoClearTask.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/task/TerminalConnectLogAutoClearTask.java similarity index 61% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/task/HostConnectLogAutoClearTask.java rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/task/TerminalConnectLogAutoClearTask.java index df2d0624..9b0c1890 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/task/HostConnectLogAutoClearTask.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/com/orion/visor/module/asset/task/TerminalConnectLogAutoClearTask.java @@ -17,10 +17,10 @@ package com.orion.visor.module.asset.task; import com.orion.lang.utils.time.Dates; import com.orion.visor.framework.common.utils.LockerUtils; -import com.orion.visor.module.asset.define.config.AppHostConnectLogAutoClearConfig; -import com.orion.visor.module.asset.entity.request.host.HostConnectLogClearRequest; -import com.orion.visor.module.asset.enums.HostConnectStatusEnum; -import com.orion.visor.module.asset.service.HostConnectLogService; +import com.orion.visor.module.asset.define.config.AppTerminalConnectLogAutoClearConfig; +import com.orion.visor.module.asset.entity.request.host.TerminalConnectLogClearRequest; +import com.orion.visor.module.asset.enums.TerminalConnectStatusEnum; +import com.orion.visor.module.asset.service.TerminalConnectLogService; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Scheduled; @@ -30,7 +30,7 @@ import javax.annotation.Resource; import java.util.Date; /** - * 主机连接日志自动清理 + * 终端连接日志自动清理 * * @author Jiahang Li * @version 1.0.0 @@ -38,8 +38,8 @@ import java.util.Date; */ @Slf4j @Component -@ConditionalOnProperty(value = "app.auto-clear.host-connect-log.enabled", havingValue = "true") -public class HostConnectLogAutoClearTask { +@ConditionalOnProperty(value = "app.auto-clear.terminal-connect-log.enabled", havingValue = "true") +public class TerminalConnectLogAutoClearTask { /** * 分布式锁名称 @@ -47,20 +47,20 @@ public class HostConnectLogAutoClearTask { private static final String LOCK_KEY = "clear:hcl:lock"; @Resource - private AppHostConnectLogAutoClearConfig appHostConnectLogAutoClearConfig; + private AppTerminalConnectLogAutoClearConfig appTerminalConnectLogAutoClearConfig; @Resource - private HostConnectLogService hostConnectLogService; + private TerminalConnectLogService terminalConnectLogService; /** * 清理 */ @Scheduled(cron = "0 10 3 * * ?") public void clear() { - log.info("HostConnectLogAutoClearTask.clear start"); + log.info("TerminalConnectLogAutoClearTask.clear start"); // 获取锁并执行 LockerUtils.tryLock(LOCK_KEY, this::doClear); - log.info("HostConnectLogAutoClearTask.clear finish"); + log.info("TerminalConnectLogAutoClearTask.clear finish"); } /** @@ -69,13 +69,13 @@ public class HostConnectLogAutoClearTask { private void doClear() { // 删除的时间区间 Date createLessEq = Dates.stream() - .subDay(appHostConnectLogAutoClearConfig.getKeepPeriod()) + .subDay(appTerminalConnectLogAutoClearConfig.getKeepPeriod()) .date(); // 清理 - HostConnectLogClearRequest request = new HostConnectLogClearRequest(); + TerminalConnectLogClearRequest request = new TerminalConnectLogClearRequest(); request.setCreateTimeLe(createLessEq); - request.setStatusList(HostConnectStatusEnum.FINISH_STATUS_LIST); - hostConnectLogService.clearHostConnectLog(request); + request.setStatusList(TerminalConnectStatusEnum.FINISH_STATUS_LIST); + terminalConnectLogService.clearTerminalConnectLog(request); } } diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 211c787c..273b96d7 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -21,9 +21,9 @@ "sourceType": "com.orion.visor.module.asset.define.config.AppExecLogAutoClearConfig" }, { - "name": "app.auto-clear.host-connect-log", - "type": "com.orion.visor.module.asset.define.config.AppHostConnectLogAutoClearConfig", - "sourceType": "com.orion.visor.module.asset.define.config.AppHostConnectLogAutoClearConfig" + "name": "app.auto-clear.terminal-connect-log", + "type": "com.orion.visor.module.asset.define.config.AppTerminalConnectLogAutoClearConfig", + "sourceType": "com.orion.visor.module.asset.define.config.AppTerminalConnectLogAutoClearConfig" } ], "properties": [ @@ -74,14 +74,14 @@ "description": "批量执行日志自动清理 保留周期 (天)." }, { - "name": "app.auto-clear.host-connect-log.enabled", + "name": "app.auto-clear.terminal-connect-log.enabled", "type": "java.lang.Boolean", - "description": "开启 主机连接日志自动清理." + "description": "开启 终端连接日志自动清理." }, { - "name": "app.auto-clear.host-connect-log.keep-period", + "name": "app.auto-clear.terminal-connect-log.keep-period", "type": "java.lang.Integer", - "description": "主机连接日志自动清理 保留周期 (天)." + "description": "终端连接日志自动清理 保留周期 (天)." } ] } \ No newline at end of file diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/HostConnectLogMapper.xml b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/TerminalConnectLogMapper.xml similarity index 91% rename from orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/HostConnectLogMapper.xml rename to orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/TerminalConnectLogMapper.xml index 27303a24..7ebe3c0f 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/HostConnectLogMapper.xml +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/TerminalConnectLogMapper.xml @@ -1,9 +1,9 @@ - + - + @@ -28,7 +28,7 @@