fix
This commit is contained in:
parent
fd22574db1
commit
176d3ebe45
@ -34,7 +34,6 @@ struct SDLAPIClient {
|
|||||||
NSLog("response is: \(String(bytes: data, encoding: .utf8))")
|
NSLog("response is: \(String(bytes: data, encoding: .utf8))")
|
||||||
|
|
||||||
let apiResponse = try JSONDecoder().decode(SDLAPIResponse<T>.self, from: data)
|
let apiResponse = try JSONDecoder().decode(SDLAPIResponse<T>.self, from: data)
|
||||||
|
|
||||||
if apiResponse.code == 0, let data = apiResponse.data {
|
if apiResponse.code == 0, let data = apiResponse.data {
|
||||||
return data
|
return data
|
||||||
} else if let message = apiResponse.message {
|
} else if let message = apiResponse.message {
|
||||||
|
|||||||
@ -8,16 +8,6 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import Observation
|
import Observation
|
||||||
|
|
||||||
@Observable
|
|
||||||
class NetworkModel {
|
|
||||||
|
|
||||||
// 连接状态
|
|
||||||
enum ConnectState {
|
|
||||||
case waitAuth
|
|
||||||
case connected
|
|
||||||
case disconnected
|
|
||||||
}
|
|
||||||
|
|
||||||
// 资源列表
|
// 资源列表
|
||||||
struct Resource: Codable {
|
struct Resource: Codable {
|
||||||
var id: Int
|
var id: Int
|
||||||
@ -38,8 +28,8 @@ class NetworkModel {
|
|||||||
var id: Int
|
var id: Int
|
||||||
var name: String
|
var name: String
|
||||||
var ip: String
|
var ip: String
|
||||||
var system: String
|
var system: String?
|
||||||
var connectStatus: Int
|
var connectionStatus: String
|
||||||
|
|
||||||
func hash(into hasher: inout Hasher) {
|
func hash(into hasher: inout Hasher) {
|
||||||
hasher.combine(id)
|
hasher.combine(id)
|
||||||
@ -50,7 +40,7 @@ class NetworkModel {
|
|||||||
case name
|
case name
|
||||||
case ip
|
case ip
|
||||||
case system
|
case system
|
||||||
case connectStatus = "connect_status"
|
case connectionStatus = "connection_status"
|
||||||
}
|
}
|
||||||
|
|
||||||
static func == (lhs: Self, rhs: Self) -> Bool {
|
static func == (lhs: Self, rhs: Self) -> Bool {
|
||||||
@ -68,7 +58,35 @@ class NetworkModel {
|
|||||||
case resourceList = "resource_list"
|
case resourceList = "resource_list"
|
||||||
case nodeList = "node_list"
|
case nodeList = "node_list"
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 节点详情
|
||||||
|
struct NodeDetail: Codable {
|
||||||
|
let id: Int
|
||||||
|
let name: String
|
||||||
|
let ip: String
|
||||||
|
let system: String?
|
||||||
|
let connectionStatus: String
|
||||||
|
let resourceList: [Resource]
|
||||||
|
|
||||||
|
enum CodingKeys: String, CodingKey {
|
||||||
|
case id
|
||||||
|
case name
|
||||||
|
case ip
|
||||||
|
case system
|
||||||
|
case connectionStatus = "connection_status"
|
||||||
|
case resourceList = "resource_list"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Observable
|
||||||
|
class NetworkModel {
|
||||||
|
|
||||||
|
// 连接状态
|
||||||
|
enum ConnectState {
|
||||||
|
case waitAuth
|
||||||
|
case connected
|
||||||
|
case disconnected
|
||||||
}
|
}
|
||||||
|
|
||||||
// 状态管理
|
// 状态管理
|
||||||
@ -104,7 +122,6 @@ class NetworkModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@MainActor
|
|
||||||
func connect(networkSession: UserContext.NetworkSession) async throws {
|
func connect(networkSession: UserContext.NetworkSession) async throws {
|
||||||
let params: [String: Any] = [
|
let params: [String: Any] = [
|
||||||
"client_id": SystemConfig.getClientId(),
|
"client_id": SystemConfig.getClientId(),
|
||||||
|
|||||||
@ -159,13 +159,15 @@ struct NetworkDisconnctedView: View {
|
|||||||
|
|
||||||
// 执行登陆操作
|
// 执行登陆操作
|
||||||
private func startVpn() async throws {
|
private func startVpn() async throws {
|
||||||
let clientId = SystemConfig.getClientId()
|
guard let networkSession = userContext.networkSession else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
let options = SystemConfig.getOptions(networkId: 8,
|
let options = SystemConfig.getOptions(networkId: UInt32(networkSession.networkId),
|
||||||
networkDomain: "punchnet.com",
|
networkDomain: networkSession.networkDomain,
|
||||||
ip: "10.211.179.1",
|
ip: "",
|
||||||
maskLen: 24,
|
maskLen: 24,
|
||||||
accessToken: "accessToken1234",
|
accessToken: networkSession.accessToken,
|
||||||
identityId: 1234,
|
identityId: 1234,
|
||||||
hostname: "mysql",
|
hostname: "mysql",
|
||||||
noticePort: 1234)
|
noticePort: 1234)
|
||||||
@ -191,7 +193,7 @@ struct NetworkResourceGroupView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct NetworkResourceView: View {
|
struct NetworkResourceView: View {
|
||||||
var resource: NetworkModel.Resource
|
var resource: Resource
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack {
|
VStack {
|
||||||
@ -237,12 +239,12 @@ struct NetworkDeviceGroupView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct NetworkNodeHeadView: View {
|
struct NetworkNodeHeadView: View {
|
||||||
var node: NetworkModel.Node
|
var node: Node
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack {
|
VStack {
|
||||||
HStack {
|
HStack {
|
||||||
Text(node.connectStatus == 1 ? "yes" : "no")
|
Text(node.connectionStatus)
|
||||||
|
|
||||||
Text(node.name)
|
Text(node.name)
|
||||||
.font(.system(size: 14, weight: .regular))
|
.font(.system(size: 14, weight: .regular))
|
||||||
@ -256,7 +258,9 @@ struct NetworkNodeHeadView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct NetworkNodeDetailView: View {
|
struct NetworkNodeDetailView: View {
|
||||||
@Binding var node: NetworkModel.Node?
|
@Environment(UserContext.self) var userContext: UserContext
|
||||||
|
@Binding var node: Node?
|
||||||
|
@State private var resources: [Resource] = []
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Group {
|
Group {
|
||||||
@ -265,40 +269,56 @@ struct NetworkNodeDetailView: View {
|
|||||||
Section {
|
Section {
|
||||||
HStack {
|
HStack {
|
||||||
Text("连接状态")
|
Text("连接状态")
|
||||||
|
Text("\(node.connectionStatus)")
|
||||||
Text("\(node.connectStatus)")
|
|
||||||
|
|
||||||
Spacer()
|
Spacer()
|
||||||
}
|
}
|
||||||
|
|
||||||
HStack {
|
HStack {
|
||||||
Text("虚拟IPv4")
|
Text("虚拟IPv4")
|
||||||
|
|
||||||
Text("\(node.ip)")
|
Text("\(node.ip)")
|
||||||
Spacer()
|
Spacer()
|
||||||
}
|
}
|
||||||
|
|
||||||
HStack {
|
HStack {
|
||||||
Text("操作系统")
|
Text("操作系统")
|
||||||
Text("\(node.system)")
|
Text(node.system ?? "未知")
|
||||||
Spacer()
|
Spacer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Section("服务列表") {
|
Section("服务列表") {
|
||||||
// ForEach(device.resources, id: \.id) { resource in
|
ForEach(resources, id: \.id) { resource in
|
||||||
// HStack {
|
HStack {
|
||||||
// Text("\(resource.name)")
|
Text("\(resource.name)")
|
||||||
// Text("\(resource.schema)")
|
Text("\(resource.url)")
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
}
|
||||||
|
.task {
|
||||||
|
await self.loadNodeResources()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
EmptyView()
|
EmptyView()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func loadNodeResources() async {
|
||||||
|
guard let networkSession = userContext.networkSession, let id = self.node?.id else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let params: [String: Any] = [
|
||||||
|
"client_id": SystemConfig.getClientId(),
|
||||||
|
"access_token": networkSession.accessToken,
|
||||||
|
"id": id
|
||||||
|
]
|
||||||
|
|
||||||
|
if let nodeDetail = try? await SDLAPIClient.doPost(path: "/get_node_resources", params: params, as: NodeDetail.self) {
|
||||||
|
self.resources = nodeDetail.resourceList
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct NetworkWaitAuthView: View {
|
struct NetworkWaitAuthView: View {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user