Ignore forceDisconnect on background recording

This commit is contained in:
relikd
2020-09-17 13:46:18 +02:00
parent 27abdd66f5
commit 71045bf0dd
2 changed files with 11 additions and 9 deletions

View File

@@ -17,19 +17,17 @@ class LDObserverFactory: ObserverFactory {
override func signal(_ event: ProxySocketEvent) {
switch event {
case .receivedRequest(let session, let socket):
if socket.isCancelled ||
(hook.forceDisconnectUnresolvable && session.ipAddress.isEmpty) {
var kill = !hook.isBackgroundRecording && hook.forceDisconnectUnresolvable && session.ipAddress.isEmpty
if kill || socket.isCancelled { // isCancelled is set by branch below
hook.silentlyPrevented(session.host)
socket.forceDisconnect()
return
} else {
kill = hook.processDNSRequest(session.host)
}
let kill = hook.processDNSRequest(session.host)
if kill { socket.forceDisconnect() }
case .readData(let data, on: let socket):
if hook.forceDisconnectSWCD,
data.starts(with: connectMessage),
data.range(of: swcdUserAgent) != nil {
socket.disconnect()
if !hook.isBackgroundRecording, hook.forceDisconnectSWCD,
data.starts(with: connectMessage), data.range(of: swcdUserAgent) != nil {
socket.disconnect() // sets isCancelled above
}
default:
break

View File

@@ -10,6 +10,7 @@ class GlassVPNHook {
private var cachedNotify: CachedConnectionAlert!
private var currentlyRecording: Bool = false
public var isBackgroundRecording: Bool = false
public var forceDisconnectUnresolvable: Bool = false
public var forceDisconnectSWCD: Bool = false
@@ -22,6 +23,7 @@ class GlassVPNHook {
setAutoDelete(PrefsShared.AutoDeleteLogsDays)
cachedNotify = CachedConnectionAlert()
currentlyRecording = PrefsShared.CurrentlyRecording != .Off
isBackgroundRecording = PrefsShared.CurrentlyRecording == .Background
forceDisconnectUnresolvable = PrefsShared.ForceDisconnectUnresolvableDNS
forceDisconnectSWCD = PrefsShared.ForceDisconnectSWCD
}
@@ -34,6 +36,7 @@ class GlassVPNHook {
autoDeleteTimer?.invalidate()
cachedNotify = nil
currentlyRecording = false
isBackgroundRecording = false
forceDisconnectUnresolvable = false
forceDisconnectSWCD = false
}
@@ -57,6 +60,7 @@ class GlassVPNHook {
case "recording-now":
let newState = CurrentRecordingState(rawValue: Int(value) ?? 0)
currentlyRecording = newState != .Off
isBackgroundRecording = newState == .Background
return
case "disconnect-unresolvable":
forceDisconnectUnresolvable = value == "1"