diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/dao/HostDAO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/dao/HostDAO.java index fdd98720..ac955ee2 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/dao/HostDAO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/dao/HostDAO.java @@ -37,6 +37,7 @@ public interface HostDAO extends IMapper { List> BASE_COLUMN = Arrays.asList( HostDO::getId, HostDO::getType, + HostDO::getOsType, HostDO::getName, HostDO::getCode, HostDO::getAddress, diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/HostDO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/HostDO.java index 5161b3ba..6a064618 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/HostDO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/domain/HostDO.java @@ -49,6 +49,10 @@ public class HostDO extends BaseDO { @TableField("type") private String type; + @Schema(description = "系统类型") + @TableField("os_type") + private String osType; + @Schema(description = "主机名称") @TableField("name") private String name; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/dto/HostCacheDTO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/dto/HostCacheDTO.java index 2547637f..31affa65 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/dto/HostCacheDTO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/dto/HostCacheDTO.java @@ -44,6 +44,9 @@ public class HostCacheDTO implements LongCacheIdModel, Serializable { @Schema(description = "主机类型") private String type; + @Schema(description = "系统类型") + private String osType; + @Schema(description = "主机名称") private String name; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostCreateRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostCreateRequest.java index a70b30e8..16415183 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostCreateRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostCreateRequest.java @@ -46,6 +46,11 @@ public class HostCreateRequest implements Serializable { @Schema(description = "主机类型") private String type; + @NotBlank + @Size(max = 12) + @Schema(description = "系统类型") + private String osType; + @NotBlank @Size(max = 64) @Schema(description = "主机名称") diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostQueryRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostQueryRequest.java index 387667e5..8d64ade9 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostQueryRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostQueryRequest.java @@ -59,6 +59,10 @@ public class HostQueryRequest extends PageRequest { @Schema(description = "主机类型") private String type; + @Size(max = 12) + @Schema(description = "系统类型") + private String osType; + @Size(max = 8) @Schema(description = "主机状态") private String status; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostUpdateRequest.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostUpdateRequest.java index eda5a50f..e8ec6f2e 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostUpdateRequest.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/request/host/HostUpdateRequest.java @@ -43,6 +43,11 @@ public class HostUpdateRequest implements Serializable { @Schema(description = "id") private Long id; + @NotBlank + @Size(max = 12) + @Schema(description = "系统类型") + private String osType; + @NotBlank @Size(max = 64) @Schema(description = "主机名称") diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/HostVO.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/HostVO.java index e956f4d9..a3f72848 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/HostVO.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/entity/vo/HostVO.java @@ -49,6 +49,9 @@ public class HostVO implements Serializable { @Schema(description = "主机类型") private String type; + @Schema(description = "系统类型") + private String osType; + @Schema(description = "主机名称") private String name; diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/model/HostSshConfigModel.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/model/HostSshConfigModel.java index b4f03932..562fca4d 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/model/HostSshConfigModel.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/model/HostSshConfigModel.java @@ -50,13 +50,6 @@ public class HostSshConfigModel implements GenericsDataModel, UpdatePasswordActi @Size(max = 12) private String authType; - /** - * 系统类型 - */ - @NotBlank - @Size(max = 12) - private String osType; - /** * 密码 */ diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java index 0221eb41..bd7742dd 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java @@ -60,7 +60,6 @@ public class HostSshConfigStrategy extends AbstractGenericsDataStrategy c .eq(HostDO::getId, searchValue).or() .like(HostDO::getName, searchValue).or() diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalServiceImpl.java index c5a1e1f6..f11dece2 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/TerminalServiceImpl.java @@ -229,7 +229,7 @@ public class TerminalServiceImpl implements TerminalService { conn.setHostName(host.getName()); conn.setHostAddress(host.getAddress()); conn.setHostPort(host.getPort()); - conn.setOsType(config.getOsType()); + conn.setOsType(host.getOsType()); conn.setTimeout(config.getConnectTimeout()); conn.setCharset(config.getCharset()); conn.setFileNameCharset(config.getFileNameCharset()); diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/UploadTaskServiceImpl.java b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/UploadTaskServiceImpl.java index 372747b5..b58604d6 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/UploadTaskServiceImpl.java +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/UploadTaskServiceImpl.java @@ -394,10 +394,14 @@ public class UploadTaskServiceImpl implements UploadTaskService { if (containsEnv) { // 获取主机配置信息 Map hostConfigMap = hostConfigService.buildHostConfigMap(hosts, HostTypeEnum.SSH); - hostConfigMap.forEach((k, v) -> { + for (HostDO host : hosts) { + Long id = host.getId(); // 替换占位符 - String username = v.getUsername(); - String home = PathUtils.getHomePath(HostSshOsTypeEnum.isWindows(v.getOsType()), username); + String username = Optional.ofNullable(id) + .map(hostConfigMap::get) + .map(HostSshConfigModel::getUsername) + .orElse(Const.EMPTY); + String home = PathUtils.getHomePath(HostSshOsTypeEnum.isWindows(host.getOsType()), username); // 替换环境变量路径 Map env = Maps.newMap(4); env.put(ExtraFieldConst.USERNAME, username); @@ -405,9 +409,9 @@ public class UploadTaskServiceImpl implements UploadTaskService { // 设置主机上传路径 String realRemotePath = Files1.getPath(Strings.format(remotePath, env)); for (UploadTaskFileRequest file : files) { - realRemoteFilePathMap.put(k, file.getFileId(), Files1.getPath(realRemotePath, file.getFilePath())); + realRemoteFilePathMap.put(id, file.getFileId(), Files1.getPath(realRemotePath, file.getFilePath())); } - }); + } } else { // 无占位符 for (UploadTaskFileRequest file : files) { diff --git a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/HostMapper.xml b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/HostMapper.xml index 73718447..a1f75c3f 100644 --- a/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/HostMapper.xml +++ b/orion-visor-module-asset/orion-visor-module-asset-service/src/main/resources/mapper/HostMapper.xml @@ -6,6 +6,7 @@ + @@ -21,7 +22,7 @@ - id, type, name, code, address, port, status, config, create_time, update_time, creator, updater, deleted + id, type, os_type, name, code, address, port, status, config, create_time, update_time, creator, updater, deleted diff --git a/orion-visor-ui/src/api/asset/host-extra.ts b/orion-visor-ui/src/api/asset/host-extra.ts index dea26bf2..a2a1e67e 100644 --- a/orion-visor-ui/src/api/asset/host-extra.ts +++ b/orion-visor-ui/src/api/asset/host-extra.ts @@ -1,13 +1,5 @@ import axios from 'axios'; -/** - * 主机别名修改请求 - */ -export interface HostAliasUpdateRequest { - id?: number; - name?: string; -} - /** * 主机拓展信息查询请求 */ diff --git a/orion-visor-ui/src/api/asset/host.ts b/orion-visor-ui/src/api/asset/host.ts index 7310ec5a..c415099b 100644 --- a/orion-visor-ui/src/api/asset/host.ts +++ b/orion-visor-ui/src/api/asset/host.ts @@ -12,6 +12,7 @@ export type HostType = 'SSH' | string | undefined; */ export interface HostCreateRequest { type?: string; + osType?: string; name?: string; code?: string; address?: string; @@ -50,6 +51,7 @@ export interface HostQueryRequest extends Pagination { searchValue?: string; id?: number; type?: string; + osType?: string; name?: string; code?: string; address?: string; @@ -64,6 +66,7 @@ export interface HostQueryRequest extends Pagination { export interface HostQueryResponse extends TableData, HostQueryResponseExtra { id: number; type: string; + osType?: string; name: string; code: string; address: string; diff --git a/orion-visor-ui/src/assets/images/icon/os_linux.svg b/orion-visor-ui/src/assets/images/icon/os_linux.svg new file mode 100644 index 00000000..75c4cae1 --- /dev/null +++ b/orion-visor-ui/src/assets/images/icon/os_linux.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + diff --git a/orion-visor-ui/src/assets/images/icon/os_windows.svg b/orion-visor-ui/src/assets/images/icon/os_windows.svg new file mode 100644 index 00000000..d34c68c8 --- /dev/null +++ b/orion-visor-ui/src/assets/images/icon/os_windows.svg @@ -0,0 +1,6 @@ + + + diff --git a/orion-visor-ui/src/views/asset/host-config/components/ssh-config-form.vue b/orion-visor-ui/src/views/asset/host-config/components/ssh-config-form.vue index 8b8a4d51..c0b591ff 100644 --- a/orion-visor-ui/src/views/asset/host-config/components/ssh-config-form.vue +++ b/orion-visor-ui/src/views/asset/host-config/components/ssh-config-form.vue @@ -26,14 +26,6 @@ label-align="right" :auto-label-width="true" :rules="rules"> - - - - ({ - osType: undefined, username: undefined, password: undefined, authType: SshAuthType.PASSWORD, diff --git a/orion-visor-ui/src/views/asset/host-config/types/const.ts b/orion-visor-ui/src/views/asset/host-config/types/const.ts index 286b8e83..2802b547 100644 --- a/orion-visor-ui/src/views/asset/host-config/types/const.ts +++ b/orion-visor-ui/src/views/asset/host-config/types/const.ts @@ -1,6 +1,5 @@ // 主机 SSH 配置 export interface HostSshConfig { - osType?: string; username?: string; password?: string; authType?: string; diff --git a/orion-visor-ui/src/views/asset/host-config/types/ssh-form.rules.ts b/orion-visor-ui/src/views/asset/host-config/types/ssh-form.rules.ts index 772d9268..18cda195 100644 --- a/orion-visor-ui/src/views/asset/host-config/types/ssh-form.rules.ts +++ b/orion-visor-ui/src/views/asset/host-config/types/ssh-form.rules.ts @@ -1,10 +1,5 @@ import type { FieldRule } from '@arco-design/web-vue'; -export const osType = [{ - required: true, - message: '请选择系统类型' -}] as FieldRule[]; - export const authType = [{ required: true, message: '请选择认证方式' @@ -55,7 +50,6 @@ export const fileContentCharset = [{ }] as FieldRule[]; export default { - osType, authType, keyId, identityId, diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-card-list.vue b/orion-visor-ui/src/views/asset/host-list/components/host-card-list.vue index cc632bdb..ae788bf4 100644 --- a/orion-visor-ui/src/views/asset/host-list/components/host-card-list.vue +++ b/orion-visor-ui/src/views/asset/host-list/components/host-card-list.vue @@ -78,6 +78,13 @@ placeholder="请选择主机类型" allow-clear /> + + + +