Locate profiles via relative URLs
Avoid absolute URLs, profiles directory is always relative to documents. Assume profiles to be based in the documents root unless directory is != nil. Given that, starting from iOS 8, the documents location can change from time to time, could this fix #19?
This commit is contained in:
parent
2197c96bd9
commit
36995e089b
|
@ -59,7 +59,7 @@ extension ConnectionService {
|
||||||
|
|
||||||
func pendingConfigurationURLs() -> [URL] {
|
func pendingConfigurationURLs() -> [URL] {
|
||||||
do {
|
do {
|
||||||
let list = try FileManager.default.contentsOfDirectory(at: directory, includingPropertiesForKeys: nil, options: [])
|
let list = try FileManager.default.contentsOfDirectory(at: rootURL, includingPropertiesForKeys: nil, options: [])
|
||||||
return list.filter { $0.pathExtension == "ovpn" }
|
return list.filter { $0.pathExtension == "ovpn" }
|
||||||
} catch let e {
|
} catch let e {
|
||||||
log.error("Could not list imported configurations: \(e)")
|
log.error("Could not list imported configurations: \(e)")
|
||||||
|
|
|
@ -83,14 +83,18 @@ class ConnectionService: Codable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lazy var directory = FileManager.default.userURL(for: .documentDirectory, appending: nil)
|
var directory: String? = nil
|
||||||
|
|
||||||
|
var rootURL: URL {
|
||||||
|
return FileManager.default.userURL(for: .documentDirectory, appending: directory)
|
||||||
|
}
|
||||||
|
|
||||||
private var providersURL: URL {
|
private var providersURL: URL {
|
||||||
return directory.appendingPathComponent(AppConstants.Store.providersDirectory)
|
return rootURL.appendingPathComponent(AppConstants.Store.providersDirectory)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var hostsURL: URL {
|
private var hostsURL: URL {
|
||||||
return directory.appendingPathComponent(AppConstants.Store.hostsDirectory)
|
return rootURL.appendingPathComponent(AppConstants.Store.hostsDirectory)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var build: Int
|
private var build: Int
|
||||||
|
|
|
@ -35,12 +35,10 @@ class TransientStore {
|
||||||
|
|
||||||
static let shared = TransientStore()
|
static let shared = TransientStore()
|
||||||
|
|
||||||
private let rootURL: URL
|
|
||||||
|
|
||||||
private let serviceURL: URL
|
|
||||||
|
|
||||||
let service: ConnectionService
|
let service: ConnectionService
|
||||||
|
|
||||||
|
private let serviceURL = FileManager.default.userURL(for: .documentDirectory, appending: AppConstants.Store.serviceFilename)
|
||||||
|
|
||||||
var didHandleSubreddit: Bool {
|
var didHandleSubreddit: Bool {
|
||||||
get {
|
get {
|
||||||
return UserDefaults.standard.bool(forKey: Keys.didHandleSubreddit)
|
return UserDefaults.standard.bool(forKey: Keys.didHandleSubreddit)
|
||||||
|
@ -51,9 +49,6 @@ class TransientStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
private init() {
|
private init() {
|
||||||
rootURL = FileManager.default.userURL(for: .documentDirectory, appending: nil)
|
|
||||||
serviceURL = rootURL.appendingPathComponent(AppConstants.Store.serviceFilename)
|
|
||||||
|
|
||||||
let cfg = AppConstants.VPN.baseConfiguration()
|
let cfg = AppConstants.VPN.baseConfiguration()
|
||||||
do {
|
do {
|
||||||
ConnectionService.migrateJSON(at: serviceURL, to: serviceURL)
|
ConnectionService.migrateJSON(at: serviceURL, to: serviceURL)
|
||||||
|
@ -64,7 +59,6 @@ class TransientStore {
|
||||||
log.verbose(content)
|
log.verbose(content)
|
||||||
}
|
}
|
||||||
service = try JSONDecoder().decode(ConnectionService.self, from: data)
|
service = try JSONDecoder().decode(ConnectionService.self, from: data)
|
||||||
service.directory = rootURL
|
|
||||||
service.baseConfiguration = cfg
|
service.baseConfiguration = cfg
|
||||||
service.loadProfiles()
|
service.loadProfiles()
|
||||||
} catch let e {
|
} catch let e {
|
||||||
|
@ -73,7 +67,6 @@ class TransientStore {
|
||||||
withAppGroup: GroupConstants.App.appGroup,
|
withAppGroup: GroupConstants.App.appGroup,
|
||||||
baseConfiguration: cfg
|
baseConfiguration: cfg
|
||||||
)
|
)
|
||||||
service.directory = rootURL
|
|
||||||
|
|
||||||
// // hardcoded loading
|
// // hardcoded loading
|
||||||
// _ = service.addProfile(ProviderConnectionProfile(name: .pia), credentials: nil)
|
// _ = service.addProfile(ProviderConnectionProfile(name: .pia), credentials: nil)
|
||||||
|
|
Loading…
Reference in New Issue