feat: 连接主机.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@ target/
|
|||||||
!**/src/main/**/target/
|
!**/src/main/**/target/
|
||||||
!**/src/test/**/target/
|
!**/src/test/**/target/
|
||||||
.log
|
.log
|
||||||
|
.flattened-pom.xml
|
||||||
|
|
||||||
### STS ###
|
### STS ###
|
||||||
.apt_generated
|
.apt_generated
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.orion.ops.module.asset.convert;
|
package com.orion.ops.module.asset.convert;
|
||||||
|
|
||||||
import com.orion.ops.module.asset.entity.domain.HostConnectLogDO;
|
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.HostConnectLogCreateRequest;
|
||||||
import com.orion.ops.module.asset.entity.request.host.HostConnectLogQueryRequest;
|
import com.orion.ops.module.asset.entity.request.host.HostConnectLogQueryRequest;
|
||||||
import com.orion.ops.module.asset.entity.vo.HostConnectLogVO;
|
import com.orion.ops.module.asset.entity.vo.HostConnectLogVO;
|
||||||
@@ -27,6 +28,8 @@ public interface HostConnectLogConvert {
|
|||||||
|
|
||||||
HostConnectLogVO to(HostConnectLogDO domain);
|
HostConnectLogVO to(HostConnectLogDO domain);
|
||||||
|
|
||||||
|
HostConnectLogCreateRequest to(HostSshConnectDTO dto);
|
||||||
|
|
||||||
List<HostConnectLogVO> to(List<HostConnectLogDO> list);
|
List<HostConnectLogVO> to(List<HostConnectLogDO> list);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class HostSshConnectDTO {
|
|||||||
private String hostName;
|
private String hostName;
|
||||||
|
|
||||||
@Schema(description = "主机地址")
|
@Schema(description = "主机地址")
|
||||||
private String address;
|
private String hostAddress;
|
||||||
|
|
||||||
@Schema(description = "端口")
|
@Schema(description = "端口")
|
||||||
private Integer port;
|
private Integer port;
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.orion.ops.module.asset.entity.request.host;
|
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 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;
|
import javax.validation.constraints.Size;
|
||||||
|
|
||||||
@@ -17,9 +19,8 @@ import javax.validation.constraints.Size;
|
|||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@Schema(name = "HostConnectLogCreateRequest", description = "主机连接日志 创建请求对象")
|
@Schema(name = "HostConnectLogCreateRequest", description = "主机连接日志 创建请求对象")
|
||||||
public class HostConnectLogCreateRequest extends PageRequest {
|
public class HostConnectLogCreateRequest {
|
||||||
|
|
||||||
@Schema(description = "用户id")
|
@Schema(description = "用户id")
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|||||||
@@ -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.CryptoUtils;
|
||||||
import com.orion.ops.framework.common.utils.Valid;
|
import com.orion.ops.framework.common.utils.Valid;
|
||||||
import com.orion.ops.framework.redis.core.utils.RedisStrings;
|
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.HostDAO;
|
||||||
import com.orion.ops.module.asset.dao.HostIdentityDAO;
|
import com.orion.ops.module.asset.dao.HostIdentityDAO;
|
||||||
import com.orion.ops.module.asset.dao.HostKeyDAO;
|
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.HostIdentityDO;
|
||||||
import com.orion.ops.module.asset.entity.domain.HostKeyDO;
|
import com.orion.ops.module.asset.entity.domain.HostKeyDO;
|
||||||
import com.orion.ops.module.asset.entity.dto.HostSshConnectDTO;
|
import com.orion.ops.module.asset.entity.dto.HostSshConnectDTO;
|
||||||
import com.orion.ops.module.asset.enums.HostConfigTypeEnum;
|
import com.orion.ops.module.asset.entity.request.host.HostConnectLogCreateRequest;
|
||||||
import com.orion.ops.module.asset.enums.HostExtraItemEnum;
|
import com.orion.ops.module.asset.enums.*;
|
||||||
import com.orion.ops.module.asset.enums.HostExtraSshAuthTypeEnum;
|
|
||||||
import com.orion.ops.module.asset.enums.HostSshAuthTypeEnum;
|
|
||||||
import com.orion.ops.module.asset.handler.host.config.model.HostSshConfigModel;
|
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.handler.host.extra.model.HostSshExtraModel;
|
||||||
import com.orion.ops.module.asset.service.HostConfigService;
|
import com.orion.ops.module.asset.service.HostConfigService;
|
||||||
@@ -120,11 +119,14 @@ public class HostTerminalServiceImpl implements HostTerminalService {
|
|||||||
// 获取连接配置
|
// 获取连接配置
|
||||||
HostSshConnectDTO connect = this.getHostConnectInfo(host, config, extra);
|
HostSshConnectDTO connect = this.getHostConnectInfo(host, config, extra);
|
||||||
connect.setUserId(userId);
|
connect.setUserId(userId);
|
||||||
connect.setUsername(user.getUsername());
|
|
||||||
connect.setToken(token);
|
connect.setToken(token);
|
||||||
// 设置缓存
|
// 设置缓存
|
||||||
String key = HostTerminalCacheKeyDefine.HOST_TERMINAL_CONNECT.format(token);
|
String key = HostTerminalCacheKeyDefine.HOST_TERMINAL_CONNECT.format(token);
|
||||||
RedisStrings.setJson(key, HostTerminalCacheKeyDefine.HOST_TERMINAL_CONNECT, connect);
|
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);
|
OperatorLogs.add(connect);
|
||||||
return token;
|
return token;
|
||||||
@@ -154,7 +156,7 @@ public class HostTerminalServiceImpl implements HostTerminalService {
|
|||||||
@Override
|
@Override
|
||||||
public SessionStore openSessionStore(HostSshConnectDTO conn) {
|
public SessionStore openSessionStore(HostSshConnectDTO conn) {
|
||||||
Long hostId = conn.getHostId();
|
Long hostId = conn.getHostId();
|
||||||
String address = conn.getAddress();
|
String address = conn.getHostAddress();
|
||||||
String username = conn.getUsername();
|
String username = conn.getUsername();
|
||||||
log.info("HostConnectService-openSessionStore-start hostId: {}, address: {}, username: {}", hostId, address, username);
|
log.info("HostConnectService-openSessionStore-start hostId: {}, address: {}, username: {}", hostId, address, username);
|
||||||
try {
|
try {
|
||||||
@@ -236,7 +238,7 @@ public class HostTerminalServiceImpl implements HostTerminalService {
|
|||||||
HostSshConnectDTO conn = new HostSshConnectDTO();
|
HostSshConnectDTO conn = new HostSshConnectDTO();
|
||||||
conn.setHostId(host.getId());
|
conn.setHostId(host.getId());
|
||||||
conn.setHostName(host.getName());
|
conn.setHostName(host.getName());
|
||||||
conn.setAddress(host.getAddress());
|
conn.setHostAddress(host.getAddress());
|
||||||
conn.setPort(config.getPort());
|
conn.setPort(config.getPort());
|
||||||
conn.setTimeout(config.getConnectTimeout());
|
conn.setTimeout(config.getConnectTimeout());
|
||||||
conn.setUsername(config.getUsername());
|
conn.setUsername(config.getUsername());
|
||||||
@@ -258,6 +260,7 @@ public class HostTerminalServiceImpl implements HostTerminalService {
|
|||||||
if (keyId != null) {
|
if (keyId != null) {
|
||||||
HostKeyDO key = hostKeyDAO.selectById(keyId);
|
HostKeyDO key = hostKeyDAO.selectById(keyId);
|
||||||
Valid.notNull(key, ErrorMessage.KEY_ABSENT);
|
Valid.notNull(key, ErrorMessage.KEY_ABSENT);
|
||||||
|
conn.setKeyId(keyId);
|
||||||
conn.setPublicKey(key.getPublicKey());
|
conn.setPublicKey(key.getPublicKey());
|
||||||
conn.setPrivateKey(key.getPrivateKey());
|
conn.setPrivateKey(key.getPrivateKey());
|
||||||
conn.setPrivateKeyPassword(key.getPassword());
|
conn.setPrivateKeyPassword(key.getPassword());
|
||||||
|
|||||||
Reference in New Issue
Block a user