|
|
|
@ -8,7 +8,6 @@ let app = NSApplication.shared
|
|
|
|
|
class LokinetMain: NSObject, NSApplicationDelegate {
|
|
|
|
|
var vpnManager = NETunnelProviderManager()
|
|
|
|
|
let lokinetComponent = "com.loki-project.lokinet.network-extension"
|
|
|
|
|
var dnsComponent = "com.loki-project.lokinet.dns-proxy"
|
|
|
|
|
|
|
|
|
|
func applicationDidFinishLaunching(_: Notification) {
|
|
|
|
|
setupVPNJizz()
|
|
|
|
@ -18,63 +17,6 @@ class LokinetMain: NSObject, NSApplicationDelegate {
|
|
|
|
|
app.terminate(self)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func setupDNSJizz() {
|
|
|
|
|
NSLog("setting up dns settings")
|
|
|
|
|
let dns = NEDNSSettingsManager.shared()
|
|
|
|
|
let settings = NEDNSSettings(servers: ["172.16.0.1"])
|
|
|
|
|
settings.matchDomains = ["*.loki", "*.snode"]
|
|
|
|
|
settings.matchDomainsNoSearch = true
|
|
|
|
|
settings.domainName = "localhost.loki"
|
|
|
|
|
dns.dnsSettings = settings
|
|
|
|
|
dns.loadFromPreferences { [self] (error: Error?) -> Void in
|
|
|
|
|
if let error = error {
|
|
|
|
|
NSLog(error.localizedDescription)
|
|
|
|
|
bail()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
dns.saveToPreferences { [self] (error: Error?) -> Void in
|
|
|
|
|
if let error = error {
|
|
|
|
|
NSLog(error.localizedDescription)
|
|
|
|
|
bail()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
NSLog("dns setting set up probably")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func setupDNSProxyJizz() {
|
|
|
|
|
NSLog("setting up dns proxy")
|
|
|
|
|
let dns = NEDNSProxyManager.shared()
|
|
|
|
|
let provider = NEDNSProxyProviderProtocol()
|
|
|
|
|
provider.providerBundleIdentifier = dnsComponent
|
|
|
|
|
provider.username = "Anonymous"
|
|
|
|
|
provider.serverAddress = "loki.loki"
|
|
|
|
|
provider.includeAllNetworks = true
|
|
|
|
|
provider.enforceRoutes = true
|
|
|
|
|
dns.providerProtocol = provider
|
|
|
|
|
dns.localizedDescription = "lokinet dns"
|
|
|
|
|
dns.loadFromPreferences { [self] (error: Error?) -> Void in
|
|
|
|
|
if let error = error {
|
|
|
|
|
NSLog(error.localizedDescription)
|
|
|
|
|
bail()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
provider.includeAllNetworks = true
|
|
|
|
|
provider.enforceRoutes = true
|
|
|
|
|
dns.isEnabled = true
|
|
|
|
|
dns.saveToPreferences { [self] (error: Error?) -> Void in
|
|
|
|
|
if let error = error {
|
|
|
|
|
NSLog(error.localizedDescription)
|
|
|
|
|
bail()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
self.initDNSObserver()
|
|
|
|
|
NSLog("dns is up probably")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func setupVPNJizz() {
|
|
|
|
|
NSLog("Starting up lokinet")
|
|
|
|
|
NETunnelProviderManager.loadAllFromPreferences { [self] (savedManagers: [NETunnelProviderManager]?, error: Error?) in
|
|
|
|
@ -104,9 +46,6 @@ class LokinetMain: NSObject, NSApplicationDelegate {
|
|
|
|
|
self.vpnManager.protocolConfiguration = providerProtocol
|
|
|
|
|
self.vpnManager.isEnabled = true
|
|
|
|
|
// self.vpnManager.isOnDemandEnabled = true
|
|
|
|
|
let rules = NEAppRule()
|
|
|
|
|
rules.matchDomains = ["*.snode", "*.loki"]
|
|
|
|
|
self.vpnManager.appRules = [rules]
|
|
|
|
|
self.vpnManager.localizedDescription = "lokinet"
|
|
|
|
|
self.vpnManager.saveToPreferences(completionHandler: { error -> Void in
|
|
|
|
|
if error != nil {
|
|
|
|
@ -138,13 +77,6 @@ class LokinetMain: NSObject, NSApplicationDelegate {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func initDNSObserver() {
|
|
|
|
|
NotificationCenter.default.addObserver(forName: NSNotification.Name.NEDNSProxyConfigurationDidChange, object: NEDNSProxyManager.shared(), queue: OperationQueue.main) { _ -> Void in
|
|
|
|
|
let dns = NEDNSProxyManager.shared()
|
|
|
|
|
NSLog("%@", dns)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func initializeConnectionObserver() {
|
|
|
|
|
NotificationCenter.default.addObserver(forName: NSNotification.Name.NEVPNStatusDidChange, object: vpnManager.connection, queue: OperationQueue.main) { _ -> Void in
|
|
|
|
|
if self.vpnManager.connection.status == .invalid {
|
|
|
|
|