From 44688d84c0da64c33b23746e8f0d1681d81fa6b2 Mon Sep 17 00:00:00 2001 From: yanue Date: Mon, 2 Mar 2020 11:11:00 +0800 Subject: [PATCH] fix #406 --- V2rayU/Base.lproj/ConfigWindow.xib | 4 ++-- V2rayU/ConfigWindow.swift | 27 ++++++--------------- V2rayU/ping.swift | 5 +++- V2rayU/v2ray/V2rayConfig.swift | 38 ++++++++++++++++++------------ V2rayU/v2ray/v2rayOutbound.swift | 2 +- 5 files changed, 37 insertions(+), 39 deletions(-) diff --git a/V2rayU/Base.lproj/ConfigWindow.xib b/V2rayU/Base.lproj/ConfigWindow.xib index 5750dfc..750dbeb 100644 --- a/V2rayU/Base.lproj/ConfigWindow.xib +++ b/V2rayU/Base.lproj/ConfigWindow.xib @@ -174,7 +174,7 @@ Gw - + @@ -274,7 +274,7 @@ Gw - + diff --git a/V2rayU/ConfigWindow.swift b/V2rayU/ConfigWindow.swift index 8a9c72e..17094f9 100644 --- a/V2rayU/ConfigWindow.swift +++ b/V2rayU/ConfigWindow.swift @@ -112,7 +112,6 @@ class ConfigWindowController: NSWindowController, NSWindowDelegate, NSTabViewDel // add default V2rayServer.add(remark: "default", json: "", isValid: false) } - self.shadowsockMethod.removeAllItems() self.shadowsockMethod.addItems(withTitles: V2rayOutboundShadowsockMethod) @@ -206,7 +205,7 @@ class ConfigWindowController: NSWindowController, NSWindowDelegate, NSTabViewDel v2rayConfig = V2rayConfig() defer { - if self.configText.string.count > 0 && v2rayConfig.isValid { + if self.configText.string.count > 0 { self.bindDataToView() } } @@ -241,17 +240,6 @@ class ConfigWindowController: NSWindowController, NSWindowDelegate, NSTabViewDel // export data to V2rayConfig func exportData() { - // ========================== base start ======================= - // base -// v2rayConfig.httpPort = self.httpPort.stringValue.replacingOccurrences(of: ",", with: "") -// v2rayConfig.socksPort = self.sockPort.stringValue.replacingOccurrences(of: ",", with: "") -// v2rayConfig.enableUdp = self.enableUdp.state.rawValue > 0 -// v2rayConfig.enableMux = self.enableMux.state.rawValue > 0 -// v2rayConfig.dns = self.dnsServers.stringValue -// v2rayConfig.mux = Int(self.muxConcurrent.intValue) -// v2rayConfig.isNewVersion = self.version4.state.rawValue > 0 - // ========================== base end ======================= - // ========================== server start ======================= if self.switchProtocol.indexOfSelectedItem >= 0 { v2rayConfig.serverProtocol = self.switchProtocol.titleOfSelectedItem! @@ -279,7 +267,7 @@ class ConfigWindowController: NSWindowController, NSWindowDelegate, NSTabViewDel // socks5 v2rayConfig.serverSocks5.servers[0].address = self.socks5Addr.stringValue - v2rayConfig.serverSocks5.servers[0].port = self.socks5Port.stringValue + v2rayConfig.serverSocks5.servers[0].port = Int(self.socks5Port.intValue) var sockUser = V2rayOutboundSockUser() sockUser.user = self.socks5User.stringValue @@ -373,12 +361,11 @@ class ConfigWindowController: NSWindowController, NSWindowDelegate, NSTabViewDel // socks5 self.socks5Addr.stringValue = v2rayConfig.serverSocks5.servers[0].address - self.socks5Port.stringValue = v2rayConfig.serverSocks5.servers[0].port + self.socks5Port.stringValue = String(v2rayConfig.serverSocks5.servers[0].port) if v2rayConfig.serverSocks5.servers[0].users.count > 0 { self.socks5User.stringValue = v2rayConfig.serverSocks5.servers[0].users[0].user self.socks5Pass.stringValue = v2rayConfig.serverSocks5.servers[0].users[0].pass } - // ========================== server end ======================= // ========================== stream start ======================= @@ -578,7 +565,7 @@ class ConfigWindowController: NSWindowController, NSWindowDelegate, NSTabViewDel } NSWorkspace.shared.open(url) } - + @IBAction func goStreamHelp(_ sender: Any) { guard let url = URL(string: "https://www.v2ray.com/chapter_02/05_transport.html") else { return @@ -703,17 +690,17 @@ class ConfigWindowController: NSWindowController, NSWindowDelegate, NSTabViewDel @IBAction func cancel(_ sender: NSButton) { // hide dock icon and close all opened windows - _ = menuController.showDock(state: false) + _ = menuController.showDock(state: false) } @IBAction func goAdvanceSetting(_ sender: Any) { preferencesWindowController.show(preferencePane: .advanceTab) } - + @IBAction func goSubscribeSetting(_ sender: Any) { preferencesWindowController.show(preferencePane: .subscribeTab) } - + @IBAction func goRoutingRuleSetting(_ sender: Any) { preferencesWindowController.show(preferencePane: .routingTab) } diff --git a/V2rayU/ping.swift b/V2rayU/ping.swift index 21a5f2d..9b147c0 100644 --- a/V2rayU/ping.swift +++ b/V2rayU/ping.swift @@ -31,8 +31,11 @@ class Ping : NSObject { host = cfg.serverShadowsocks.address port = cfg.serverShadowsocks.port } else if cfg.serverProtocol == V2rayProtocolOutbound.socks.rawValue { + if cfg.serverSocks5.servers.count == 0 { + return + } host = cfg.serverSocks5.servers[0].address - port = Int(cfg.serverSocks5.servers[0].port) ?? 0 + port = Int(cfg.serverSocks5.servers[0].port) } else { return } diff --git a/V2rayU/v2ray/V2rayConfig.swift b/V2rayU/v2ray/V2rayConfig.swift index 0c209e2..e4234df 100644 --- a/V2rayU/v2ray/V2rayConfig.swift +++ b/V2rayU/v2ray/V2rayConfig.swift @@ -485,6 +485,7 @@ class V2rayConfig: NSObject { outbound.settingShadowsocks = ss break case V2rayProtocolOutbound.socks: + print("self.serverSocks5", self.serverSocks5) outbound.settingSocks = self.serverSocks5 break default: @@ -549,7 +550,7 @@ class V2rayConfig: NSObject { self.error = "missing socks.address"; return } - if self.serverSocks5.servers[0].port.count == 0 { + if self.serverSocks5.servers[0].port == 0 { self.error = "missing socks.port"; return } @@ -562,10 +563,6 @@ class V2rayConfig: NSObject { // check stream setting switch self.streamNetwork { case V2rayStreamSettings.network.h2.rawValue: - if self.streamH2.path.count == 0 { -// self.error = "missing streamSettings.httpSettings.path"; -// return - } break case V2rayStreamSettings.network.ws.rawValue: break @@ -999,20 +996,31 @@ class V2rayConfig: NSObject { case .socks: var settingSocks = V2rayOutboundSocks() - settingSocks.servers[0].address = jsonParams["settings"]["address"].stringValue - settingSocks.servers[0].port = jsonParams["settings"]["port"].stringValue + var servers: [V2rayOutboundSockServer] = [] - var users: [V2rayOutboundSockUser] = [] - jsonParams["settings"]["users"].arrayValue.forEach { + jsonParams["settings"]["servers"].arrayValue.forEach { val in - var user = V2rayOutboundSockUser() - user.user = val["user"].stringValue - user.pass = val["pass"].stringValue - user.level = val["level"].intValue + var server = V2rayOutboundSockServer() + server.port = val["port"].intValue + server.address = val["address"].stringValue + + var users: [V2rayOutboundSockUser] = [] + val["users"].arrayValue.forEach { + val in + var user = V2rayOutboundSockUser() + user.user = val["user"].stringValue + user.pass = val["pass"].stringValue + user.level = val["level"].intValue + // append + users.append(user) + } + + server.users = users // append - users.append(user) + servers.append(server) } - settingSocks.servers[0].users = users + + settingSocks.servers = servers // set into outbound v2rayOutbound.settingSocks = settingSocks diff --git a/V2rayU/v2ray/v2rayOutbound.swift b/V2rayU/v2ray/v2rayOutbound.swift index 1b12c4b..c3827b8 100644 --- a/V2rayU/v2ray/v2rayOutbound.swift +++ b/V2rayU/v2ray/v2rayOutbound.swift @@ -188,7 +188,7 @@ struct V2rayOutboundSocks: Codable { struct V2rayOutboundSockServer: Codable { var address: String = "" - var port: String = "" + var port: Int = 0 var users: [V2rayOutboundSockUser] = [V2rayOutboundSockUser()] }