38 lines
1014 B
Swift
38 lines
1014 B
Swift
//
|
|
// PacketTunnelProvider.swift
|
|
// SingBoxPacketTunnel
|
|
//
|
|
// Created by GFWFighter on 7/24/1402 AP.
|
|
//
|
|
|
|
import NetworkExtension
|
|
|
|
class PacketTunnelProvider: ExtensionProvider {
|
|
|
|
private var upload: Int64 = 0
|
|
private var download: Int64 = 0
|
|
// private var trafficLock: NSLock = NSLock()
|
|
|
|
// var trafficReader: TrafficReader!
|
|
|
|
override func startTunnel(options: [String : NSObject]?) async throws {
|
|
try await super.startTunnel(options: options)
|
|
/*trafficReader = TrafficReader { [unowned self] traffic in
|
|
trafficLock.lock()
|
|
upload += traffic.up
|
|
download += traffic.down
|
|
trafficLock.unlock()
|
|
}*/
|
|
}
|
|
|
|
override func handleAppMessage(_ messageData: Data) async -> Data? {
|
|
let message = String(data: messageData, encoding: .utf8)
|
|
switch message {
|
|
case "stats":
|
|
return "\(upload),\(download)".data(using: .utf8)!
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
}
|