using System.Collections.Generic; using System.Linq; using System.Text.Json.Serialization; namespace NetTool.Client.Models; public sealed class RemoteInterfaceAddress { [JsonPropertyName("address")] public string Address { get; init; } = string.Empty; [JsonPropertyName("prefix")] public int Prefix { get; init; } [JsonPropertyName("source")] public string Source { get; init; } = string.Empty; } public sealed class RemoteInterfaceInfo { [JsonPropertyName("name")] public string Name { get; init; } = string.Empty; [JsonPropertyName("system_name")] public string SystemName { get; init; } = string.Empty; [JsonPropertyName("role")] public string Role { get; init; } = string.Empty; [JsonPropertyName("link_up")] public bool LinkUp { get; init; } [JsonPropertyName("is_management_interface")] public bool IsManagementInterface { get; init; } [JsonPropertyName("is_suggested_target")] public bool IsSuggestedTarget { get; init; } [JsonPropertyName("mac")] public string Mac { get; init; } = string.Empty; [JsonPropertyName("gateway")] public string Gateway { get; init; } = string.Empty; [JsonPropertyName("dns")] public IReadOnlyList Dns { get; init; } = []; [JsonPropertyName("ipv4")] public IReadOnlyList IPv4 { get; init; } = []; public string IPv4Summary => IPv4.Count == 0 ? "无" : string.Join("; ", IPv4.Select(item => $"{item.Address}/{item.Prefix}")); public string StatusSummary => IsManagementInterface ? $"管理网口 / {(LinkUp ? "已连接" : "未连接")}" : LinkUp ? "已连接" : "未连接"; public string DisplayName => $"{SystemName} / {StatusSummary}"; } public sealed class RemoteInterfacesInfo { [JsonPropertyName("management_interface")] public string ManagementInterface { get; init; } = string.Empty; [JsonPropertyName("suggested_target_interface")] public string SuggestedTargetInterface { get; init; } = string.Empty; [JsonPropertyName("requires_target_selection")] public bool RequiresTargetSelection { get; init; } [JsonPropertyName("interfaces")] public IReadOnlyList Interfaces { get; init; } = []; }