feat: 连接主机.

This commit is contained in:
lijiahangmax
2023-12-27 23:09:22 +08:00
parent 3cc96d6b2d
commit dae142e434
5 changed files with 20 additions and 12 deletions

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@ target/
!**/src/main/**/target/
!**/src/test/**/target/
.log
.flattened-pom.xml
### STS ###
.apt_generated

View File

@@ -1,6 +1,7 @@
package com.orion.ops.module.asset.convert;
import com.orion.ops.module.asset.entity.domain.HostConnectLogDO;
import com.orion.ops.module.asset.entity.dto.HostSshConnectDTO;
import com.orion.ops.module.asset.entity.request.host.HostConnectLogCreateRequest;
import com.orion.ops.module.asset.entity.request.host.HostConnectLogQueryRequest;
import com.orion.ops.module.asset.entity.vo.HostConnectLogVO;
@@ -27,6 +28,8 @@ public interface HostConnectLogConvert {
HostConnectLogVO to(HostConnectLogDO domain);
HostConnectLogCreateRequest to(HostSshConnectDTO dto);
List<HostConnectLogVO> to(List<HostConnectLogDO> list);
}

View File

@@ -36,7 +36,7 @@ public class HostSshConnectDTO {
private String hostName;
@Schema(description = "主机地址")
private String address;
private String hostAddress;
@Schema(description = "端口")
private Integer port;

View File

@@ -1,8 +1,10 @@
package com.orion.ops.module.asset.entity.request.host;
import com.orion.ops.framework.common.entity.PageRequest;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Size;
@@ -17,9 +19,8 @@ import javax.validation.constraints.Size;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "HostConnectLogCreateRequest", description = "主机连接日志 创建请求对象")
public class HostConnectLogCreateRequest extends PageRequest {
public class HostConnectLogCreateRequest {
@Schema(description = "用户id")
private Long userId;

View File

@@ -12,6 +12,7 @@ import com.orion.ops.framework.common.constant.ErrorMessage;
import com.orion.ops.framework.common.utils.CryptoUtils;
import com.orion.ops.framework.common.utils.Valid;
import com.orion.ops.framework.redis.core.utils.RedisStrings;
import com.orion.ops.module.asset.convert.HostConnectLogConvert;
import com.orion.ops.module.asset.dao.HostDAO;
import com.orion.ops.module.asset.dao.HostIdentityDAO;
import com.orion.ops.module.asset.dao.HostKeyDAO;
@@ -20,10 +21,8 @@ import com.orion.ops.module.asset.entity.domain.HostDO;
import com.orion.ops.module.asset.entity.domain.HostIdentityDO;
import com.orion.ops.module.asset.entity.domain.HostKeyDO;
import com.orion.ops.module.asset.entity.dto.HostSshConnectDTO;
import com.orion.ops.module.asset.enums.HostConfigTypeEnum;
import com.orion.ops.module.asset.enums.HostExtraItemEnum;
import com.orion.ops.module.asset.enums.HostExtraSshAuthTypeEnum;
import com.orion.ops.module.asset.enums.HostSshAuthTypeEnum;
import com.orion.ops.module.asset.entity.request.host.HostConnectLogCreateRequest;
import com.orion.ops.module.asset.enums.*;
import com.orion.ops.module.asset.handler.host.config.model.HostSshConfigModel;
import com.orion.ops.module.asset.handler.host.extra.model.HostSshExtraModel;
import com.orion.ops.module.asset.service.HostConfigService;
@@ -120,11 +119,14 @@ public class HostTerminalServiceImpl implements HostTerminalService {
// 获取连接配置
HostSshConnectDTO connect = this.getHostConnectInfo(host, config, extra);
connect.setUserId(userId);
connect.setUsername(user.getUsername());
connect.setToken(token);
// 设置缓存
String key = HostTerminalCacheKeyDefine.HOST_TERMINAL_CONNECT.format(token);
RedisStrings.setJson(key, HostTerminalCacheKeyDefine.HOST_TERMINAL_CONNECT, connect);
// 记录连接日志
HostConnectLogCreateRequest log = HostConnectLogConvert.MAPPER.to(connect);
log.setUsername(user.getUsername());
hostConnectLogService.create(HostConnectTypeEnum.SSH, log);
// 设置日志参数
OperatorLogs.add(connect);
return token;
@@ -154,7 +156,7 @@ public class HostTerminalServiceImpl implements HostTerminalService {
@Override
public SessionStore openSessionStore(HostSshConnectDTO conn) {
Long hostId = conn.getHostId();
String address = conn.getAddress();
String address = conn.getHostAddress();
String username = conn.getUsername();
log.info("HostConnectService-openSessionStore-start hostId: {}, address: {}, username: {}", hostId, address, username);
try {
@@ -236,7 +238,7 @@ public class HostTerminalServiceImpl implements HostTerminalService {
HostSshConnectDTO conn = new HostSshConnectDTO();
conn.setHostId(host.getId());
conn.setHostName(host.getName());
conn.setAddress(host.getAddress());
conn.setHostAddress(host.getAddress());
conn.setPort(config.getPort());
conn.setTimeout(config.getConnectTimeout());
conn.setUsername(config.getUsername());
@@ -258,6 +260,7 @@ public class HostTerminalServiceImpl implements HostTerminalService {
if (keyId != null) {
HostKeyDO key = hostKeyDAO.selectById(keyId);
Valid.notNull(key, ErrorMessage.KEY_ABSENT);
conn.setKeyId(keyId);
conn.setPublicKey(key.getPublicKey());
conn.setPrivateKey(key.getPrivateKey());
conn.setPrivateKeyPassword(key.getPassword());