55 lines
1.8 KiB
Swift
55 lines
1.8 KiB
Swift
// SPDX-License-Identifier: MIT
|
|
// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
|
|
|
|
import Foundation
|
|
import os.log
|
|
|
|
extension FileManager {
|
|
static var appGroupId: String? {
|
|
#if os(iOS)
|
|
let appGroupIdInfoDictionaryKey = "com.wireguard.ios.app_group_id"
|
|
#elseif os(macOS)
|
|
let appGroupIdInfoDictionaryKey = "com.wireguard.macos.app_group_id"
|
|
#else
|
|
#error("Unimplemented")
|
|
#endif
|
|
return Bundle.main.object(forInfoDictionaryKey: appGroupIdInfoDictionaryKey) as? String
|
|
}
|
|
private static var sharedFolderURL: URL? {
|
|
guard let appGroupId = FileManager.appGroupId else {
|
|
os_log("Cannot obtain app group ID from bundle", log: OSLog.default, type: .error)
|
|
return nil
|
|
}
|
|
guard let sharedFolderURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroupId) else {
|
|
wg_log(.error, message: "Cannot obtain shared folder URL")
|
|
return nil
|
|
}
|
|
return sharedFolderURL
|
|
}
|
|
|
|
static var networkExtensionLogFileURL: URL? {
|
|
return sharedFolderURL?.appendingPathComponent("tunnel-log.bin")
|
|
}
|
|
|
|
static var networkExtensionLastErrorFileURL: URL? {
|
|
return sharedFolderURL?.appendingPathComponent("last-error.txt")
|
|
}
|
|
|
|
static var appLogFileURL: URL? {
|
|
guard let documentDirURL = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else {
|
|
wg_log(.error, message: "Cannot obtain app documents folder URL")
|
|
return nil
|
|
}
|
|
return documentDirURL.appendingPathComponent("app-log.bin")
|
|
}
|
|
|
|
static func deleteFile(at url: URL) -> Bool {
|
|
do {
|
|
try FileManager.default.removeItem(at: url)
|
|
} catch {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
}
|