66 lines
1.7 KiB
Swift
66 lines
1.7 KiB
Swift
import Foundation
|
|
|
|
#if IOS_SIMULATOR
|
|
|
|
fileprivate var hook : GlassVPNHook!
|
|
|
|
class SimulatorVPN {
|
|
static var timer: Timer?
|
|
|
|
static func load() {
|
|
QLog.Debug("SQLite path: \(URL.internalDB())")
|
|
|
|
let db = AppDB!
|
|
let deleted = db.dnsLogsDelete("test.com", strict: false)
|
|
try? db.run(sql: "DELETE FROM cache;")
|
|
QLog.Debug("Deleting \(deleted) rows matching 'test.com' (+ \(db.numberOfChanges) in cache)")
|
|
|
|
QLog.Debug("Writing 33 test logs")
|
|
try? db.logWrite("keeptest.com", blocked: false)
|
|
for _ in 1...4 { try? db.logWrite("test.com", blocked: false) }
|
|
for _ in 1...7 { try? db.logWrite("i.test.com", blocked: false) }
|
|
for i in 1...8 { try? db.logWrite("b.test.com", blocked: i>5) }
|
|
for i in 1...13 { try? db.logWrite("bi.test.com", blocked: i%2==0) }
|
|
|
|
db.dnsLogsPersist()
|
|
|
|
QLog.Debug("Creating 4 filters")
|
|
db.setFilter("b.test.com", .blocked)
|
|
db.setFilter("i.test.com", .ignored)
|
|
db.setFilter("bi.test.com", [.blocked, .ignored])
|
|
|
|
QLog.Debug("Done")
|
|
}
|
|
|
|
static func start() {
|
|
hook = GlassVPNHook()
|
|
timer = Timer.repeating(2, call: #selector(insertRandom), on: self)
|
|
}
|
|
|
|
static func stop() {
|
|
timer?.invalidate()
|
|
timer = nil
|
|
hook.cleanUp()
|
|
hook = nil
|
|
}
|
|
|
|
@objc static func insertRandom() {
|
|
//QLog.Debug("Inserting 1 periodic log entry")
|
|
let rand = arc4random() % 8
|
|
let domain: String
|
|
switch rand {
|
|
case 6: domain = "tmp.b.test.com"
|
|
case 7: domain = "tmp.i.test.com"
|
|
case 8: domain = "tmp.bi.test.com"
|
|
default: domain = "\(rand).count.test.com"
|
|
}
|
|
let kill = hook.processDNSRequest(domain)
|
|
if kill { QLog.Info("Blocked: \(domain)") }
|
|
}
|
|
|
|
static func sendMsg(_ messageData: Data) {
|
|
hook.handleAppMessage(messageData)
|
|
}
|
|
}
|
|
#endif
|