diff --git a/Kwazii/RequestsVC.swift b/Kwazii/RequestsVC.swift index 18a0842..bec0a00 100644 --- a/Kwazii/RequestsVC.swift +++ b/Kwazii/RequestsVC.swift @@ -14,7 +14,7 @@ import XRuler import XProxy final class RequestsVC: RequestsBasic { @IBOutlet weak var detail:NSView! - let report:SFVPNStatistics = SFVPNStatistics.shared + var refreshTime = DispatchSource.makeTimerSource(flags: DispatchSource.TimerFlags(rawValue: 0), queue: DispatchQueue.main) func startProxy(){ SKit.startGCDProxy(port: 10081, dispatchQueue: DispatchQueue.init(label: "Kwazii.dispatch"), socketQueue: DispatchQueue.init(label: "Kwazii.dispatch.socket")) diff --git a/PacketTunnel/PacketTunnelProvider.swift b/PacketTunnel/PacketTunnelProvider.swift index ecbea0e..0e35f7d 100644 --- a/PacketTunnel/PacketTunnelProvider.swift +++ b/PacketTunnel/PacketTunnelProvider.swift @@ -8,7 +8,7 @@ // import NetworkExtension -import SwiftyJSON + import SFSocket import AxLogger import Crashlytics diff --git a/Surf-Mac/AdvancedWindowController.swift b/Surf-Mac/AdvancedWindowController.swift index 49c572c..9c21488 100644 --- a/Surf-Mac/AdvancedWindowController.swift +++ b/Surf-Mac/AdvancedWindowController.swift @@ -69,8 +69,12 @@ class AdvancedWindowController: NSWindowController { }else { ProxyGroupSettings.share.saveiCloudSync(false) } - - try! ProxyGroupSettings.share.save() + do { + try ProxyGroupSettings.share.save() + }catch let e { + alertMesage(e.localizedDescription) + } + window?.performClose(nil) } diff --git a/Surf-Mac/StatusView.swift b/Surf-Mac/StatusView.swift index 26d4d4b..96a2e1b 100644 --- a/Surf-Mac/StatusView.swift +++ b/Surf-Mac/StatusView.swift @@ -10,9 +10,9 @@ import Cocoa import SFSocket import XRuler import NetworkExtension -import SwiftyJSON + class StatusView: NSView { - var report:SFVPNStatistics = SFVPNStatistics.shared + var reportTimer:Timer? @IBOutlet weak var iconView: NSImageView! @IBOutlet weak var upView: NSTextField! @@ -53,24 +53,24 @@ class StatusView: NSView { let now = getInterfaceTraffic() if now.TunSent != 0 && now.TunReceived != 0 { //report.lastTraffice.tx = now.TunSent - - - if now.TunSent > report.totalTraffice.tx { - report.lastTraffice.tx = now.TunSent - report.totalTraffice.tx - - report.lastTraffice.rx = now.TunReceived - report.totalTraffice.rx - report.updateMax() - } - - - - report.totalTraffice.tx = now.TunSent - report.totalTraffice.rx = now.TunReceived - - let t = report.lastTraffice - - - upTrafficeView.stringValue = self.toString(x: t.tx,label: "",speed: true) - downTrafficView.stringValue = self.toString(x: t.rx,label: "",speed: true) + //FIXME: +// if now.TunSent > report.totalTraffice.tx { +// report.lastTraffice.tx = now.TunSent - report.totalTraffice.tx +// +// report.lastTraffice.rx = now.TunReceived - report.totalTraffice.rx +// report.updateMax() +// } +// +// +// +// report.totalTraffice.tx = now.TunSent +// report.totalTraffice.rx = now.TunReceived +// +// let t = report.lastTraffice +// +// +// upTrafficeView.stringValue = self.toString(x: t.tx,label: "",speed: true) +// downTrafficView.stringValue = self.toString(x: t.rx,label: "",speed: true) }else { upTrafficeView.stringValue = "0 B/s" downTrafficView.stringValue = "0 B/s" @@ -129,36 +129,23 @@ class StatusView: NSView { } func processData(data:Data) { - - //results.removeAll() - //print("111") - //let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) - let obj = try! JSON.init(data: data) - if obj.error == nil { - - //alertMessageAction("message dont init",complete: nil) - report.map(j: obj) - - - - + do { + let report:SFStatistics = try JSONDecoder().decode(SFStatistics.self, from: data) //bug here if let m = SFVPNManager.shared.manager, m.connection.status == .connected{ //chartsView.updateFlow(report.netflow) //chartsView.isHidden = false - if let last = report.netflow.totalFlows.last { + if let last = report.netflow.total.last { upTrafficeView.stringValue = self.toString(x: last.tx,label: "",speed: true) downTrafficView.stringValue = self.toString(x: last.rx,label: "",speed: true) } - - }else { } - //print(report.netflow.currentFlows) - - - + }catch let e { + print(e.localizedDescription) } + + } } diff --git a/Surf-Today/RequestsWindowController.swift b/Surf-Today/RequestsWindowController.swift index 4c09eeb..6e2ca70 100644 --- a/Surf-Today/RequestsWindowController.swift +++ b/Surf-Today/RequestsWindowController.swift @@ -7,7 +7,7 @@ // import Cocoa -import SwiftyJSON + import NetworkExtension import SFSocket import XProxy @@ -61,58 +61,42 @@ class RequestsWindowController: NSWindowController,NSTableViewDelegate,NSTableVi let oldresults = results results.removeAll() - let obj = try! JSON.init(data: data) - if obj.error == nil { + let helper = try! JSONDecoder().decode(ConnectionHelper.self, from: data) + + for item in helper.data { - let count = obj["count"] - if count.intValue != 0 { - - let result = obj["data"] - if result.type == .array { - for item in result { - - let json = item.1 - let r = SFRequestInfo.init(rID: 0) - r.map(json) - let rr = oldresults.filter({ info -> Bool in - if info.reqID == r.reqID && info.subID == r.subID { - return true - } - return false - }) - - if rr.isEmpty { - results.append(r) - r.speedtraffice = r.traffice - }else { - let old = rr.first! - if r.traffice.rx > old.traffice.rx { - //sub id reset - r.speedtraffice.rx = r.traffice.rx - old.traffice.rx - } - - if r.traffice.tx > old.traffice.tx{ - //? - r.speedtraffice.tx = r.traffice.tx - old.traffice.tx - } - - - results.append(r) - } - - } + let rr = oldresults.filter({ info -> Bool in + if info.reqID == item.reqID && info.subID == item.subID { + return true } - if results.count > 0 { - results.sort(by: { $0.reqID < $1.reqID }) - + return false + }) + + if rr.isEmpty { + results.append(item) + item.speedtraffice = item.traffice + }else { + let old = rr.first! + if item.traffice.rx > old.traffice.rx { + //sub id reset + item.speedtraffice.rx = item.traffice.rx - old.traffice.rx + } + + if item.traffice.tx > old.traffice.tx{ + //? + item.speedtraffice.tx = item.traffice.tx - old.traffice.tx } + + results.append(item) } - } - + if results.count > 0 { + results.sort(by: { $0.reqID < $1.reqID }) + + } tableView.reloadData() } diff --git a/Surf/AnalyzeTableViewController.swift b/Surf/AnalyzeTableViewController.swift index aff7f76..2b87bb6 100644 --- a/Surf/AnalyzeTableViewController.swift +++ b/Surf/AnalyzeTableViewController.swift @@ -8,7 +8,7 @@ import UIKit import NetworkExtension -import SwiftyJSON + import SFSocket import CoreTelephony import Fabric diff --git a/Surf/RecentReqViewController.swift b/Surf/RecentReqViewController.swift index ae1b8d1..735ba0b 100644 --- a/Surf/RecentReqViewController.swift +++ b/Surf/RecentReqViewController.swift @@ -8,7 +8,7 @@ import UIKit import NetworkExtension -import SwiftyJSON + import SFSocket import XRuler import Xcon diff --git a/Surf/RequestDetailViewController.swift b/Surf/RequestDetailViewController.swift index 6bfd871..29931c3 100644 --- a/Surf/RequestDetailViewController.swift +++ b/Surf/RequestDetailViewController.swift @@ -7,7 +7,7 @@ // import UIKit -import SwiftyJSON + import SFSocket import XRuler import Xcon diff --git a/Surf/RuleResultsViewController.swift b/Surf/RuleResultsViewController.swift index 3a9346c..cf9a710 100644 --- a/Surf/RuleResultsViewController.swift +++ b/Surf/RuleResultsViewController.swift @@ -8,7 +8,7 @@ import UIKit import NetworkExtension -import SwiftyJSON + import SFSocket class RuleResultsViewController: SFTableViewController { diff --git a/Surf/SFCountry.swift b/Surf/SFCountry.swift index 778d9c6..1da3c37 100644 --- a/Surf/SFCountry.swift +++ b/Surf/SFCountry.swift @@ -7,7 +7,7 @@ // import Foundation -import SwiftyJSON + import MMDB import AxLogger class CData { @@ -19,32 +19,42 @@ class CData { } } +//"code": "AD", +//"emoji": "🇦🇩", +//"unicode": "U+1F1E6 U+1F1E9", +//"name": "Andorra", +//"title": "flag for Andorra" + +struct CountryCode:Codable { + var code:String = "" + var emoji:String = "" + var unicode:String = "" + var name:String = "" + var title:String = "" +} +struct CountryCodeList:Codable { + var list:[CountryCode] = [] +} class Country { var db:MMDB? //var data:JSON? - var list:[String:CData] = [:] + var list:[String:CountryCode] = [:] static let setting:Country = { let c = Country() if let path = Bundle.main.path(forResource:"data.json", ofType: nil) { - let d = try! Data.init(contentsOf: URL.init(fileURLWithPath: path)) - let data = try! JSON(data: d) - if data.error == nil { - for (k,v) in data { - let code = v["code"].stringValue - let e = v["emoji"].stringValue - let x = CData.init(c: code, e: e) - c.list[code] = x - //print("\(code),\(e)") + do { + let d = try Data.init(contentsOf: URL.init(fileURLWithPath: path)) + let list = try JSONDecoder().decode(CountryCodeList.self, from: d) + for i in list.list { + + c.list[i.code] = i + } - }else { - //fatalError() - if let error = data.error { - print("\(error)") - } - + }catch let e { + print(e) } - - + + }else { fatalError() diff --git a/XDataService/RequestsBasic.swift b/XDataService/RequestsBasic.swift index b2fb153..7079baf 100644 --- a/XDataService/RequestsBasic.swift +++ b/XDataService/RequestsBasic.swift @@ -7,7 +7,7 @@ // import Cocoa -import SwiftyJSON + import NetworkExtension import SFSocket import XProxy @@ -32,58 +32,58 @@ open class RequestsBasic: NSViewController,NSTableViewDelegate,NSTableViewDataSo public func processData(data:Data) { let oldresults = results results.removeAll() - - let obj = try! JSON.init(data: data) - if obj.error == nil { - - let count = obj["count"] - - if count.intValue != 0 { - - let result = obj["data"] - if result.type == .array { - for item in result { - - let json = item.1 - let r = SFRequestInfo.init(rID: 0) - r.map(json) - let rr = oldresults.filter({ info -> Bool in - if info.reqID == r.reqID && info.subID == r.subID { - return true - } - return false - }) - - if rr.isEmpty { - results.append(r) - r.speedtraffice = r.traffice - }else { - let old = rr.first! - if r.traffice.rx > old.traffice.rx { - //sub id reset - r.speedtraffice.rx = r.traffice.rx - old.traffice.rx - } - - if r.traffice.tx > old.traffice.tx{ - //? - r.speedtraffice.tx = r.traffice.tx - old.traffice.tx - } - - - results.append(r) - } - - } - } - if results.count > 0 { - results.sort(by: { $0.reqID < $1.reqID }) - - } - - } - - - } + //FIXME: +// let obj = try! JSON.init(data: data) +// if obj.error == nil { +// +// let count = obj["count"] +// +// if count.intValue != 0 { +// +// let result = obj["data"] +// if result.type == .array { +// for item in result { +// +// let json = item.1 +// let r = SFRequestInfo.init(rID: 0) +// r.map(json) +// let rr = oldresults.filter({ info -> Bool in +// if info.reqID == r.reqID && info.subID == r.subID { +// return true +// } +// return false +// }) +// +// if rr.isEmpty { +// results.append(r) +// r.speedtraffice = r.traffice +// }else { +// let old = rr.first! +// if r.traffice.rx > old.traffice.rx { +// //sub id reset +// r.speedtraffice.rx = r.traffice.rx - old.traffice.rx +// } +// +// if r.traffice.tx > old.traffice.tx{ +// //? +// r.speedtraffice.tx = r.traffice.tx - old.traffice.tx +// } +// +// +// results.append(r) +// } +// +// } +// } +// if results.count > 0 { +// results.sort(by: { $0.reqID < $1.reqID }) +// +// } +// +// } +// +// +// } tableView.reloadData()