mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-17 23:18:27 +02:00
91 lines
3.2 KiB
Swift
91 lines
3.2 KiB
Swift
//
|
|
/*
|
|
* Copyright (c) 2021 BWI GmbH
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import Foundation
|
|
import DTTJailbreakDetection
|
|
|
|
@objcMembers class JailbreakCheck : NSObject, SecurityCheck {
|
|
|
|
func isBreached() -> Bool {
|
|
if BwiBuildSettings.forcedNoneJailbroken {
|
|
return DTTJailbreakDetection.isJailbroken()
|
|
}
|
|
return false
|
|
}
|
|
|
|
func breachAlert() -> UIAlertController {
|
|
self.dismissAnyAlertControllerIfPresent()
|
|
|
|
self.logoutAndCleanUp()
|
|
|
|
let alert = UIAlertController(title: BWIL10n.jailbreakAlertTitle, message: BWIL10n.jailbreakAlertMessage(AppInfo.current.displayName), preferredStyle: .alert)
|
|
|
|
alert.addAction(UIAlertAction(title: VectorL10n.close, style: .destructive, handler: { _ in
|
|
exit(0)
|
|
}))
|
|
|
|
return alert
|
|
}
|
|
|
|
private func logoutAndCleanUp() {
|
|
/*
|
|
* Logout when the user is still logged in.
|
|
*/
|
|
let appDelegate = AppDelegate.theDelegate()
|
|
|
|
appDelegate.logoutSendingRequestServer(true, completion: { (finished: Bool) -> Void in
|
|
|
|
if (finished) {
|
|
// PART I - Remove all caches.
|
|
//URLCache.shared.removeAllCachedResponses()
|
|
|
|
// PART II - Remove the whole library folder.
|
|
let pathLibraries = NSSearchPathForDirectoriesInDomains(.allLibrariesDirectory, .userDomainMask, true)
|
|
let mainLibraryPath = pathLibraries[0]
|
|
|
|
do {
|
|
let fileManager = FileManager .default
|
|
let fileArray = try fileManager .contentsOfDirectory(atPath: mainLibraryPath)
|
|
|
|
for filename in fileArray {
|
|
let writePath = NSURL(fileURLWithPath: mainLibraryPath).appendingPathComponent(filename)
|
|
try fileManager.removeItem(at: writePath!)
|
|
}
|
|
}
|
|
catch {
|
|
}
|
|
|
|
// PART III - Remove the whole documnent folder.
|
|
let pathDocument = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
|
|
let mainDocumentPath = pathDocument[0]
|
|
|
|
do {
|
|
let fileManager = FileManager .default
|
|
let fileArray = try fileManager .contentsOfDirectory(atPath: mainDocumentPath)
|
|
|
|
for filename in fileArray {
|
|
let writePath = NSURL(fileURLWithPath: mainDocumentPath).appendingPathComponent(filename)
|
|
try fileManager.removeItem(at: writePath!)
|
|
}
|
|
}
|
|
catch {
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|