diff --git a/DNSCrypt-Menubar/COPYING b/DNSCrypt-Menubar/COPYING index 0ae6788..7840b7e 100644 --- a/DNSCrypt-Menubar/COPYING +++ b/DNSCrypt-Menubar/COPYING @@ -1,5 +1,6 @@ /* * Copyright (c) 2011-2014 OpenDNS, Inc. + * Copyright (c) 2014 AlterStep * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar.xcodeproj/project.pbxproj b/DNSCrypt-Menubar/DNSCrypt-Menubar.xcodeproj/project.pbxproj index e263ccb..fda0aab 100644 --- a/DNSCrypt-Menubar/DNSCrypt-Menubar.xcodeproj/project.pbxproj +++ b/DNSCrypt-Menubar/DNSCrypt-Menubar.xcodeproj/project.pbxproj @@ -7,20 +7,19 @@ objects = { /* Begin PBXBuildFile section */ - 0906D82E14B4D9AC0093FA7D /* no-network.png in Resources */ = {isa = PBXBuildFile; fileRef = 0906D82A14B4D9AC0093FA7D /* no-network.png */; }; - 0906D82F14B4D9AC0093FA7D /* no-opendns.png in Resources */ = {isa = PBXBuildFile; fileRef = 0906D82B14B4D9AC0093FA7D /* no-opendns.png */; }; - 0906D83014B4D9AC0093FA7D /* yes-opendns-no-crypt.png in Resources */ = {isa = PBXBuildFile; fileRef = 0906D82C14B4D9AC0093FA7D /* yes-opendns-no-crypt.png */; }; - 0906D83114B4D9AC0093FA7D /* yes-opendns-yes-crypt.png in Resources */ = {isa = PBXBuildFile; fileRef = 0906D82D14B4D9AC0093FA7D /* yes-opendns-yes-crypt.png */; }; 09651148147D832D007FEE31 /* dnscrypt.icns in Resources */ = {isa = PBXBuildFile; fileRef = 09651147147D832D007FEE31 /* dnscrypt.icns */; }; - 096AEEFA1468A11E009F2AA4 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 096AEEF91468A11E009F2AA4 /* dsa_pub.pem */; }; - 0970EAAB160A5B1600865D5D /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 09F4DDA816019D0D002C4E04 /* Sparkle.framework */; }; + 098E725E1905DF4C00C8CC6E /* icon-dnscrypt-active.png in Resources */ = {isa = PBXBuildFile; fileRef = 098E72581905DF4C00C8CC6E /* icon-dnscrypt-active.png */; }; + 098E72601905DF4C00C8CC6E /* icon-dnscrypt-inactive.png in Resources */ = {isa = PBXBuildFile; fileRef = 098E725A1905DF4C00C8CC6E /* icon-dnscrypt-inactive.png */; }; + 098E72621905DF4C00C8CC6E /* icon-no-network.png in Resources */ = {isa = PBXBuildFile; fileRef = 098E725C1905DF4C00C8CC6E /* icon-no-network.png */; }; + 098E72671905E1A700C8CC6E /* icon-dnscrypt-active@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 098E72641905E1A700C8CC6E /* icon-dnscrypt-active@2x.png */; }; + 098E72681905E1A700C8CC6E /* icon-dnscrypt-inactive@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 098E72651905E1A700C8CC6E /* icon-dnscrypt-inactive@2x.png */; }; + 098E72691905E1A700C8CC6E /* icon-no-network@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 098E72661905E1A700C8CC6E /* icon-no-network@2x.png */; }; 09A13AD2145F3B9000B227A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09A13AD1145F3B9000B227A4 /* Cocoa.framework */; }; 09A13ADC145F3B9000B227A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 09A13ADA145F3B9000B227A4 /* InfoPlist.strings */; }; 09A13ADE145F3B9000B227A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 09A13ADD145F3B9000B227A4 /* main.m */; }; 09A13AE2145F3B9000B227A4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 09A13AE0145F3B9000B227A4 /* Credits.rtf */; }; 09A13AE5145F3B9000B227A4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 09A13AE4145F3B9000B227A4 /* AppDelegate.m */; }; 09A13AE8145F3B9000B227A4 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 09A13AE6145F3B9000B227A4 /* MainMenu.xib */; }; - 09F4DDA916019D0D002C4E04 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09F4DDA816019D0D002C4E04 /* Sparkle.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -30,19 +29,19 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 0970EAAB160A5B1600865D5D /* Sparkle.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0906D82A14B4D9AC0093FA7D /* no-network.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "no-network.png"; sourceTree = ""; }; - 0906D82B14B4D9AC0093FA7D /* no-opendns.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "no-opendns.png"; sourceTree = ""; }; - 0906D82C14B4D9AC0093FA7D /* yes-opendns-no-crypt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "yes-opendns-no-crypt.png"; sourceTree = ""; }; - 0906D82D14B4D9AC0093FA7D /* yes-opendns-yes-crypt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "yes-opendns-yes-crypt.png"; sourceTree = ""; }; 09651147147D832D007FEE31 /* dnscrypt.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = dnscrypt.icns; path = ../dnscrypt.icns; sourceTree = ""; }; - 096AEEF91468A11E009F2AA4 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = ""; }; + 098E72581905DF4C00C8CC6E /* icon-dnscrypt-active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-dnscrypt-active.png"; sourceTree = ""; }; + 098E725A1905DF4C00C8CC6E /* icon-dnscrypt-inactive.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-dnscrypt-inactive.png"; sourceTree = ""; }; + 098E725C1905DF4C00C8CC6E /* icon-no-network.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-no-network.png"; sourceTree = ""; }; + 098E72641905E1A700C8CC6E /* icon-dnscrypt-active@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-dnscrypt-active@2x.png"; sourceTree = ""; }; + 098E72651905E1A700C8CC6E /* icon-dnscrypt-inactive@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-dnscrypt-inactive@2x.png"; sourceTree = ""; }; + 098E72661905E1A700C8CC6E /* icon-no-network@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-no-network@2x.png"; sourceTree = ""; }; 09A13ACD145F3B9000B227A4 /* DNSCrypt Menubar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "DNSCrypt Menubar.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 09A13AD1145F3B9000B227A4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 09A13AD4145F3B9000B227A4 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; @@ -56,7 +55,6 @@ 09A13AE3145F3B9000B227A4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 09A13AE4145F3B9000B227A4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 09A13AE7145F3B9000B227A4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; - 09F4DDA816019D0D002C4E04 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -65,7 +63,6 @@ buildActionMask = 2147483647; files = ( 09A13AD2145F3B9000B227A4 /* Cocoa.framework in Frameworks */, - 09F4DDA916019D0D002C4E04 /* Sparkle.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -92,7 +89,6 @@ 09A13AD0145F3B9000B227A4 /* Frameworks */ = { isa = PBXGroup; children = ( - 09F4DDA816019D0D002C4E04 /* Sparkle.framework */, 09A13AD1145F3B9000B227A4 /* Cocoa.framework */, 09A13AD3145F3B9000B227A4 /* Other Frameworks */, ); @@ -129,11 +125,12 @@ 09A13ADD145F3B9000B227A4 /* main.m */, 09A13ADF145F3B9000B227A4 /* DNSCrypt-Menubar-Prefix.pch */, 09A13AE0145F3B9000B227A4 /* Credits.rtf */, - 096AEEF91468A11E009F2AA4 /* dsa_pub.pem */, - 0906D82A14B4D9AC0093FA7D /* no-network.png */, - 0906D82B14B4D9AC0093FA7D /* no-opendns.png */, - 0906D82C14B4D9AC0093FA7D /* yes-opendns-no-crypt.png */, - 0906D82D14B4D9AC0093FA7D /* yes-opendns-yes-crypt.png */, + 098E72581905DF4C00C8CC6E /* icon-dnscrypt-active.png */, + 098E725A1905DF4C00C8CC6E /* icon-dnscrypt-inactive.png */, + 098E725C1905DF4C00C8CC6E /* icon-no-network.png */, + 098E72641905E1A700C8CC6E /* icon-dnscrypt-active@2x.png */, + 098E72651905E1A700C8CC6E /* icon-dnscrypt-inactive@2x.png */, + 098E72661905E1A700C8CC6E /* icon-no-network@2x.png */, ); name = "Supporting Files"; sourceTree = ""; @@ -189,15 +186,16 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 098E72681905E1A700C8CC6E /* icon-dnscrypt-inactive@2x.png in Resources */, 09A13ADC145F3B9000B227A4 /* InfoPlist.strings in Resources */, 09A13AE2145F3B9000B227A4 /* Credits.rtf in Resources */, + 098E725E1905DF4C00C8CC6E /* icon-dnscrypt-active.png in Resources */, 09A13AE8145F3B9000B227A4 /* MainMenu.xib in Resources */, - 096AEEFA1468A11E009F2AA4 /* dsa_pub.pem in Resources */, + 098E72691905E1A700C8CC6E /* icon-no-network@2x.png in Resources */, + 098E72601905DF4C00C8CC6E /* icon-dnscrypt-inactive.png in Resources */, + 098E72621905DF4C00C8CC6E /* icon-no-network.png in Resources */, + 098E72671905E1A700C8CC6E /* icon-dnscrypt-active@2x.png in Resources */, 09651148147D832D007FEE31 /* dnscrypt.icns in Resources */, - 0906D82E14B4D9AC0093FA7D /* no-network.png in Resources */, - 0906D82F14B4D9AC0093FA7D /* no-opendns.png in Resources */, - 0906D83014B4D9AC0093FA7D /* yes-opendns-no-crypt.png in Resources */, - 0906D83114B4D9AC0093FA7D /* yes-opendns-yes-crypt.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/AppDelegate.h b/DNSCrypt-Menubar/DNSCrypt-Menubar/AppDelegate.h index 56f844e..f62cdc3 100644 --- a/DNSCrypt-Menubar/DNSCrypt-Menubar/AppDelegate.h +++ b/DNSCrypt-Menubar/DNSCrypt-Menubar/AppDelegate.h @@ -1,10 +1,3 @@ -// -// AppDelegate.h -// DNSCrypt-Menubar -// -// Created by OpenDNS, Inc. on 10/31/11. -// Copyright (c) 2011 OpenDNS, Inc. All rights reserved. -// #import @@ -20,11 +13,7 @@ NSStatusItem *_statusItem; NSMenuItem *_versionMenuItem; NSMenuItem *_statusResolversMenuItem; - NSMenuItem *_statusConfigurationMenuItem; - NSMenuItem *_familyShieldMenuItem; NSMenuItem *_dnscryptMenuItem; - NSMenuItem *_fallbackMenuItem; - NSMenuItem *_opendnsMenuItem; } #define kREFRESH_DELAY 2.0 @@ -32,7 +21,7 @@ #define kMAX_TRIES_AFTER_CHANGE (30 / kREFRESH_DELAY) typedef enum { - kDNS_CONFIGURATION_UNKNOWN, kDNS_CONFIGURATION_VANILLA, kDNS_CONFIGURATION_LOCALHOST, kDNS_CONFIGURATION_OPENDNS + kDNS_CONFIGURATION_UNKNOWN, kDNS_CONFIGURATION_VANILLA, kDNS_CONFIGURATION_LOCALHOST } DNSConfigurationState; @property (strong) NSStatusItem *statusItem; @@ -41,16 +30,9 @@ typedef enum { @property (strong) IBOutlet NSMenu *dnscryptMenu; @property (strong) IBOutlet NSMenuItem *versionMenuItem; @property (strong) IBOutlet NSMenuItem *statusResolversMenuItem; -@property (strong) IBOutlet NSMenuItem *statusConfigurationMenuItem; -@property (strong) IBOutlet NSMenuItem *familyShieldMenuItem; @property (strong) IBOutlet NSMenuItem *dnscryptMenuItem; -@property (strong) IBOutlet NSMenuItem *fallbackMenuItem; -@property (strong) IBOutlet NSMenuItem *opendnsMenuItem; - (IBAction)preferencesMenuItemPushed:(NSMenuItem *)sender; - (IBAction)dnscryptMenuItemPushed:(NSMenuItem *)sender; -- (IBAction)familyShieldMenuItemPushed:(NSMenuItem *)sender; -- (IBAction)fallbackMenuItemPushed:(NSMenuItem *)sender; -- (IBAction)opendnsMenuItemPushed:(NSMenuItem *)sender; @end diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/AppDelegate.m b/DNSCrypt-Menubar/DNSCrypt-Menubar/AppDelegate.m index 0c5fc4a..7ee7936 100644 --- a/DNSCrypt-Menubar/DNSCrypt-Menubar/AppDelegate.m +++ b/DNSCrypt-Menubar/DNSCrypt-Menubar/AppDelegate.m @@ -1,21 +1,9 @@ -// -// AppDelegate.m -// DNSCrypt-Menubar -// -// Created by OpenDNS, Inc. on 10/31/11. -// Copyright (c) 2011 OpenDNS, Inc. All rights reserved. -// #import "AppDelegate.h" -#import "Sparkle/Sparkle.h" @implementation AppDelegate @synthesize statusResolversMenuItem = _statusResolversMenuItem; -@synthesize statusConfigurationMenuItem = _statusConfigurationMenuItem; -@synthesize familyShieldMenuItem = _familyShieldMenuItem; @synthesize dnscryptMenuItem = _dnscryptMenuItem; -@synthesize fallbackMenuItem = _fallbackMenuItem; -@synthesize opendnsMenuItem = _opendnsMenuItem; @synthesize window = _window; @synthesize dnscryptMenu = _dnscryptMenu; @synthesize statusItem = _statusItem; @@ -26,9 +14,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; - (void) setCheckBoxesEnabled: (BOOL) enabled { [_dnscryptMenuItem setEnabled: enabled]; - [_opendnsMenuItem setEnabled: enabled]; - [_familyShieldMenuItem setEnabled: enabled]; - [_fallbackMenuItem setEnabled: enabled]; } - (NSString *) fromCommand: (NSString *) launchPath withArguments: (NSArray *) arguments @@ -56,26 +41,11 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; NSString *res; _dnscryptMenuItem.state = 0; - _familyShieldMenuItem.state = 0; - _opendnsMenuItem.state = 0; - _fallbackMenuItem.state = 0; res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-status.sh", nil]]; if ([res isEqualToString: @"yes"]) { [_dnscryptMenuItem setState: 1]; } - res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-familyshield-status.sh", nil]]; - if ([res isEqualToString: @"yes"]) { - [_familyShieldMenuItem setState: 1]; - } - res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-insecure-opendns-status.sh", nil]]; - if ([res isEqualToString: @"yes"]) { - [_opendnsMenuItem setState: 1]; - } - res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-fallback-status.sh", nil]]; - if ([res isEqualToString: @"yes"]) { - [_fallbackMenuItem setState: 1]; - } } - (BOOL) resolversForService: (NSArray *) resolversForService includeResolvers:(NSArray *) resolvers @@ -100,17 +70,14 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; NSImage *led = nil; switch (currentState) { - case kDNS_CONFIGURATION_OPENDNS: - led = [NSImage imageNamed: @"yes-opendns-no-crypt.png"]; - break; case kDNS_CONFIGURATION_LOCALHOST: - led = [NSImage imageNamed: @"yes-opendns-yes-crypt.png"]; + led = [NSImage imageNamed: @"icon-dnscrypt-active"]; break; case kDNS_CONFIGURATION_VANILLA: - led = [NSImage imageNamed: @"no-opendns.png"]; + led = [NSImage imageNamed: @"icon-dnscrypt-inactive"]; break; default: - led = [NSImage imageNamed: @"no-network.png"]; + led = [NSImage imageNamed: @"icon-no-network"]; } _statusItem.image = led; } @@ -118,24 +85,18 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; - (BOOL) updateStatusWithCurrentConfig { NSString *stateDescription = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./get-current-resolvers.sh | ./get-resolvers-description.sh", nil]]; - if ([stateDescription isEqualToString: @"FamilyShield"]) { - currentState = kDNS_CONFIGURATION_OPENDNS; - } else if ([stateDescription isEqualToString: @"DNSCrypt"]) { + if ([stateDescription isEqualToString: @"DNSCrypt"]) { currentState = kDNS_CONFIGURATION_LOCALHOST; - } else if ([stateDescription isEqualToString: @"OpenDNS"]) { - currentState = kDNS_CONFIGURATION_OPENDNS; - } else if ([stateDescription isEqualToString: @"OpenDNS IPv6"]) { - currentState = kDNS_CONFIGURATION_OPENDNS; } else if ([stateDescription isEqualToString: @"None"]) { currentState = kDNS_CONFIGURATION_UNKNOWN; } else if ([stateDescription isEqualToString: @"Updating"]) { + currentState = kDNS_CONFIGURATION_UNKNOWN; } else if (stateDescription.length > 0) { currentState = kDNS_CONFIGURATION_VANILLA; } [self updateLedStatus]; NSString *currentResolvers = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./get-current-resolvers.sh | ./get-upstream-resolvers.sh", nil]]; - _statusConfigurationMenuItem.title = stateDescription; _statusResolversMenuItem.title = currentResolvers; NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-pop-conf-change.sh menubar", nil]]; @@ -172,7 +133,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; { [self setCheckBoxesEnabled: FALSE]; - NSImage *led = [NSImage imageNamed: @"no-network.png"]; + NSImage *led = [NSImage imageNamed: @"icon-no-network"]; _statusItem.image = led; [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-push-conf-change.sh prefpane", nil]]; @@ -202,7 +163,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { - [[SUUpdater sharedUpdater] setSendsSystemProfile: TRUE]; } - (IBAction)preferencesMenuItemPushed:(NSMenuItem *)sender @@ -231,47 +191,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; return TRUE; } -- (BOOL) setFamilyShieldOn { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-on.sh", nil]]; - (void) res; - return TRUE; -} - -- (BOOL) setFamilyShieldOff { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-off.sh", nil]]; - (void) res; - return TRUE; -} - -- (BOOL) setInsecureOpenDNSOn { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-on.sh", nil]]; - (void) res; - return TRUE; -} - -- (BOOL) setInsecureOpenDNSOff { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-off.sh", nil]]; - (void) res; - return TRUE; -} - -- (BOOL) setFallbackOn { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-on.sh", nil]]; - (void) res; - return TRUE; -} - -- (BOOL) setFallbackOff { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-off.sh", nil]]; - (void) res; - return TRUE; -} - (IBAction)dnscryptMenuItemPushed:(NSMenuItem *)sender { @@ -284,37 +203,4 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; } } -- (IBAction)familyShieldMenuItemPushed:(NSMenuItem *)sender -{ - if (sender.state == 0) { - sender.state = 1; - [self setFamilyShieldOn]; - } else { - sender.state = 0; - [self setFamilyShieldOff]; - } -} - -- (IBAction)opendnsMenuItemPushed:(NSMenuItem *)sender -{ - if (sender.state == 0) { - sender.state = 1; - [self setInsecureOpenDNSOn]; - } else { - sender.state = 0; - [self setInsecureOpenDNSOff]; - } -} - -- (IBAction)fallbackMenuItemPushed:(NSMenuItem *)sender -{ - if (sender.state == 0) { - sender.state = 1; - [self setFallbackOn]; - } else { - sender.state = 0; - [self setFallbackOff]; - } -} - @end diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist b/DNSCrypt-Menubar/DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist index 40e0215..6de74f6 100644 --- a/DNSCrypt-Menubar/DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist +++ b/DNSCrypt-Menubar/DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist @@ -9,7 +9,7 @@ CFBundleIconFile dnscrypt.icns CFBundleIdentifier - com.opendns.osx.${PRODUCT_NAME:rfc1034identifier} + com.github.dnscrypt-osxclient.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.21 (beta) + 1.0 CFBundleSignature ???? CFBundleVersion - 0.21 + 1.0 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion @@ -29,14 +29,10 @@ LSUIElement NSHumanReadableCopyright - Copyright © 2011-2014 OpenDNS, Inc. All rights reserved. + BSD NSMainNibFile MainMenu NSPrincipalClass NSApplication - SUFeedURL - http://opendns.github.io/dnscrypt-osx-client/updates/osx/sparkle-updates.xml - SUPublicDSAKeyFile - dsa_pub.pem diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/dsa_pub.pem b/DNSCrypt-Menubar/DNSCrypt-Menubar/dsa_pub.pem deleted file mode 100644 index 1533bdf..0000000 --- a/DNSCrypt-Menubar/DNSCrypt-Menubar/dsa_pub.pem +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBtzCCASwGByqGSM44BAEwggEfAoGBAIpCA2NYJe0E0ilZVp3nkP9301l2/h+Y -ltDQhkWaSYrArR5iqmQcNbYgsULy3vjZs+4CgXea81zCzIcX8yvh8AFH9E4aWAJN -bszYHCfemAq0YBbwwfsc4fSjvGKvDKwVcnn/nxLtcuA9c5pfW8GWUbGfDhGHaAaC -AZhWA0SOh5ODAhUA6XR9JwsaIogtEqQZaoxUgtWPPDECgYEAgLMPGhjRSXgY4vhR -60H4kMtkd/W0k/rPDOvO63pUFKowtzjXfMpiCYVMpB6+hjC+LrtvkiB8P1nVpa7q -rdNB32NFqeqR9gqZwU7aPGWHgzB9nlZw/uGfvQ/tCz6Z0uSmenWaOTvZvJoUCs5N -Cjzt8R/0YYYJA87c9hHHaEoLZRgDgYQAAoGABFH0SUjg4tpuWodWuRT03cKRyIrX -x6gHxKelSBa/5RvykluxNUVKWs3YCR5LDnjsFxR7bfwNPkuvWyUGvhjEDLH3tLnS -YPlMdzl1eRf0NF6FWl5HZetfY2mgPDp/iy1mb3QaVuxeAxQZx72gqVdmM3UwQBN/ -8+Fb9X3V/R7bYgQ= ------END PUBLIC KEY----- diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/en.lproj/MainMenu.xib b/DNSCrypt-Menubar/DNSCrypt-Menubar/en.lproj/MainMenu.xib index cd850f5..816b48e 100644 --- a/DNSCrypt-Menubar/DNSCrypt-Menubar/en.lproj/MainMenu.xib +++ b/DNSCrypt-Menubar/DNSCrypt-Menubar/en.lproj/MainMenu.xib @@ -1,673 +1,56 @@ - - - - 1080 - 12C60 - 3079 - 1187.34 - 625.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 3079 - - - NSCustomObject - NSMenu - NSMenuItem - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - NSApplication - - - FirstResponder - - - NSApplication - - - AppDelegate - - - - - - - Enable DNSCrypt - e - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - - - - Fallback to insecure - x - 1048576 - 2147483647 - - - - - - Always use FamilyShield - f - 1048576 - 2147483647 - - - - - - Always use OpenDNS - o - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - DNSCrypt Preferences - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Check for updates - u - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - YES - - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - YES - Current configuration: - - 2147483647 - - - - - - YES - 1 - ... - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - YES - Current resolvers: - - 2147483647 - - - - - - YES - 1 - ... - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Hide from the menu bar - h - 1048576 - 2147483647 - - - - - - - SUUpdater - - - - - - - delegate - - - - 495 - - - - terminate: - - - - 560 - - - - dnscryptMenu - - - - 543 - - - - statusConfigurationMenuItem - - - - 551 - - - - statusResolversMenuItem - - - - 552 - - - - versionMenuItem - - - - 568 - - - - preferencesMenuItemPushed: - - - - 571 - - - - familyShieldMenuItem - - - - 577 - - - - dnscryptMenuItem - - - - 578 - - - - dnscryptMenuItemPushed: - - - - 580 - - - - familyShieldMenuItemPushed: - - - - 581 - - - - fallbackMenuItemPushed: - - - - 584 - - - - opendnsMenuItem - - - - 587 - - - - opendnsMenuItemPushed: - - - - 588 - - - - fallbackMenuItem - - - - 591 - - - - checkForUpdates: - - - - 563 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 494 - - - - - 539 - - - - - - - - - - - - - - - - - - - - - - - - - 540 - - - - - 541 - - - - - 542 - - - - - 549 - - - - - 550 - - - - - 553 - - - - - 554 - - - - - 557 - - - - - 558 - - - - - 561 - - - - - 562 - - - - - 564 - - - - - 565 - - - - - 566 - - - - - 570 - - - - - 572 - - - - - 574 - - - - - 576 - - - - - 583 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 591 - - - - - AppDelegate - NSObject - - NSMenuItem - NSMenuItem - NSMenuItem - NSMenuItem - NSMenuItem - - - - dnscryptMenuItemPushed: - NSMenuItem - - - fallbackMenuItemPushed: - NSMenuItem - - - familyShieldMenuItemPushed: - NSMenuItem - - - opendnsMenuItemPushed: - NSMenuItem - - - preferencesMenuItemPushed: - NSMenuItem - - - - NSMenu - NSMenuItem - NSMenuItem - NSMenuItem - NSMenuItem - NSMenuItem - NSStatusItem - NSMenuItem - NSMenuItem - NSWindow - - - - dnscryptMenu - NSMenu - - - dnscryptMenuItem - NSMenuItem - - - fallbackMenuItem - NSMenuItem - - - familyShieldMenuItem - NSMenuItem - - - opendnsMenuItem - NSMenuItem - - - statusConfigurationMenuItem - NSMenuItem - - - statusItem - NSStatusItem - - - statusResolversMenuItem - NSMenuItem - - - versionMenuItem - NSMenuItem - - - window - NSWindow - - - - IBProjectSource - ./Classes/AppDelegate.h - - - - SUUpdater - NSObject - - checkForUpdates: - id - - - checkForUpdates: - - checkForUpdates: - id - - - - delegate - id - - - delegate - - delegate - id - - - - IBProjectSource - ./Classes/SUUpdater.h - - - - - 0 - IBCocoaFramework - YES - 3 - - {11, 11} - {10, 3} - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-active.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-active.png new file mode 100644 index 0000000..ac1f60e Binary files /dev/null and b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-active.png differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-active@2x.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-active@2x.png new file mode 100644 index 0000000..beb33fd Binary files /dev/null and b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-active@2x.png differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-inactive.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-inactive.png new file mode 100644 index 0000000..ddd2fbc Binary files /dev/null and b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-inactive.png differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-inactive@2x.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-inactive@2x.png new file mode 100644 index 0000000..cbc7e4d Binary files /dev/null and b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-dnscrypt-inactive@2x.png differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-no-network.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-no-network.png new file mode 100644 index 0000000..dcdcb2c Binary files /dev/null and b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-no-network.png differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-no-network@2x.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-no-network@2x.png new file mode 100644 index 0000000..ae85483 Binary files /dev/null and b/DNSCrypt-Menubar/DNSCrypt-Menubar/icon-no-network@2x.png differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/no-network.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/no-network.png deleted file mode 100644 index 40ea591..0000000 Binary files a/DNSCrypt-Menubar/DNSCrypt-Menubar/no-network.png and /dev/null differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/no-opendns.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/no-opendns.png deleted file mode 100644 index 66ea1f0..0000000 Binary files a/DNSCrypt-Menubar/DNSCrypt-Menubar/no-opendns.png and /dev/null differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/yes-opendns-no-crypt.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/yes-opendns-no-crypt.png deleted file mode 100644 index 2f5de8a..0000000 Binary files a/DNSCrypt-Menubar/DNSCrypt-Menubar/yes-opendns-no-crypt.png and /dev/null differ diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/yes-opendns-yes-crypt.png b/DNSCrypt-Menubar/DNSCrypt-Menubar/yes-opendns-yes-crypt.png deleted file mode 100644 index 0aec967..0000000 Binary files a/DNSCrypt-Menubar/DNSCrypt-Menubar/yes-opendns-yes-crypt.png and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Headers b/DNSCrypt-Menubar/Sparkle.framework/Headers deleted file mode 120000 index a177d2a..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/DNSCrypt-Menubar/Sparkle.framework/Resources b/DNSCrypt-Menubar/Sparkle.framework/Resources deleted file mode 120000 index 953ee36..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/DNSCrypt-Menubar/Sparkle.framework/Sparkle b/DNSCrypt-Menubar/Sparkle.framework/Sparkle deleted file mode 120000 index b2c5273..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Sparkle +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Sparkle \ No newline at end of file diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUAppcast.h b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUAppcast.h deleted file mode 100644 index 5a60d2f..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUAppcast.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// SUAppcast.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCAST_H -#define SUAPPCAST_H - -@class SUAppcastItem; -@interface SUAppcast : NSObject -{ -@private - NSArray *items; - NSString *userAgentString; - id delegate; - NSString *downloadFilename; - NSURLDownload *download; -} - -- (void)fetchAppcastFromURL:(NSURL *)url; -- (void)setDelegate:delegate; -- (void)setUserAgentString:(NSString *)userAgentString; - -- (NSArray *)items; - -@end - -@interface NSObject (SUAppcastDelegate) -- (void)appcastDidFinishLoading:(SUAppcast *)appcast; -- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; -@end - -#endif diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h deleted file mode 100644 index d6f9c64..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h +++ /dev/null @@ -1,60 +0,0 @@ -// -// SUAppcastItem.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCASTITEM_H -#define SUAPPCASTITEM_H - -@interface SUAppcastItem : NSObject -{ -@private - NSString *title; - NSDate *date; - NSString *itemDescription; - - NSURL *releaseNotesURL; - - NSString *DSASignature; - NSString *minimumSystemVersion; - NSString *maximumSystemVersion; - - NSURL *fileURL; - NSString *versionString; - NSString *displayVersionString; - - NSDictionary *deltaUpdates; - - NSDictionary *propertiesDictionary; - - NSURL *infoURL; // UK 2007-08-31 -} - -// Initializes with data from a dictionary provided by the RSS class. -- initWithDictionary:(NSDictionary *)dict; -- initWithDictionary:(NSDictionary *)dict failureReason:(NSString**)error; - -- (NSString *)title; -- (NSString *)versionString; -- (NSString *)displayVersionString; -- (NSDate *)date; -- (NSString *)itemDescription; -- (NSURL *)releaseNotesURL; -- (NSURL *)fileURL; -- (NSString *)DSASignature; -- (NSString *)minimumSystemVersion; -- (NSString *)maximumSystemVersion; -- (NSDictionary *)deltaUpdates; -- (BOOL)isDeltaUpdate; - -// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. -- (NSDictionary *)propertiesDictionary; - -- (NSURL *)infoURL; // UK 2007-08-31 - -@end - -#endif diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUUpdater.h b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUUpdater.h deleted file mode 100644 index ff04620..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUUpdater.h +++ /dev/null @@ -1,161 +0,0 @@ -// -// SUUpdater.h -// Sparkle -// -// Created by Andy Matuschak on 1/4/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUUPDATER_H -#define SUUPDATER_H - -#import "SUVersionComparisonProtocol.h" -#import "SUVersionDisplayProtocol.h" - -@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; - -@interface SUUpdater : NSObject -{ -@private - NSTimer *checkTimer; - SUUpdateDriver *driver; - - NSString *customUserAgentString; - SUHost *host; - IBOutlet id delegate; -} - -+ (SUUpdater *)sharedUpdater; -+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; -- initForBundle:(NSBundle *)bundle; - -- (NSBundle *)hostBundle; - -- (void)setDelegate:(id)delegate; -- delegate; - -- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; -- (BOOL)automaticallyChecksForUpdates; - -- (void)setUpdateCheckInterval:(NSTimeInterval)interval; -- (NSTimeInterval)updateCheckInterval; - -- (void)setFeedURL:(NSURL *)feedURL; -- (NSURL *)feedURL; // *** MUST BE CALLED ON MAIN THREAD *** - -- (void)setUserAgentString:(NSString *)userAgent; -- (NSString *)userAgentString; - -- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; -- (BOOL)sendsSystemProfile; - -- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; -- (BOOL)automaticallyDownloadsUpdates; - -// This IBAction is meant for a main menu item. Hook up any menu item to this action, -// and Sparkle will check for updates and report back its findings verbosely. -- (IBAction)checkForUpdates:(id)sender; - -// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, -// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an -// update is found, it will be downloaded and prepped for installation. -- (void)checkForUpdatesInBackground; - -// Date of last update check. Returns nil if no check has been performed. -- (NSDate*)lastUpdateCheckDate; - -// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, -// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. -- (void)checkForUpdateInformation; - -// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. -- (void)resetUpdateCycle; - -- (BOOL)updateInProgress; - -@end - - -// ----------------------------------------------------------------------------- -// SUUpdater Delegate: -// ----------------------------------------------------------------------------- - -@interface NSObject (SUUpdaterDelegateInformalProtocol) - -// Use this to keep Sparkle from popping up e.g. while your setup assistant is showing: -- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)bundle; - -// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. -- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; - -// Override this to dynamically specify the entire URL. -- (NSString*)feedURLStringForUpdater:(SUUpdater*)updater; - -// Use this to override the default behavior for Sparkle prompting the user about automatic update checks. -- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; - -// Implement this if you want to do some special handling with the appcast once it finishes loading. -- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; - -// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding -// a valid update, if any, in the given appcast. -- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; - -// Sent when a valid update is found by the update driver. -- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; - -// Sent when a valid update is not found. -- (void)updaterDidNotFindUpdate:(SUUpdater *)update; - -// Sent immediately before installing the specified update. -- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; - -// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. -// This is not called if the user didn't relaunch on the previous update, in that case it will immediately -// restart. -- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; - -// Some apps *can not* be relaunched in certain circumstances. They can use this method -// to prevent a relaunch "hard": -- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater; - -// Called immediately before relaunching. -- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; - -// This method allows you to provide a custom version comparator. -// If you don't implement this method or return nil, the standard version comparator will be used. -- (id )versionComparatorForUpdater:(SUUpdater *)updater; - -// This method allows you to provide a custom version comparator. -// If you don't implement this method or return nil, the standard version displayer will be used. -- (id )versionDisplayerForUpdater:(SUUpdater *)updater; - -// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. -- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; - -// Called before and after, respectively, an updater shows a modal alert window, to give the host -// the opportunity to hide attached windows etc. that may get in the way: --(void) updaterWillShowModalAlert:(SUUpdater *)updater; --(void) updaterDidShowModalAlert:(SUUpdater *)updater; - -@end - - -// ----------------------------------------------------------------------------- -// Constants: -// ----------------------------------------------------------------------------- - -// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. -#if defined(DEBUG) && DEBUG && 0 -#define SU_MIN_CHECK_INTERVAL 60 -#else -#define SU_MIN_CHECK_INTERVAL 60*60 -#endif - -#if defined(DEBUG) && DEBUG && 0 -#define SU_DEFAULT_CHECK_INTERVAL 60 -#else -#define SU_DEFAULT_CHECK_INTERVAL 60*60*24 -#endif - -#endif diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h deleted file mode 100644 index 6c65ea4..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// SUVersionComparisonProtocol.h -// Sparkle -// -// Created by Andy Matuschak on 12/21/07. -// Copyright 2007 Andy Matuschak. All rights reserved. -// - -#ifndef SUVERSIONCOMPARISONPROTOCOL_H -#define SUVERSIONCOMPARISONPROTOCOL_H - -#import - -/*! - @protocol - @abstract Implement this protocol to provide version comparison facilities for Sparkle. -*/ -@protocol SUVersionComparison - -/*! - @method - @abstract An abstract method to compare two version strings. - @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. -*/ -- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD! - -@end - -#endif diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h deleted file mode 100644 index 368b9c9..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// SUVersionDisplayProtocol.h -// EyeTV -// -// Created by Uli Kusterer on 08.12.09. -// Copyright 2009 Elgato Systems GmbH. All rights reserved. -// - -#import - - -/*! - @protocol - @abstract Implement this protocol to apply special formatting to the two - version numbers. -*/ -@protocol SUVersionDisplay - -/*! - @method - @abstract An abstract method to format two version strings. - @discussion You get both so you can display important distinguishing - information, but leave out unnecessary/confusing parts. -*/ --(void) formatVersion: (NSString**)inOutVersionA andVersion: (NSString**)inOutVersionB; - -@end diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/Sparkle.h b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/Sparkle.h deleted file mode 100644 index 08dd577..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Headers/Sparkle.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Sparkle.h -// Sparkle -// -// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SPARKLE_H -#define SPARKLE_H - -// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless -// there are name-space collisions) so we can list all of them to start with: - -#import - -#import -#import -#import - -#endif diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/Info.plist b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index d64f5d2..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,40 +0,0 @@ - - - - - BuildMachineOSBuild - 12C50 - CFBundleDevelopmentRegion - en - CFBundleExecutable - Sparkle - CFBundleIdentifier - org.andymatuschak.Sparkle - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Sparkle - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.5 Beta (git) - CFBundleSignature - ???? - CFBundleVersion - dee4ffa - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 4G144l - DTPlatformVersion - GM - DTSDKBuild - 11E52 - DTSDKName - macosx10.7 - DTXcode - 0450 - DTXcodeBuild - 4G144l - - diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/License.txt b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/License.txt deleted file mode 100644 index 08364c6..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/License.txt +++ /dev/null @@ -1,38 +0,0 @@ -Copyright (c) 2006 Andy Matuschak - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -================= -EXTERNAL LICENSES -================= - -License for bspatch.c and bsdiff.c, from bsdiff 4.3 (: -/*- - * Copyright 2003-2005 Colin Percival - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted providing that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist deleted file mode 100644 index 63644f0..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist +++ /dev/null @@ -1,182 +0,0 @@ - - - - - ADP2,1 - Developer Transition Kit - iMac1,1 - iMac G3 (Rev A-D) - iMac4,1 - iMac (Core Duo) - iMac4,2 - iMac for Education (17-inch, Core Duo) - iMac5,1 - iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) - iMac5,2 - iMac (Core 2 Duo, 17 inch, Combo Drive) - iMac6,1 - iMac (Core 2 Duo, 24 inch, SuperDrive) - iMac8,1 - iMac (April 2008) - MacBook1,1 - MacBook (Core Duo) - MacBook2,1 - MacBook (Core 2 Duo) - MacBook4,1 - MacBook (Core 2 Duo Feb 2008) - MacBookAir1,1 - MacBook Air (January 2008) - MacBookAir2,1 - MacBook Air (June 2009) - MacBookAir3,1 - MacBook Air (October 2010) - MacBookPro1,1 - MacBook Pro Core Duo (15-inch) - MacBookPro1,2 - MacBook Pro Core Duo (17-inch) - MacBookPro2,1 - MacBook Pro Core 2 Duo (17-inch) - MacBookPro2,2 - MacBook Pro Core 2 Duo (15-inch) - MacBookPro3,1 - MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) - MacBookPro3,2 - MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) - MacBookPro4,1 - MacBook Pro (Core 2 Duo Feb 2008) - Macmini1,1 - Mac Mini (Core Solo/Duo) - MacPro1,1 - Mac Pro (four-core) - MacPro2,1 - Mac Pro (eight-core) - MacPro3,1 - Mac Pro (January 2008 4- or 8- core "Harpertown") - MacPro4,1 - Mac Pro (March 2009) - MacPro5,1 - Mac Pro (August 2010) - PowerBook1,1 - PowerBook G3 - PowerBook2,1 - iBook G3 - PowerBook2,2 - iBook G3 (FireWire) - PowerBook2,3 - iBook G3 - PowerBook2,4 - iBook G3 - PowerBook3,1 - PowerBook G3 (FireWire) - PowerBook3,2 - PowerBook G4 - PowerBook3,3 - PowerBook G4 (Gigabit Ethernet) - PowerBook3,4 - PowerBook G4 (DVI) - PowerBook3,5 - PowerBook G4 (1GHz / 867MHz) - PowerBook4,1 - iBook G3 (Dual USB, Late 2001) - PowerBook4,2 - iBook G3 (16MB VRAM) - PowerBook4,3 - iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) - PowerBook5,1 - PowerBook G4 (17 inch) - PowerBook5,2 - PowerBook G4 (15 inch FW 800) - PowerBook5,3 - PowerBook G4 (17-inch 1.33GHz) - PowerBook5,4 - PowerBook G4 (15 inch 1.5/1.33GHz) - PowerBook5,5 - PowerBook G4 (17-inch 1.5GHz) - PowerBook5,6 - PowerBook G4 (15 inch 1.67GHz/1.5GHz) - PowerBook5,7 - PowerBook G4 (17-inch 1.67GHz) - PowerBook5,8 - PowerBook G4 (Double layer SD, 15 inch) - PowerBook5,9 - PowerBook G4 (Double layer SD, 17 inch) - PowerBook6,1 - PowerBook G4 (12 inch) - PowerBook6,2 - PowerBook G4 (12 inch, DVI) - PowerBook6,3 - iBook G4 - PowerBook6,4 - PowerBook G4 (12 inch 1.33GHz) - PowerBook6,5 - iBook G4 (Early-Late 2004) - PowerBook6,7 - iBook G4 (Mid 2005) - PowerBook6,8 - PowerBook G4 (12 inch 1.5GHz) - PowerMac1,1 - Power Macintosh G3 (Blue & White) - PowerMac1,2 - Power Macintosh G4 (PCI Graphics) - PowerMac10,1 - Mac Mini G4 - PowerMac10,2 - Mac Mini (Late 2005) - PowerMac11,2 - Power Macintosh G5 (Late 2005) - PowerMac12,1 - iMac G5 (iSight) - PowerMac2,1 - iMac G3 (Slot-loading CD-ROM) - PowerMac2,2 - iMac G3 (Summer 2000) - PowerMac3,1 - Power Macintosh G4 (AGP Graphics) - PowerMac3,2 - Power Macintosh G4 (AGP Graphics) - PowerMac3,3 - Power Macintosh G4 (Gigabit Ethernet) - PowerMac3,4 - Power Macintosh G4 (Digital Audio) - PowerMac3,5 - Power Macintosh G4 (Quick Silver) - PowerMac3,6 - Power Macintosh G4 (Mirrored Drive Door) - PowerMac4,1 - iMac G3 (Early/Summer 2001) - PowerMac4,2 - iMac G4 (Flat Panel) - PowerMac4,4 - eMac - PowerMac4,5 - iMac G4 (17-inch Flat Panel) - PowerMac5,1 - Power Macintosh G4 Cube - PowerMac6,1 - iMac G4 (USB 2.0) - PowerMac6,3 - iMac G4 (20-inch Flat Panel) - PowerMac6,4 - eMac (USB 2.0, 2005) - PowerMac7,2 - Power Macintosh G5 - PowerMac7,3 - Power Macintosh G5 - PowerMac8,1 - iMac G5 - PowerMac8,2 - iMac G5 (Ambient Light Sensor) - PowerMac9,1 - Power Macintosh G5 (Late 2005) - RackMac1,1 - Xserve G4 - RackMac1,2 - Xserve G4 (slot-loading, cluster node) - RackMac3,1 - Xserve G5 - Xserve1,1 - Xserve (Intel Xeon) - Xserve2,1 - Xserve (January 2008 quad-core) - - diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/SUStatus.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/SUStatus.nib deleted file mode 100644 index 5ddc9d2..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/SUStatus.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 6960c92..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib deleted file mode 100644 index ac0456f..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 1d5153c..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings deleted file mode 100644 index 9bbb996..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 2786356..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib deleted file mode 100644 index 51225f8..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index caea70b..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings deleted file mode 100644 index 2984afd..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 9c9c941..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib deleted file mode 100644 index 300f99c..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 94a0c14..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings deleted file mode 100644 index 664946d..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 4924731..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUPasswordPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUPasswordPrompt.nib deleted file mode 100644 index 16cd617..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUPasswordPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib deleted file mode 100644 index 504ab49..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index c262163..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings deleted file mode 100644 index ebfa934..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index e895c26..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib deleted file mode 100644 index e1412ac..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 21a458e..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings deleted file mode 100644 index 8e4ab94..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Info.plist b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Info.plist deleted file mode 100644 index dc0d374..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Info.plist +++ /dev/null @@ -1,50 +0,0 @@ - - - - - BuildMachineOSBuild - 12C50 - CFBundleDevelopmentRegion - English - CFBundleExecutable - finish_installation - CFBundleIconFile - Sparkle - CFBundleIdentifier - org.andymatuschak.sparkle.finish-installation - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 4G144l - DTPlatformVersion - GM - DTSDKBuild - 11E52 - DTSDKName - macosx10.7 - DTXcode - 0450 - DTXcodeBuild - 4G144l - LSBackgroundOnly - 1 - LSMinimumSystemVersion - 10.4 - LSUIElement - 1 - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation deleted file mode 100755 index 4bab86f..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/PkgInfo b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/PkgInfo deleted file mode 100644 index bd04210..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPL???? \ No newline at end of file diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/SUStatus.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/SUStatus.nib deleted file mode 100644 index 5ddc9d2..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/SUStatus.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/Sparkle.icns b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/Sparkle.icns deleted file mode 100644 index 8e56d45..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/Sparkle.icns and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/cs.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/cs.lproj/Sparkle.strings deleted file mode 100644 index 9bbb996..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/cs.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/da.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/da.lproj/Sparkle.strings deleted file mode 100644 index 2984afd..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/da.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/de.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/de.lproj/Sparkle.strings deleted file mode 100644 index 664946d..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/de.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/en.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/en.lproj/Sparkle.strings deleted file mode 100644 index ebfa934..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/en.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/es.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/es.lproj/Sparkle.strings deleted file mode 100644 index 8e4ab94..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/es.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/fr.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/fr.lproj/Sparkle.strings deleted file mode 100644 index 236f807..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/fr.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/is.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/is.lproj/Sparkle.strings deleted file mode 100644 index 2ea7c12..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/is.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/it.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/it.lproj/Sparkle.strings deleted file mode 100644 index 4ccd7af..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/it.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ja.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ja.lproj/Sparkle.strings deleted file mode 100644 index b21ea04..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ja.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/nl.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/nl.lproj/Sparkle.strings deleted file mode 100644 index 023c473..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/nl.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pl.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pl.lproj/Sparkle.strings deleted file mode 100644 index 9a0bc8b..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pl.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_BR.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_BR.lproj/Sparkle.strings deleted file mode 100644 index 7a11a9e..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_BR.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_PT.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_PT.lproj/Sparkle.strings deleted file mode 100644 index 497cd83..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_PT.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ro.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ro.lproj/Sparkle.strings deleted file mode 100644 index e6320ad..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ro.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ru.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ru.lproj/Sparkle.strings deleted file mode 100644 index 7afef95..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ru.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sl.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sl.lproj/Sparkle.strings deleted file mode 100644 index 51e3b46..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sl.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sv.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sv.lproj/Sparkle.strings deleted file mode 100644 index 16c3fb8..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sv.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/th.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/th.lproj/Sparkle.strings deleted file mode 100644 index c1efcd6..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/th.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/tr.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/tr.lproj/Sparkle.strings deleted file mode 100644 index 32af491..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/tr.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/uk.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/uk.lproj/Sparkle.strings deleted file mode 100644 index 6f0e4db..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/uk.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_CN.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_CN.lproj/Sparkle.strings deleted file mode 100644 index b741758..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_CN.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_TW.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_TW.lproj/Sparkle.strings deleted file mode 100644 index c1f7e85..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_TW.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 6f99d85..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib deleted file mode 100644 index 347f12a..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 029c931..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings deleted file mode 100644 index 236f807..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr_CA.lproj b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr_CA.lproj deleted file mode 120000 index f9834a3..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/fr_CA.lproj +++ /dev/null @@ -1 +0,0 @@ -fr.lproj \ No newline at end of file diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index a8bbb1d..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib deleted file mode 100644 index e371d75..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index d16384b..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings deleted file mode 100644 index 2ea7c12..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index c3d4c8f..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib deleted file mode 100644 index b12608a..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 4b9a66e..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings deleted file mode 100644 index 4ccd7af..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index cc6a7d8..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib deleted file mode 100644 index 86aa88c..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 842a316..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings deleted file mode 100644 index b21ea04..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index e74a88b..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib deleted file mode 100644 index 08e91dd..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 1df59fe..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 2ce3543..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib deleted file mode 100644 index a47c774..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 7d06810..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings deleted file mode 100644 index 023c473..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 6b3bb83..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib deleted file mode 100644 index e55aabf..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index f30e473..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings deleted file mode 100644 index 9a0bc8b..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt.lproj b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt.lproj deleted file mode 120000 index 3c1c9f6..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt.lproj +++ /dev/null @@ -1 +0,0 @@ -pt_BR.lproj \ No newline at end of file diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index cfde618..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUPasswordPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUPasswordPrompt.nib deleted file mode 100644 index 185c1c0..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUPasswordPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib deleted file mode 100644 index e4f58f2..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index a832e78..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings deleted file mode 100644 index 7a11a9e..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 1677728..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib deleted file mode 100644 index 487f755..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index ac74a83..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings deleted file mode 100644 index 497cd83..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 52e0e5d..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib deleted file mode 100644 index 650114b..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index d4e84a2..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings deleted file mode 100644 index e6320ad..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 50e9952..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib deleted file mode 100644 index 259cc9b..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index d2ff506..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings deleted file mode 100644 index 7afef95..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 1599b26..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib deleted file mode 100644 index 0b8688c..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 62d7fb4..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index ccf680c..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib deleted file mode 100644 index d2db5af..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 5f2c09a..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings deleted file mode 100644 index 51e3b46..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index ccb7196..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib deleted file mode 100644 index cf7b203..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index aeb1f72..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings deleted file mode 100644 index 16c3fb8..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index de3bcee..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUPasswordPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUPasswordPrompt.nib deleted file mode 100644 index 08c9dc4..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUPasswordPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib deleted file mode 100644 index e21e467..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index a5dc2eb..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings deleted file mode 100644 index c1efcd6..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 193b60c..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib deleted file mode 100644 index 80923a4..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 2aff90e..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings deleted file mode 100644 index 32af491..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 309cda6..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib deleted file mode 100644 index b60d626..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index cc8fb50..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings deleted file mode 100644 index 6f0e4db..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index a068813..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib deleted file mode 100644 index ec7965e..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 37e8d21..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings deleted file mode 100644 index b741758..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib deleted file mode 100644 index 966d900..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib deleted file mode 100644 index 530b67a..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib deleted file mode 100644 index 23c3705..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings deleted file mode 100644 index c1f7e85..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Sparkle b/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Sparkle deleted file mode 100755 index 2039cb9..0000000 Binary files a/DNSCrypt-Menubar/Sparkle.framework/Versions/A/Sparkle and /dev/null differ diff --git a/DNSCrypt-Menubar/Sparkle.framework/Versions/Current b/DNSCrypt-Menubar/Sparkle.framework/Versions/Current deleted file mode 120000 index 8c7e5a6..0000000 --- a/DNSCrypt-Menubar/Sparkle.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/DNSCrypt-OSX-Installer/DNSCrypt-OSX-Installer.pkgproj b/DNSCrypt-OSX-Installer/DNSCrypt-OSX-Installer.pkgproj index f382765..2f1a487 100755 --- a/DNSCrypt-OSX-Installer/DNSCrypt-OSX-Installer.pkgproj +++ b/DNSCrypt-OSX-Installer/DNSCrypt-OSX-Installer.pkgproj @@ -815,7 +815,7 @@ CONCLUSION_ACTION 0 IDENTIFIER - com.opendns.osx.dnscryptClient.dnscrypt-proxy + com.github.dnscrypt-osxclient.dnscryptClient.dnscrypt-proxy LOCATION 0 NAME @@ -984,7 +984,7 @@ GID 0 PATH - /Users/j/OpenDNS/DNSCrypt/OSX/dnscrypt-osx-client/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptAfterboot.plist + /Users/j/OpenDNS/DNSCrypt/OSX/dnscrypt-osx-client/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptAfterboot.plist PATH_TYPE 0 PERMISSIONS @@ -1000,7 +1000,7 @@ GID 0 PATH - /Users/j/OpenDNS/DNSCrypt/OSX/dnscrypt-osx-client/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptConsoleChange.plist + /Users/j/OpenDNS/DNSCrypt/OSX/dnscrypt-osx-client/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptConsoleChange.plist PATH_TYPE 0 PERMISSIONS @@ -1016,7 +1016,7 @@ GID 0 PATH - /Users/j/OpenDNS/DNSCrypt/OSX/dnscrypt-osx-client/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptControlChange.plist + /Users/j/OpenDNS/DNSCrypt/OSX/dnscrypt-osx-client/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptControlChange.plist PATH_TYPE 0 PERMISSIONS @@ -1032,7 +1032,7 @@ GID 0 PATH - /Users/j/OpenDNS/DNSCrypt/OSX/dnscrypt-osx-client/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptNetworkChange.plist + /Users/j/OpenDNS/DNSCrypt/OSX/dnscrypt-osx-client/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptNetworkChange.plist PATH_TYPE 0 PERMISSIONS @@ -1426,7 +1426,7 @@ CONCLUSION_ACTION 2 IDENTIFIER - com.opendns.osx.dnscryptClient.DNSCrypt + com.github.dnscrypt-osxclient.dnscryptClient.DNSCrypt LOCATION 0 NAME @@ -1436,7 +1436,7 @@ USE_HFS+_COMPRESSION VERSION - 0.21 + 1.0 TYPE 0 @@ -1593,7 +1593,7 @@ GID 0 PATH - com.opendns.osx.DNSCryptMenuBar.plist + com.github.dnscrypt-osxclient.DNSCryptMenuBar.plist PATH_TYPE 1 PERMISSIONS @@ -1919,7 +1919,7 @@ CONCLUSION_ACTION 2 IDENTIFIER - com.opendns.osx.dnscryptClient.DNSCrypt-Menubar + com.github.dnscrypt-osxclient.dnscryptClient.DNSCrypt-Menubar LOCATION 0 NAME @@ -1929,7 +1929,7 @@ USE_HFS+_COMPRESSION VERSION - 0.21 + 1.0 TYPE 0 @@ -1970,7 +1970,7 @@ 1 CUSTOM - 1 + 0 SCALING 1 @@ -2126,38 +2126,14 @@ KEYWORDS LOCALIZATIONS - - - LANGUAGE - English - VALUE - - PATH - Text/license.txt - PATH_TYPE - 1 - - - + MODE 0 README LOCALIZATIONS - - - LANGUAGE - English - VALUE - - PATH - Text/readme.txt - PATH_TYPE - 1 - - - + SUMMARY @@ -2172,7 +2148,7 @@ LANGUAGE English VALUE - DNSCrypt + DNSCrypt OSX Client @@ -2227,7 +2203,7 @@ IC_REQUIREMENT_OS_DISTRIBUTION_TYPE 1 IC_REQUIREMENT_OS_MINIMUM_VERSION - 100600 + 100800 IC_REQUIREMENT_CHECK_TYPE 1 diff --git a/DNSCrypt-OSX-Installer/Scripts/dnscrypt-menubar-postinstall.sh b/DNSCrypt-OSX-Installer/Scripts/dnscrypt-menubar-postinstall.sh index 92a06ff..d8c97ff 100755 --- a/DNSCrypt-OSX-Installer/Scripts/dnscrypt-menubar-postinstall.sh +++ b/DNSCrypt-OSX-Installer/Scripts/dnscrypt-menubar-postinstall.sh @@ -3,8 +3,8 @@ exec 2>/dev/null /bin/launchctl load \ - '/Library/LaunchAgents/com.opendns.osx.DNSCryptMenuBar.plist' + '/Library/LaunchAgents/com.github.dnscrypt-osxclient.DNSCryptMenuBar.plist' -/bin/launchctl start com.opendns.osx.DNSCryptMenuBar +/bin/launchctl start com.github.dnscrypt-osxclient.DNSCryptMenuBar exit 0 diff --git a/DNSCrypt-OSX-Installer/Scripts/dnscrypt-menubar-preinstall.sh b/DNSCrypt-OSX-Installer/Scripts/dnscrypt-menubar-preinstall.sh index d5e4b8d..ff9c7af 100755 --- a/DNSCrypt-OSX-Installer/Scripts/dnscrypt-menubar-preinstall.sh +++ b/DNSCrypt-OSX-Installer/Scripts/dnscrypt-menubar-preinstall.sh @@ -6,6 +6,9 @@ exec 2>/dev/null /bin/launchctl remove com.opendns.osx.RoamingClientConfigUpdater /bin/rm -f /Library/LaunchDaemons/com.opendns.osx.Roaming*.plist +/bin/launchctl remove com.opendns.osx.DNSCryptMenuBar +/bin/rm -f /Library/LaunchDaemons/com.opendns.osx.DNSCryptMenuBar.plist + /bin/launchctl stop com.opendns.osx.DNSCryptMenuBar /bin/launchctl remove com.opendns.osx.DNSCryptMenuBar diff --git a/DNSCrypt-OSX-Installer/Scripts/dnscrypt-prefpane-postinstall.sh b/DNSCrypt-OSX-Installer/Scripts/dnscrypt-prefpane-postinstall.sh index b9089db..b1c5797 100755 --- a/DNSCrypt-OSX-Installer/Scripts/dnscrypt-prefpane-postinstall.sh +++ b/DNSCrypt-OSX-Installer/Scripts/dnscrypt-prefpane-postinstall.sh @@ -28,10 +28,10 @@ fi rm -f '/Library/Application Support/DNSCrypt/control/plugin-parental-controls.enabled' rm -f '/Library/Application Support/DNSCrypt/control/plugin-lockin.enabled' -for service in com.opendns.osx.DNSCryptAfterboot \ - com.opendns.osx.DNSCryptConsoleChange \ - com.opendns.osx.DNSCryptControlChange \ - com.opendns.osx.DNSCryptNetworkChange; do +for service in com.github.dnscrypt-osxclient.DNSCryptAfterboot \ + com.github.dnscrypt-osxclient.DNSCryptConsoleChange \ + com.github.dnscrypt-osxclient.DNSCryptControlChange \ + com.github.dnscrypt-osxclient.DNSCryptNetworkChange; do /bin/launchctl load "/Library/LaunchDaemons/${service}.plist" /bin/launchctl start "$service" done diff --git a/DNSCrypt-OSX-Installer/Scripts/dnscrypt-prefpane-preinstall.sh b/DNSCrypt-OSX-Installer/Scripts/dnscrypt-prefpane-preinstall.sh index 0f37f3c..787d349 100755 --- a/DNSCrypt-OSX-Installer/Scripts/dnscrypt-prefpane-preinstall.sh +++ b/DNSCrypt-OSX-Installer/Scripts/dnscrypt-prefpane-preinstall.sh @@ -6,14 +6,24 @@ if [ -x /usr/bin/pkill ]; then /usr/bin/pkill -f '/Applications/System Preferences.app' fi +/bin/rm -rf '/Library/Application Support/DNSCrypt Updater' + /bin/launchctl remove com.opendns.osx.DNSCryptConfigUpdater /bin/rm -f '/Library/LaunchDaemons/com.opendns.osx.DNSCryptConfigUpdater.plist' -/bin/rm -rf '/Library/Application Support/DNSCrypt Updater' /bin/launchctl remove com.opendns.osx.DNSCryptAfterboot /bin/launchctl remove com.opendns.osx.DNSCryptConsoleChange /bin/launchctl remove com.opendns.osx.DNSCryptControlChange /bin/launchctl remove com.opendns.osx.DNSCryptNetworkChange +/bin/rm -f /Library/LaunchDaemons/com.opendns.osx.DNSCrypt*.plist + +/bin/launchctl remove com.github.dnscrypt-osxclient.DNSCryptConfigUpdater +/bin/rm -f '/Library/LaunchDaemons/com.github.dnscrypt-osxclient.DNSCryptConfigUpdater.plist' + +/bin/launchctl remove com.github.dnscrypt-osxclient.DNSCryptAfterboot +/bin/launchctl remove com.github.dnscrypt-osxclient.DNSCryptConsoleChange +/bin/launchctl remove com.github.dnscrypt-osxclient.DNSCryptControlChange +/bin/launchctl remove com.github.dnscrypt-osxclient.DNSCryptNetworkChange /bin/rm -f /var/run/dnscrypt*.lock diff --git a/DNSCrypt-OSX-Installer/Text/license.txt b/DNSCrypt-OSX-Installer/Text/license.txt deleted file mode 100644 index 80ca49e..0000000 --- a/DNSCrypt-OSX-Installer/Text/license.txt +++ /dev/null @@ -1,7 +0,0 @@ -There would normally be a lawyer-ish license here. You probably wouldn't read it. - -This is new and untested software, it might cause bad things to happen. We have no liability, but we've tried to make it good. - -We reserve our copyrights and all our other rights. - -Finally, it's worth mentioning that your participation in our preview is voluntary. We aren't compensating you, and you release any claim to ideas or suggestions you make. diff --git a/DNSCrypt-OSX-Installer/Text/readme.txt b/DNSCrypt-OSX-Installer/Text/readme.txt deleted file mode 100644 index 0bf00c7..0000000 --- a/DNSCrypt-OSX-Installer/Text/readme.txt +++ /dev/null @@ -1,5 +0,0 @@ -You're testing DNSCrypt, a first-of-its-kind service that encrypts all DNS packets between your computer and OpenDNS. - -Encrypting DNS traffic protects against two important threats: First, it prevents man-in-the-middle attacks which can cause malicious DNS responses to be used to trick you into visiting a dangerous website or send traffic to an unintended third party. Second, it prevents snooping by your ISP or any other intermediary who might want to sniff your DNS traffic to see what domains you are resolving. - -When using a public hotspot, an untrusted network, or generally any Internet connection you don't control, it's wise to use DNSCrypt to protect your DNS traffic from tampering and snooping. diff --git a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptAfterboot.plist b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptAfterboot.plist similarity index 91% rename from DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptAfterboot.plist rename to DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptAfterboot.plist index b427efb..9c52065 100644 --- a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptAfterboot.plist +++ b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptAfterboot.plist @@ -3,7 +3,7 @@ Label - com.opendns.osx.DNSCryptAfterboot + com.github.dnscrypt-osxclient.DNSCryptAfterboot KeepAlive RunAtLoad diff --git a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptConsoleChange.plist b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptConsoleChange.plist similarity index 92% rename from DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptConsoleChange.plist rename to DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptConsoleChange.plist index d182b30..8b2e46f 100644 --- a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptConsoleChange.plist +++ b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptConsoleChange.plist @@ -3,7 +3,7 @@ Label - com.opendns.osx.DNSCryptConsoleChange + com.github.dnscrypt-osxclient.DNSCryptConsoleChange KeepAlive RunAtLoad diff --git a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptControlChange.plist b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptControlChange.plist similarity index 92% rename from DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptControlChange.plist rename to DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptControlChange.plist index 429fed8..07cb47f 100644 --- a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptControlChange.plist +++ b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptControlChange.plist @@ -3,7 +3,7 @@ Label - com.opendns.osx.DNSCryptControlChange + com.github.dnscrypt-osxclient.DNSCryptControlChange KeepAlive RunAtLoad diff --git a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptMenuBar.plist b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptMenuBar.plist similarity index 87% rename from DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptMenuBar.plist rename to DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptMenuBar.plist index e3e6438..8f4bab3 100644 --- a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptMenuBar.plist +++ b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptMenuBar.plist @@ -3,7 +3,7 @@ Label - com.opendns.osx.DNSCryptMenuBar + com.github.dnscrypt-osxclient.DNSCryptMenuBar KeepAlive RunAtLoad diff --git a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptNetworkChange.plist b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptNetworkChange.plist similarity index 92% rename from DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptNetworkChange.plist rename to DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptNetworkChange.plist index 2230257..69d4985 100644 --- a/DNSCrypt-OSX-Installer/com.opendns.osx.DNSCryptNetworkChange.plist +++ b/DNSCrypt-OSX-Installer/com.github.dnscrypt-osxclient.DNSCryptNetworkChange.plist @@ -3,7 +3,7 @@ Label - com.opendns.osx.DNSCryptNetworkChange + com.github.dnscrypt-osxclient.DNSCryptNetworkChange KeepAlive RunAtLoad diff --git a/DNSCrypt-OSX-Installer/installed_background.gif b/DNSCrypt-OSX-Installer/installed_background.gif deleted file mode 100644 index 4994726..0000000 Binary files a/DNSCrypt-OSX-Installer/installed_background.gif and /dev/null differ diff --git a/DNSCrypt-Preference-Pane/COPYING b/DNSCrypt-Preference-Pane/COPYING index 01ad861..5a31aab 100644 --- a/DNSCrypt-Preference-Pane/COPYING +++ b/DNSCrypt-Preference-Pane/COPYING @@ -1,5 +1,6 @@ /* * Copyright (c) 2011-2014 OpenDNS, Inc. + * Copyright (c) 2014 AlterStep * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above diff --git a/DNSCrypt-Preference-Pane/DNSCrypt.xcodeproj/project.pbxproj b/DNSCrypt-Preference-Pane/DNSCrypt.xcodeproj/project.pbxproj index 95b3549..0d24358 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt.xcodeproj/project.pbxproj +++ b/DNSCrypt-Preference-Pane/DNSCrypt.xcodeproj/project.pbxproj @@ -14,9 +14,10 @@ 0946B0D813F47F53008277C6 /* DNSCrypt.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 0946B0D713F47F53008277C6 /* DNSCrypt.tiff */; }; 0946B0DB13F47F53008277C6 /* DNSCrypt.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0946B0D913F47F53008277C6 /* DNSCrypt.xib */; }; 0946B0E413F48065008277C6 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0946B0E313F48065008277C6 /* Security.framework */; }; - 09640E95145CA4AD008B37EC /* opendns_logo_300.png in Resources */ = {isa = PBXBuildFile; fileRef = 09640E94145CA4AD008B37EC /* opendns_logo_300.png */; }; 09A13ABC145F2D8700B227A4 /* ajax-loader.gif in Resources */ = {isa = PBXBuildFile; fileRef = 09A13ABB145F2D8700B227A4 /* ajax-loader.gif */; }; 09AD01A015D2483500638DCE /* html in Resources */ = {isa = PBXBuildFile; fileRef = 09AD019F15D2483500638DCE /* html */; }; + 09B168721906062E003FDBCC /* CHCSVParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 09B168701906062E003FDBCC /* CHCSVParser.h */; }; + 09B168731906062E003FDBCC /* CHCSVParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 09B168711906062E003FDBCC /* CHCSVParser.m */; }; 09FB094415C9DE6400B8AAB6 /* usr in Resources */ = {isa = PBXBuildFile; fileRef = 09FB094315C9DE6400B8AAB6 /* usr */; }; 4B36C4651468B87A0085B07C /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B36C4641468B87A0085B07C /* WebKit.framework */; }; 4B89D983147CA39200872F60 /* dnscrypt_256.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B89D982147CA39200872F60 /* dnscrypt_256.png */; }; @@ -44,9 +45,10 @@ 0946B0DA13F47F53008277C6 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/DNSCrypt.xib; sourceTree = ""; }; 0946B0E113F48056008277C6 /* SecurityFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityFoundation.framework; path = System/Library/Frameworks/SecurityFoundation.framework; sourceTree = SDKROOT; }; 0946B0E313F48065008277C6 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; - 09640E94145CA4AD008B37EC /* opendns_logo_300.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = opendns_logo_300.png; sourceTree = ""; }; 09A13ABB145F2D8700B227A4 /* ajax-loader.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "ajax-loader.gif"; sourceTree = ""; }; 09AD019F15D2483500638DCE /* html */ = {isa = PBXFileReference; lastKnownFileType = folder; name = html; path = extra/html; sourceTree = ""; }; + 09B168701906062E003FDBCC /* CHCSVParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHCSVParser.h; sourceTree = ""; }; + 09B168711906062E003FDBCC /* CHCSVParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHCSVParser.m; sourceTree = ""; }; 09FB094315C9DE6400B8AAB6 /* usr */ = {isa = PBXFileReference; lastKnownFileType = folder; name = usr; path = extra/usr; sourceTree = ""; }; 4B36C4641468B87A0085B07C /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 4B89D982147CA39200872F60 /* dnscrypt_256.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dnscrypt_256.png; sourceTree = ""; }; @@ -118,9 +120,10 @@ children = ( 0946B0D413F47F53008277C6 /* DNSCrypt.h */, 0946B0D513F47F53008277C6 /* DNSCrypt.m */, + 0946B0D913F47F53008277C6 /* DNSCrypt.xib */, 0946B0D713F47F53008277C6 /* DNSCrypt.tiff */, 4B89D982147CA39200872F60 /* dnscrypt_256.png */, - 0946B0D913F47F53008277C6 /* DNSCrypt.xib */, + 09B1686F1906062E003FDBCC /* CHCSVParser */, 09AD019F15D2483500638DCE /* html */, 09FB094315C9DE6400B8AAB6 /* usr */, 0946B0CE13F47F53008277C6 /* Supporting Files */, @@ -132,7 +135,6 @@ isa = PBXGroup; children = ( 4BABEA1E144F5A67006AEF34 /* Status */, - 09640E94145CA4AD008B37EC /* opendns_logo_300.png */, 0946B0CF13F47F53008277C6 /* DNSCrypt-Info.plist */, 0946B0D013F47F53008277C6 /* InfoPlist.strings */, 0946B0D313F47F53008277C6 /* DNSCrypt-Prefix.pch */, @@ -140,6 +142,15 @@ name = "Supporting Files"; sourceTree = ""; }; + 09B1686F1906062E003FDBCC /* CHCSVParser */ = { + isa = PBXGroup; + children = ( + 09B168701906062E003FDBCC /* CHCSVParser.h */, + 09B168711906062E003FDBCC /* CHCSVParser.m */, + ); + path = CHCSVParser; + sourceTree = ""; + }; 4BABEA1E144F5A67006AEF34 /* Status */ = { isa = PBXGroup; children = ( @@ -161,6 +172,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 09B168721906062E003FDBCC /* CHCSVParser.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -225,7 +237,6 @@ 4BABEA2B144F5A7B006AEF34 /* shield_yellow.png in Resources */, 4BABEA2C144F5A7B006AEF34 /* shield_red.png in Resources */, 4BABEA2D144F5A7B006AEF34 /* shield_green.png in Resources */, - 09640E95145CA4AD008B37EC /* opendns_logo_300.png in Resources */, 09A13ABC145F2D8700B227A4 /* ajax-loader.gif in Resources */, 4B89D983147CA39200872F60 /* dnscrypt_256.png in Resources */, 09FB094415C9DE6400B8AAB6 /* usr in Resources */, @@ -250,6 +261,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 09B168731906062E003FDBCC /* CHCSVParser.m in Sources */, 0946B0D613F47F53008277C6 /* DNSCrypt.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/CHCSVParser/CHCSVParser.h b/DNSCrypt-Preference-Pane/DNSCrypt/CHCSVParser/CHCSVParser.h new file mode 100644 index 0000000..d99ef5d --- /dev/null +++ b/DNSCrypt-Preference-Pane/DNSCrypt/CHCSVParser/CHCSVParser.h @@ -0,0 +1,119 @@ +// +// CHCSVParser.h +// CHCSVParser +/** + Copyright (c) 2012 Dave DeLong + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + **/ + +#import + +extern NSString * const CHCSVErrorDomain; + +enum { + CHCSVErrorCodeInvalidFormat = 1, +}; + +typedef NSInteger CHCSVErrorCode; + +@class CHCSVParser; +@protocol CHCSVParserDelegate + +@optional +- (void)parserDidBeginDocument:(CHCSVParser *)parser; +- (void)parserDidEndDocument:(CHCSVParser *)parser; + +- (void)parser:(CHCSVParser *)parser didBeginLine:(NSUInteger)recordNumber; +- (void)parser:(CHCSVParser *)parser didEndLine:(NSUInteger)recordNumber; + +- (void)parser:(CHCSVParser *)parser didReadField:(NSString *)field atIndex:(NSInteger)fieldIndex; +- (void)parser:(CHCSVParser *)parser didReadComment:(NSString *)comment; + +- (void)parser:(CHCSVParser *)parser didFailWithError:(NSError *)error; + +@end + +@interface CHCSVParser : NSObject + +@property (assign) id delegate; +@property (assign) BOOL recognizesBackslashesAsEscapes; // default is NO +@property (assign) BOOL sanitizesFields; // default is NO +@property (assign) BOOL recognizesComments; // default is NO +@property (assign) BOOL stripsLeadingAndTrailingWhitespace; // default is NO + +@property (readonly) NSUInteger totalBytesRead; + +// designated initializer +- (id)initWithInputStream:(NSInputStream *)stream usedEncoding:(NSStringEncoding *)encoding delimiter:(unichar)delimiter; + +- (id)initWithCSVString:(NSString *)csv; +- (id)initWithCSVString:(NSString *)csv delimiter:(unichar)delimiter; + +- (id)initWithContentsOfCSVFile:(NSString *)csvFilePath; +- (id)initWithContentsOfCSVFile:(NSString *)csvFilePath delimiter:(unichar)delimiter; + +- (void)parse; +- (void)cancelParsing; + +@end + +@interface CHCSVWriter : NSObject + +- (instancetype)initForWritingToCSVFile:(NSString *)path; +- (instancetype)initWithOutputStream:(NSOutputStream *)stream encoding:(NSStringEncoding)encoding delimiter:(unichar)delimiter; + +- (void)writeField:(NSString *)field; +- (void)finishLine; + +- (void)writeLineOfFields:(id)fields; + +- (void)writeComment:(NSString *)comment; + +- (void)closeStream; + +@end + +#pragma mark - Convenience Categories + +typedef NS_OPTIONS(NSUInteger, CHCSVParserOptions) { + CHCSVParserOptionsRecognizesBackslashesAsEscapes = 1 << 0, + CHCSVParserOptionsSanitizesFields = 1 << 1, + CHCSVParserOptionsRecognizesComments = 1 << 2, + CHCSVParserOptionsStripsLeadingAndTrailingWhitespace = 1 << 3 +}; + +@interface NSArray (CHCSVAdditions) + ++ (instancetype)arrayWithContentsOfCSVFile:(NSString *)csvFilePath; ++ (instancetype)arrayWithContentsOfCSVFile:(NSString *)csvFilePath delimiter:(unichar)delimiter; ++ (instancetype)arrayWithContentsOfCSVFile:(NSString *)csvFilePath options:(CHCSVParserOptions)options; ++ (instancetype)arrayWithContentsOfCSVFile:(NSString *)csvFilePath options:(CHCSVParserOptions)options delimiter:(unichar)delimiter; +- (NSString *)CSVString; + +@end + +@interface NSString (CHCSVAdditions) + +- (NSArray *)CSVComponents; +- (NSArray *)CSVComponentsWithDelimiter:(unichar)delimiter; +- (NSArray *)CSVComponentsWithOptions:(CHCSVParserOptions)options; +- (NSArray *)CSVComponentsWithOptions:(CHCSVParserOptions)options delimiter:(unichar)delimiter; + +@end diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/CHCSVParser/CHCSVParser.m b/DNSCrypt-Preference-Pane/DNSCrypt/CHCSVParser/CHCSVParser.m new file mode 100644 index 0000000..0b31110 --- /dev/null +++ b/DNSCrypt-Preference-Pane/DNSCrypt/CHCSVParser/CHCSVParser.m @@ -0,0 +1,834 @@ +// +// CHCSVParser.m +// CHCSVParser +/** + Copyright (c) 2012 Dave DeLong + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + **/ + +#import "CHCSVParser.h" + +NSString *const CHCSVErrorDomain = @"com.davedelong.csv"; + +#define CHUNK_SIZE 512 +#define DOUBLE_QUOTE '"' +#define COMMA ',' +#define OCTOTHORPE '#' +#define BACKSLASH '\\' + +#if __has_feature(objc_arc) + +#define CHCSV_HAS_ARC 1 +#define CHCSV_RETAIN(_o) (_o) +#define CHCSV_RELEASE(_o) +#define CHCSV_AUTORELEASE(_o) (_o) + +#else + +#define CHCSV_HAS_ARC 0 +#define CHCSV_RETAIN(_o) [(_o) retain] +#define CHCSV_RELEASE(_o) [(_o) release] +#define CHCSV_AUTORELEASE(_o) [(_o) autorelease] + +#endif + +@interface CHCSVParser () +@property (assign) NSUInteger totalBytesRead; +@end + +@implementation CHCSVParser { + NSInputStream *_stream; + NSStringEncoding _streamEncoding; + NSMutableData *_stringBuffer; + NSMutableString *_string; + NSCharacterSet *_validFieldCharacters; + + NSUInteger _nextIndex; + + NSInteger _fieldIndex; + NSRange _fieldRange; + NSMutableString *_sanitizedField; + + unichar _delimiter; + + NSError *_error; + + NSUInteger _currentRecord; + BOOL _cancelled; +} + +- (id)initWithCSVString:(NSString *)csv { + NSStringEncoding encoding = [csv fastestEncoding]; + NSInputStream *stream = [NSInputStream inputStreamWithData:[csv dataUsingEncoding:encoding]]; + return [self initWithInputStream:stream usedEncoding:&encoding delimiter:COMMA]; +} + +- (id)initWithCSVString:(NSString *)csv delimiter:(unichar)delimiter +{ + NSStringEncoding encoding = [csv fastestEncoding]; + NSInputStream *stream = [NSInputStream inputStreamWithData:[csv dataUsingEncoding:encoding]]; + return [self initWithInputStream:stream usedEncoding:&encoding delimiter:delimiter]; +} + +- (id)initWithContentsOfCSVFile:(NSString *)csvFilePath { + NSInputStream *stream = [NSInputStream inputStreamWithFileAtPath:csvFilePath]; + NSStringEncoding encoding = 0; + return [self initWithInputStream:stream usedEncoding:&encoding delimiter:COMMA]; +} + +- (id)initWithContentsOfCSVFile:(NSString *)csvFilePath delimiter:(unichar)delimiter +{ + NSInputStream *stream = [NSInputStream inputStreamWithFileAtPath:csvFilePath]; + NSStringEncoding encoding = 0; + return [self initWithInputStream:stream usedEncoding:&encoding delimiter:delimiter]; +} + +- (id)initWithInputStream:(NSInputStream *)stream usedEncoding:(NSStringEncoding *)encoding delimiter:(unichar)delimiter { + NSParameterAssert(stream); + NSParameterAssert(delimiter); + NSAssert([[NSCharacterSet newlineCharacterSet] characterIsMember:delimiter] == NO, @"The field delimiter may not be a newline"); + NSAssert(delimiter != DOUBLE_QUOTE, @"The field delimiter may not be a double quote"); + NSAssert(delimiter != OCTOTHORPE, @"The field delimiter may not be an octothorpe"); + + self = [super init]; + if (self) { + _stream = CHCSV_RETAIN(stream); + [_stream open]; + + _stringBuffer = [[NSMutableData alloc] init]; + _string = [[NSMutableString alloc] init]; + + _delimiter = delimiter; + + _nextIndex = 0; + _recognizesComments = NO; + _recognizesBackslashesAsEscapes = NO; + _sanitizesFields = NO; + _sanitizedField = [[NSMutableString alloc] init]; + _stripsLeadingAndTrailingWhitespace = NO; + + NSMutableCharacterSet *m = [[NSCharacterSet newlineCharacterSet] mutableCopy]; + NSString *invalid = [NSString stringWithFormat:@"%c%C", DOUBLE_QUOTE, _delimiter]; + [m addCharactersInString:invalid]; + _validFieldCharacters = CHCSV_RETAIN([m invertedSet]); + CHCSV_RELEASE(m); + + if (encoding == NULL || *encoding == 0) { + // we need to determine the encoding + [self _sniffEncoding]; + if (encoding) { + *encoding = _streamEncoding; + } + } else { + _streamEncoding = *encoding; + } + } + return self; +} + +- (void)dealloc { + [_stream close]; +#if !CHCSV_HAS_ARC + [_stream release]; + [_stringBuffer release]; + [_string release]; + [_sanitizedField release]; + [_validFieldCharacters release]; + [super dealloc]; +#endif +} + +#pragma mark - + +- (void)_sniffEncoding { + NSStringEncoding encoding = NSUTF8StringEncoding; + + uint8_t bytes[CHUNK_SIZE]; + NSInteger readLength = [_stream read:bytes maxLength:CHUNK_SIZE]; + if (readLength > 0 && readLength <= CHUNK_SIZE) { + [_stringBuffer appendBytes:bytes length:readLength]; + [self setTotalBytesRead:[self totalBytesRead] + readLength]; + + NSInteger bomLength = 0; + + if (readLength > 3 && bytes[0] == 0x00 && bytes[1] == 0x00 && bytes[2] == 0xFE && bytes[3] == 0xFF) { + encoding = NSUTF32BigEndianStringEncoding; + bomLength = 4; + } else if (readLength > 3 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0x00 && bytes[3] == 0x00) { + encoding = NSUTF32LittleEndianStringEncoding; + bomLength = 4; + } else if (readLength > 3 && bytes[0] == 0x1B && bytes[1] == 0x24 && bytes[2] == 0x29 && bytes[3] == 0x43) { + encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISO_2022_KR); + bomLength = 4; + } else if (readLength > 1 && bytes[0] == 0xFE && bytes[1] == 0xFF) { + encoding = NSUTF16BigEndianStringEncoding; + bomLength = 2; + } else if (readLength > 1 && bytes[0] == 0xFF && bytes[1] == 0xFE) { + encoding = NSUTF16LittleEndianStringEncoding; + bomLength = 2; + } else if (readLength > 2 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) { + encoding = NSUTF8StringEncoding; + bomLength = 3; + } else { + NSString *bufferAsUTF8 = nil; + + for (NSInteger triedLength = 0; triedLength < 4; ++triedLength) { + bufferAsUTF8 = CHCSV_AUTORELEASE([[NSString alloc] initWithBytes:bytes length:readLength-triedLength encoding:NSUTF8StringEncoding]); + if (bufferAsUTF8 != nil) { + break; + } + } + + if (bufferAsUTF8 != nil) { + encoding = NSUTF8StringEncoding; + } else { + NSLog(@"unable to determine stream encoding; assuming MacOSRoman"); + encoding = NSMacOSRomanStringEncoding; + } + } + + if (bomLength > 0) { + [_stringBuffer replaceBytesInRange:NSMakeRange(0, bomLength) withBytes:NULL length:0]; + } + } + _streamEncoding = encoding; +} + +- (void)_loadMoreIfNecessary { + NSUInteger stringLength = [_string length]; + NSUInteger reloadPortion = stringLength / 3; + if (reloadPortion < 10) { reloadPortion = 10; } + + if ([_stream hasBytesAvailable] && _nextIndex+reloadPortion >= stringLength) { + // read more from the stream + uint8_t buffer[CHUNK_SIZE]; + NSInteger readBytes = [_stream read:buffer maxLength:CHUNK_SIZE]; + if (readBytes > 0) { + // append it to the buffer + [_stringBuffer appendBytes:buffer length:readBytes]; + [self setTotalBytesRead:[self totalBytesRead] + readBytes]; + } + } + + if ([_stringBuffer length] > 0) { + // try to turn the next portion of the buffer into a string + NSUInteger readLength = [_stringBuffer length]; + while (readLength > 0) { + NSString *readString = [[NSString alloc] initWithBytes:[_stringBuffer bytes] length:readLength encoding:_streamEncoding]; + if (readString == nil) { + readLength--; + } else { + [_string appendString:readString]; + CHCSV_RELEASE(readString); + break; + } + }; + + [_stringBuffer replaceBytesInRange:NSMakeRange(0, readLength) withBytes:NULL length:0]; + } +} + +- (void)_advance { + [self _loadMoreIfNecessary]; + _nextIndex++; +} + +- (unichar)_peekCharacter { + [self _loadMoreIfNecessary]; + if (_nextIndex >= [_string length]) { return '\0'; } + + return [_string characterAtIndex:_nextIndex]; +} + +- (unichar)_peekPeekCharacter { + [self _loadMoreIfNecessary]; + NSUInteger nextNextIndex = _nextIndex+1; + if (nextNextIndex >= [_string length]) { return '\0'; } + + return [_string characterAtIndex:nextNextIndex]; +} + +#pragma mark - + +- (void)parse { + [self _beginDocument]; + + _currentRecord = 0; + while ([self _parseRecord]) { + ; // yep; + } + + if (_error != nil) { + [self _error]; + } else { + [self _endDocument]; + } +} + +- (void)cancelParsing { + _cancelled = YES; +} + +- (BOOL)_parseRecord { + while ([self _peekCharacter] == OCTOTHORPE && _recognizesComments) { + [self _parseComment]; + } + + [self _beginRecord]; + while (1) { + if (![self _parseField]) { + break; + } + if (![self _parseDelimiter]) { + break; + } + } + BOOL followedByNewline = [self _parseNewline]; + [self _endRecord]; + + return (followedByNewline && _error == nil); +} + +- (BOOL)_parseNewline { + if (_cancelled) { return NO; } + + NSUInteger charCount = 0; + while ([[NSCharacterSet newlineCharacterSet] characterIsMember:[self _peekCharacter]]) { + charCount++; + [self _advance]; + } + return (charCount > 0); +} + +- (BOOL)_parseComment { + [self _advance]; // consume the octothorpe + + NSCharacterSet *newlines = [NSCharacterSet newlineCharacterSet]; + + [self _beginComment]; + BOOL isBackslashEscaped = NO; + while (1) { + if (isBackslashEscaped == NO) { + unichar next = [self _peekCharacter]; + if (next == BACKSLASH && _recognizesBackslashesAsEscapes) { + isBackslashEscaped = YES; + [self _advance]; + } else if ([newlines characterIsMember:next] == NO) { + [self _advance]; + } else { + // it's a newline + break; + } + } else { + isBackslashEscaped = YES; + [self _advance]; + } + } + [self _endComment]; + + return [self _parseNewline]; +} + +- (void)_parseFieldWhitespace { + NSCharacterSet *whitespace = [NSCharacterSet whitespaceCharacterSet]; + while ([self _peekCharacter] != '\0' && + [whitespace characterIsMember:[self _peekCharacter]] && + [self _peekCharacter] != _delimiter) { + // if we're sanitizing fields, then these characters would be stripped (because they're not appended to _sanitizedField) + // if we're not sanitizing fields, then they'll be included in the -substringWithRange: + [self _advance]; + } +} + +- (BOOL)_parseField { + if (_cancelled) { return NO; } + + BOOL parsedField = NO; + [self _beginField]; + if (_stripsLeadingAndTrailingWhitespace) { + // consume leading whitespace + [self _parseFieldWhitespace]; + } + + if ([self _peekCharacter] == DOUBLE_QUOTE) { + parsedField = [self _parseEscapedField]; + } else { + parsedField = [self _parseUnescapedField]; + if (_stripsLeadingAndTrailingWhitespace) { + NSString *trimmedString = [_sanitizedField stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + [_sanitizedField setString:trimmedString]; + } + } + + if (parsedField) { + if (_stripsLeadingAndTrailingWhitespace) { + // consume trailing whitespace + [self _parseFieldWhitespace]; + } + [self _endField]; + } + return parsedField; +} + +- (BOOL)_parseEscapedField { + [self _advance]; // consume the opening double quote + + NSCharacterSet *newlines = [NSCharacterSet newlineCharacterSet]; + BOOL isBackslashEscaped = NO; + while (1) { + unichar next = [self _peekCharacter]; + if (next == '\0') { break; } + + if (isBackslashEscaped == NO) { + if (next == BACKSLASH && _recognizesBackslashesAsEscapes) { + isBackslashEscaped = YES; + [self _advance]; // consume the backslash + } else if ([_validFieldCharacters characterIsMember:next] || + [newlines characterIsMember:next] || + next == _delimiter) { + [_sanitizedField appendFormat:@"%C", next]; + [self _advance]; + } else if (next == DOUBLE_QUOTE && [self _peekPeekCharacter] == DOUBLE_QUOTE) { + [_sanitizedField appendFormat:@"%C", next]; + [self _advance]; + [self _advance]; + } else { + // not valid, or it's not a doubled double quote + break; + } + } else { + [_sanitizedField appendFormat:@"%C", next]; + isBackslashEscaped = NO; + [self _advance]; + } + } + + if ([self _peekCharacter] == DOUBLE_QUOTE) { + [self _advance]; + return YES; + } + + return NO; +} + +- (BOOL)_parseUnescapedField { + + BOOL isBackslashEscaped = NO; + while (1) { + unichar next = [self _peekCharacter]; + if (next == '\0') { break; } + + if (isBackslashEscaped == NO) { + if (next == BACKSLASH && _recognizesBackslashesAsEscapes) { + isBackslashEscaped = YES; + [self _advance]; + } else if ([_validFieldCharacters characterIsMember:next]) { + [_sanitizedField appendFormat:@"%C", next]; + [self _advance]; + } else { + break; + } + } else { + isBackslashEscaped = NO; + [_sanitizedField appendFormat:@"%C", next]; + [self _advance]; + } + } + + return YES; +} + +- (BOOL)_parseDelimiter { + unichar next = [self _peekCharacter]; + if (next == _delimiter) { + [self _advance]; + return YES; + } + if (next != '\0' && [[NSCharacterSet newlineCharacterSet] characterIsMember:next] == NO) { + NSString *description = [NSString stringWithFormat:@"Unexpected delimiter. Expected '%C' (0x%X), but got '%C' (0x%X)", _delimiter, _delimiter, [self _peekCharacter], [self _peekCharacter]]; + _error = [[NSError alloc] initWithDomain:CHCSVErrorDomain code:CHCSVErrorCodeInvalidFormat userInfo:@{NSLocalizedDescriptionKey : description}]; + } + return NO; +} + +- (void)_beginDocument { + if ([_delegate respondsToSelector:@selector(parserDidBeginDocument:)]) { + [_delegate parserDidBeginDocument:self]; + } +} + +- (void)_endDocument { + if ([_delegate respondsToSelector:@selector(parserDidEndDocument:)]) { + [_delegate parserDidEndDocument:self]; + } +} + +- (void)_beginRecord { + if (_cancelled) { return; } + + _fieldIndex = 0; + _currentRecord++; + if ([_delegate respondsToSelector:@selector(parser:didBeginLine:)]) { + [_delegate parser:self didBeginLine:_currentRecord]; + } +} + +- (void)_endRecord { + if (_cancelled) { return; } + + if ([_delegate respondsToSelector:@selector(parser:didEndLine:)]) { + [_delegate parser:self didEndLine:_currentRecord]; + } +} + +- (void)_beginField { + if (_cancelled) { return; } + + [_sanitizedField setString:@""]; + _fieldRange.location = _nextIndex; +} + +- (void)_endField { + if (_cancelled) { return; } + + _fieldRange.length = (_nextIndex - _fieldRange.location); + NSString *field = nil; + + if (_sanitizesFields) { + field = CHCSV_AUTORELEASE([_sanitizedField copy]); + } else { + field = [_string substringWithRange:_fieldRange]; + if (_stripsLeadingAndTrailingWhitespace) { + field = [field stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + } + } + + if ([_delegate respondsToSelector:@selector(parser:didReadField:atIndex:)]) { + [_delegate parser:self didReadField:field atIndex:_fieldIndex]; + } + + [_string replaceCharactersInRange:NSMakeRange(0, NSMaxRange(_fieldRange)) withString:@""]; + _nextIndex = 0; + _fieldIndex++; +} + +- (void)_beginComment { + if (_cancelled) { return; } + + _fieldRange.location = _nextIndex; +} + +- (void)_endComment { + if (_cancelled) { return; } + + _fieldRange.length = (_nextIndex - _fieldRange.location); + if ([_delegate respondsToSelector:@selector(parser:didReadComment:)]) { + NSString *comment = [_string substringWithRange:_fieldRange]; + [_delegate parser:self didReadComment:comment]; + } + + [_string replaceCharactersInRange:NSMakeRange(0, NSMaxRange(_fieldRange)) withString:@""]; + _nextIndex = 0; +} + +- (void)_error { + if (_cancelled) { return; } + + if ([_delegate respondsToSelector:@selector(parser:didFailWithError:)]) { + [_delegate parser:self didFailWithError:_error]; + } +} + +@end + +@implementation CHCSVWriter { + NSOutputStream *_stream; + NSStringEncoding _streamEncoding; + + NSData *_delimiter; + NSData *_bom; + NSCharacterSet *_illegalCharacters; + + NSUInteger _currentField; +} + +- (instancetype)initForWritingToCSVFile:(NSString *)path { + NSOutputStream *stream = [NSOutputStream outputStreamToFileAtPath:path append:NO]; + return [self initWithOutputStream:stream encoding:NSUTF8StringEncoding delimiter:COMMA]; +} + +- (instancetype)initWithOutputStream:(NSOutputStream *)stream encoding:(NSStringEncoding)encoding delimiter:(unichar)delimiter { + self = [super init]; + if (self) { + _stream = CHCSV_RETAIN(stream); + _streamEncoding = encoding; + + if ([_stream streamStatus] == NSStreamStatusNotOpen) { + [_stream open]; + } + + NSData *a = [@"a" dataUsingEncoding:_streamEncoding]; + NSData *aa = [@"aa" dataUsingEncoding:_streamEncoding]; + if ([a length] * 2 != [aa length]) { + NSUInteger characterLength = [aa length] - [a length]; + _bom = CHCSV_RETAIN([a subdataWithRange:NSMakeRange(0, [a length] - characterLength)]); + [self _writeData:_bom]; + } + + NSString *delimiterString = [NSString stringWithFormat:@"%C", delimiter]; + NSData *delimiterData = [delimiterString dataUsingEncoding:_streamEncoding]; + if ([_bom length] > 0) { + _delimiter = CHCSV_RETAIN([delimiterData subdataWithRange:NSMakeRange([_bom length], [delimiterData length] - [_bom length])]); + } else { + _delimiter = CHCSV_RETAIN(delimiterData); + } + + NSMutableCharacterSet *illegalCharacters = [[NSCharacterSet newlineCharacterSet] mutableCopy]; + [illegalCharacters addCharactersInString:delimiterString]; + [illegalCharacters addCharactersInString:@"\""]; + _illegalCharacters = [illegalCharacters copy]; + CHCSV_RELEASE(illegalCharacters); + } + return self; +} + +- (void)dealloc { + [self closeStream]; + +#if !CHCSV_HAS_ARC + [_delimiter release]; + [_bom release]; + [_illegalCharacters release]; + [super dealloc]; +#endif +} + +- (void)_writeData:(NSData *)data { + if ([data length] > 0) { + const void *bytes = [data bytes]; + [_stream write:bytes maxLength:[data length]]; + } +} + +- (void)_writeString:(NSString *)string { + NSData *stringData = [string dataUsingEncoding:_streamEncoding]; + if ([_bom length] > 0) { + stringData = [stringData subdataWithRange:NSMakeRange([_bom length], [stringData length] - [_bom length])]; + } + [self _writeData:stringData]; +} + +- (void)_writeDelimiter { + [self _writeData:_delimiter]; +} + +- (void)writeField:(id)field { + if (_currentField > 0) { + [self _writeDelimiter]; + } + NSString *string = field ? [field description] : @""; + if ([string rangeOfCharacterFromSet:_illegalCharacters].location != NSNotFound) { + // replace double quotes with double double quotes + string = [string stringByReplacingOccurrencesOfString:@"\"" withString:@"\"\""]; + // surround in double quotes + string = [NSString stringWithFormat:@"\"%@\"", string]; + } + [self _writeString:string]; + _currentField++; +} + +- (void)finishLine { + [self _writeString:@"\n"]; + _currentField = 0; +} + +- (void)_finishLineIfNecessary { + if (_currentField != 0) { + [self finishLine]; + } +} + +- (void)writeLineOfFields:(id)fields { + [self _finishLineIfNecessary]; + + for (id field in fields) { + [self writeField:field]; + } + [self finishLine]; +} + +- (void)writeComment:(NSString *)comment { + [self _finishLineIfNecessary]; + + NSArray *lines = [comment componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; + for (NSString *line in lines) { + NSString *commented = [NSString stringWithFormat:@"#%@\n", line]; + [self _writeString:commented]; + } +} + +- (void)closeStream { + [_stream close]; + CHCSV_RELEASE(_stream); + _stream = nil; +} + +@end + +#pragma mark - Convenience Categories + +@interface _CHCSVAggregator : NSObject + +@property (readonly) NSArray *lines; +@property (readonly) NSError *error; + +@end + +@implementation _CHCSVAggregator { + NSMutableArray *_lines; + NSMutableArray *_currentLine; +} + +#if !CHCSV_HAS_ARC +- (void)dealloc { + [_currentLine release]; + [_lines release]; + [_error release]; + [super dealloc]; +} +#endif + +- (void)parserDidBeginDocument:(CHCSVParser *)parser { + _lines = [[NSMutableArray alloc] init]; +} + +- (void)parser:(CHCSVParser *)parser didBeginLine:(NSUInteger)recordNumber { + _currentLine = [[NSMutableArray alloc] init]; +} + +- (void)parser:(CHCSVParser *)parser didEndLine:(NSUInteger)recordNumber { + [_lines addObject:_currentLine]; + CHCSV_RELEASE(_currentLine); + _currentLine = nil; +} + +- (void)parser:(CHCSVParser *)parser didReadField:(NSString *)field atIndex:(NSInteger)fieldIndex { + [_currentLine addObject:field]; +} + +- (void)parser:(CHCSVParser *)parser didFailWithError:(NSError *)error { + _error = CHCSV_RETAIN(error); + CHCSV_RELEASE(_lines); + _lines = nil; +} + +@end + +@implementation NSArray (CHCSVAdditions) + ++ (instancetype)arrayWithContentsOfCSVFile:(NSString *)csvFilePath { + return [self arrayWithContentsOfCSVFile:csvFilePath options:0 delimiter:COMMA]; +} + ++ (instancetype)arrayWithContentsOfCSVFile:(NSString *)csvFilePath delimiter:(unichar)delimiter +{ + return [self arrayWithContentsOfCSVFile:csvFilePath options:0 delimiter:delimiter]; +} + ++ (instancetype)arrayWithContentsOfCSVFile:(NSString *)csvFilePath options:(CHCSVParserOptions)options +{ + return [self arrayWithContentsOfCSVFile:csvFilePath options:options delimiter:COMMA]; +} + ++ (instancetype)arrayWithContentsOfCSVFile:(NSString *)csvFilePath options:(CHCSVParserOptions)options delimiter:(unichar)delimiter { + NSParameterAssert(csvFilePath); + _CHCSVAggregator *aggregator = [[_CHCSVAggregator alloc] init]; + CHCSVParser *parser = [[CHCSVParser alloc] initWithContentsOfCSVFile:csvFilePath delimiter:delimiter]; + [parser setDelegate:aggregator]; + + [parser setRecognizesBackslashesAsEscapes:!!(options & CHCSVParserOptionsRecognizesBackslashesAsEscapes)]; + [parser setSanitizesFields:!!(options & CHCSVParserOptionsSanitizesFields)]; + [parser setRecognizesComments:!!(options & CHCSVParserOptionsRecognizesComments)]; + [parser setStripsLeadingAndTrailingWhitespace:!!(options & CHCSVParserOptionsStripsLeadingAndTrailingWhitespace)]; + + [parser parse]; + CHCSV_RELEASE(parser); + + NSArray *final = CHCSV_AUTORELEASE(CHCSV_RETAIN([aggregator lines])); + CHCSV_RELEASE(aggregator); + + return final; +} + +- (NSString *)CSVString { + NSOutputStream *output = [NSOutputStream outputStreamToMemory]; + CHCSVWriter *writer = [[CHCSVWriter alloc] initWithOutputStream:output encoding:NSUTF8StringEncoding delimiter:COMMA]; + for (id object in self) { + if ([object conformsToProtocol:@protocol(NSFastEnumeration)]) { + [writer writeLineOfFields:object]; + } + } + [writer closeStream]; + CHCSV_RELEASE(writer); + + NSData *buffer = [output propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; + NSString *string = [[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding]; + return CHCSV_AUTORELEASE(string); +} + +@end + +@implementation NSString (CHCSVAdditions) + + +- (NSArray *)CSVComponents { + return [self CSVComponentsWithOptions:0 delimiter:COMMA]; +} + +- (NSArray *)CSVComponentsWithDelimiter:(unichar)delimiter +{ + return [self CSVComponentsWithOptions:0 delimiter:delimiter]; +} + +- (NSArray *)CSVComponentsWithOptions:(CHCSVParserOptions)options +{ + return [self CSVComponentsWithOptions:options delimiter:COMMA]; +} + +- (NSArray *)CSVComponentsWithOptions:(CHCSVParserOptions)options delimiter:(unichar)delimiter { + _CHCSVAggregator *aggregator = [[_CHCSVAggregator alloc] init]; + CHCSVParser *parser = [[CHCSVParser alloc] initWithCSVString:self delimiter:delimiter]; + [parser setDelegate:aggregator]; + + [parser setRecognizesBackslashesAsEscapes:!!(options & CHCSVParserOptionsRecognizesBackslashesAsEscapes)]; + [parser setSanitizesFields:!!(options & CHCSVParserOptionsSanitizesFields)]; + [parser setRecognizesComments:!!(options & CHCSVParserOptionsRecognizesComments)]; + [parser setStripsLeadingAndTrailingWhitespace:!!(options & CHCSVParserOptionsStripsLeadingAndTrailingWhitespace)]; + + [parser parse]; + CHCSV_RELEASE(parser); + + NSArray *final = CHCSV_AUTORELEASE(CHCSV_RETAIN([aggregator lines])); + CHCSV_RELEASE(aggregator); + + return final; +} + +@end diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt-Info.plist b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt-Info.plist index b475ff5..ab7e5bd 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt-Info.plist +++ b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt-Info.plist @@ -9,7 +9,7 @@ CFBundleIconFile CFBundleIdentifier - com.opendns.osx.${PRODUCT_NAME:rfc1034identifier} + com.github.dnscrypt-osxclient.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -17,13 +17,13 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 0.21 + 1.0 CFBundleSignature ???? CFBundleVersion - 0.21 + 1.0 NSHumanReadableCopyright - Copyright © 2011-2014 OpenDNS Inc. All rights reserved. + BSD NSMainNibFile DNSCrypt NSPrefPaneIconFile diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h index c426c2f..270b880 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h +++ b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h @@ -1,15 +1,9 @@ -// -// DNSCrypt.h -// DNSCrypt -// -// Created by OpenDNS, Inc. on 8/11/11. -// Copyright (c) 2011 OpenDNS, Inc. All rights reserved. -// #import #import +#import "CHCSVParser/CHCSVParser.h" -#define kDNSCRYPT_PACKAGE_VERSION @"0.21" +#define kDNSCRYPT_PACKAGE_VERSION @"1.0" #define kDNSCRYPT_PREFPANE_APP_PATH @"/Library/PreferencePanes/DNSCrypt.prefPane" #define kDNSCRYPT_USR_BASE_DIR kDNSCRYPT_PREFPANE_APP_PATH @"/Contents/Resources/usr" @@ -23,16 +17,16 @@ #define kDNSCRYPT_BLACKLIST_DOMAINS_TMP_FILE kDNSCRYPT_CONTROL_DIR @"/blacklist-domains.tmp" #define kDNSCRYPT_EXCEPTIONS_TMP_FILE kDNSCRYPT_CONTROL_DIR @"/exceptions.tmp" -#define kOPENDNS_URL @"https://www.opendns.com/welcome/" +#define kBUNDLE_IDENTIFIER @"com.github.dnscrypt-osxclient.DNSCrypt" -#define kBUNDLE_IDENTIFIER @"com.opendns.osx.DNSCrypt" +#define kRESOLVERS_LIST_FILE @"/usr/local/share/dnscrypt-proxy/dnscrypt-resolvers.csv" #define kREFRESH_DELAY 2.0 #define kCHECKBOXES_AFTER_CHANGE_DELAY 8.0 #define kMAX_TRIES_AFTER_CHANGE (30 / kREFRESH_DELAY) typedef enum { - kDNS_CONFIGURATION_UNKNOWN, kDNS_CONFIGURATION_VANILLA, kDNS_CONFIGURATION_LOCALHOST, kDNS_CONFIGURATION_OPENDNS + kDNS_CONFIGURATION_UNKNOWN, kDNS_CONFIGURATION_VANILLA, kDNS_CONFIGURATION_LOCALHOST } DNSConfigurationState; @interface DNSCrypt : NSPreferencePane { @@ -43,14 +37,11 @@ typedef enum { NSTabViewItem *_releaseNotesTabViewItem; NSButton *_dnscryptButton; - NSButton *_opendnsButton; - NSButton *_familyShieldButton; NSButton *_fallbackButton; NSTextField *_currentResolverTextField; NSImageView *_statusImageView; NSTextField *_statusText; - WebView *_previewNotesWebView; WebView *_releaseNotesWebView; WebView *_aboutWebView; NSTextFieldCell *_staticResolversTextField; @@ -60,20 +51,18 @@ typedef enum { WebView *_helpWebView; NSButton *_viewLogButton; NSButton *_queryLoggingButton; + NSPopUpButton *_resolverNamesButton; } @property (nonatomic, strong) IBOutlet NSTabView *tabView; @property (nonatomic, strong) IBOutlet NSTabViewItem *aboutTabViewItem; @property (nonatomic, strong) IBOutlet NSTabViewItem *releaseNotesTabViewItem; @property (nonatomic, strong) IBOutlet NSButton *dnscryptButton; -@property (nonatomic, strong) IBOutlet NSButton *opendnsButton; -@property (nonatomic, strong) IBOutlet NSButton *familyShieldButton; @property (nonatomic, strong) IBOutlet NSButton *fallbackButton; @property (nonatomic, strong) IBOutlet NSTextField *currentResolverTextField; @property (nonatomic, strong) IBOutlet NSImageView *statusImageView; @property (nonatomic, strong) IBOutlet NSTextField *statusText; -@property (nonatomic, strong) IBOutlet WebView *previewNotesWebView; @property (nonatomic, strong) IBOutlet WebView *releaseNotesWebView; @property (nonatomic, strong) IBOutlet WebView *aboutWebView; @property (nonatomic, strong) IBOutlet NSTextFieldCell *staticResolversTextField; @@ -84,14 +73,19 @@ typedef enum { @property (nonatomic, strong) IBOutlet NSButton *viewLogButton; @property (nonatomic, strong) IBOutlet NSButton *queryLoggingButton; +@property (nonatomic, strong) IBOutlet NSPopUpButton *resolverNamesButton; +@property (nonatomic, strong) IBOutlet NSTextField *locationText; + +@property (nonatomic, strong) IBOutlet NSButton *providerLink; + +@property (nonatomic, strong) IBOutlet NSTextFieldCell *descriptionText; + - (void) mainViewDidLoad; - (IBAction)dnscryptButtonPressed:(NSButton *)sender; -- (IBAction)opendnsButtonPressed:(NSButton *)sender; -- (IBAction)familyShieldButtonPressed:(NSButton *)sender; - (IBAction)fallbackButtonPressed:(NSButton *)sender; -- (IBAction)openDNSLinkPushed:(NSButton *)sender; +- (IBAction)providerLinkPushed:(NSButton *)sender; - (IBAction)uninstallPushed:(NSButton *)sender; - (IBAction)staticResolversTextFieldChanged:(NSTextField *)sender; - (IBAction)queryLoggingButtonPressed:(NSButtonCell *)sender; @@ -100,5 +94,6 @@ typedef enum { - (IBAction)blacklistDomainsUpdated:(NSTextField *)sender; - (IBAction)exceptionsUpdated:(NSTextField *)sender; - (IBAction)helpButtonPressed:(NSButton *)sender; +- (IBAction)resolversNamesPopupButtonPressed:(NSPopUpButton *)sender; @end diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m index f893fff..abe9c22 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m +++ b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m @@ -1,10 +1,3 @@ -// -// DNSCrypt.m -// DNSCrypt -// -// Created by OpenDNS, Inc. on 8/11/11. -// Copyright (c) 2011 OpenDNS, Inc. All rights reserved. -// #import "DNSCrypt.h" @@ -12,7 +5,6 @@ @synthesize tabView = _tabView; @synthesize aboutTabViewItem = _aboutTabViewItem; @synthesize releaseNotesTabViewItem = _releaseNotesTabViewItem; -@synthesize previewNotesWebView = _previewNotesWebView; @synthesize releaseNotesWebView = _releaseNotesWebView; @synthesize aboutWebView = _aboutWebView; @synthesize staticResolversTextField = _staticResolversTextField; @@ -23,20 +15,18 @@ @synthesize queryLoggingButton = _queryLoggingButton; @synthesize exceptionsTextField = _exceptionsTextField; @synthesize dnscryptButton = _dnscryptButton; -@synthesize opendnsButton = _opendnsButton; @synthesize fallbackButton = _fallbackButton; -@synthesize familyShieldButton = _familyShieldButton; @synthesize statusImageView = _statusImageView; @synthesize statusText = _statusText; @synthesize currentResolverTextField = _currentResolverTextField; +@synthesize resolverNamesButton = _resolverNamesButton; DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; +NSArray *resolversList; - (void) setCheckBoxesEnabled: (BOOL) enabled { [_dnscryptButton setEnabled: enabled]; - [_opendnsButton setEnabled: enabled]; - [_familyShieldButton setEnabled: enabled]; [_fallbackButton setEnabled: enabled]; } @@ -64,22 +54,12 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; NSString *res; _dnscryptButton.state = 0; - _familyShieldButton.state = 0; - _opendnsButton.state = 0; _fallbackButton.state = 0; res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-status.sh", nil]]; if ([res isEqualToString: @"yes"]) { [_dnscryptButton setState: 1]; } - res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-familyshield-status.sh", nil]]; - if ([res isEqualToString: @"yes"]) { - [_familyShieldButton setState: 1]; - } - res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-insecure-opendns-status.sh", nil]]; - if ([res isEqualToString: @"yes"]) { - [_opendnsButton setState: 1]; - } res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-fallback-status.sh", nil]]; if ([res isEqualToString: @"yes"]) { [_fallbackButton setState: 1]; @@ -103,26 +83,43 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; if (fileContent != nil) { [_exceptionsTextField setStringValue: fileContent]; } + + [_resolverNamesButton removeAllItems]; + + resolversList = [NSArray arrayWithContentsOfCSVFile: kRESOLVERS_LIST_FILE options:CHCSVParserOptionsSanitizesFields | CHCSVParserOptionsStripsLeadingAndTrailingWhitespace]; + NSUInteger rows_count = [resolversList count]; + NSUInteger i; + [_resolverNamesButton addItemWithTitle: NSLocalizedString(@"Please select a resolver", @"A resolver hasn't been selected yet")]; + res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-resolver-name.sh", nil]]; + for (i = 1U; i < rows_count; i++) { + NSArray *row = [resolversList objectAtIndex: i]; + NSString *name; + if (row.count < 4) { + continue; + } + name = [row objectAtIndex: 1]; + [_resolverNamesButton addItemWithTitle: name]; + if ([[row objectAtIndex: 0] isEqualToString: res]) { + [_resolverNamesButton selectItemAtIndex: i]; + [self updateResolverInfo: row]; + } + } } - (void) updateLedStatus { - NSBundle *bundle = [NSBundle bundleWithIdentifier: @"com.opendns.osx.DNSCrypt"]; + NSBundle *bundle = [NSBundle bundleWithIdentifier: @"com.github.dnscrypt-osxclient.DNSCrypt"]; switch (currentState) { case kDNS_CONFIGURATION_UNKNOWN: - _statusText.stringValue = NSLocalizedString(@"No network", @"Status"); + _statusText.stringValue = NSLocalizedString(@"Standby", @"Status"); _statusImageView.image = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"shield_red.png"]]; break; case kDNS_CONFIGURATION_VANILLA: - _statusText.stringValue = NSLocalizedString(@"Unprotected", @"Status"); + _statusText.stringValue = NSLocalizedString(@"Not using DNSCrypt", @"Status"); _statusImageView.image = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"shield_red.png"]]; break; - case kDNS_CONFIGURATION_OPENDNS: - _statusText.stringValue = NSLocalizedString(@"Unencrypted", @"Status"); - _statusImageView.image = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"shield_yellow.png"]]; - break; case kDNS_CONFIGURATION_LOCALHOST: - _statusText.stringValue = NSLocalizedString(@"Protected", @"Status"); + _statusText.stringValue = NSLocalizedString(@"Using DNSCrypt", @"Status"); _statusImageView.image = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"shield_green.png"]]; break; default: @@ -133,17 +130,12 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; - (BOOL) updateStatusWithCurrentConfig { NSString *stateDescription = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./get-current-resolvers.sh | ./get-resolvers-description.sh", nil]]; - if ([stateDescription isEqualToString: @"FamilyShield"]) { - currentState = kDNS_CONFIGURATION_OPENDNS; - } else if ([stateDescription isEqualToString: @"DNSCrypt"]) { + if ([stateDescription isEqualToString: @"DNSCrypt"]) { currentState = kDNS_CONFIGURATION_LOCALHOST; - } else if ([stateDescription isEqualToString: @"OpenDNS"]) { - currentState = kDNS_CONFIGURATION_OPENDNS; - } else if ([stateDescription isEqualToString: @"OpenDNS IPv6"]) { - currentState = kDNS_CONFIGURATION_OPENDNS; } else if ([stateDescription isEqualToString: @"None"]) { currentState = kDNS_CONFIGURATION_UNKNOWN; } else if ([stateDescription isEqualToString: @"Updating"]) { + currentState = kDNS_CONFIGURATION_UNKNOWN; } else if (stateDescription.length > 0) { currentState = kDNS_CONFIGURATION_VANILLA; } @@ -196,34 +188,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; return TRUE; } -- (BOOL) setFamilyShieldOn { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-on.sh", nil]]; - (void) res; - return TRUE; -} - -- (BOOL) setFamilyShieldOff { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-off.sh", nil]]; - (void) res; - return TRUE; -} - -- (BOOL) setInsecureOpenDNSOn { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-on.sh", nil]]; - (void) res; - return TRUE; -} - -- (BOOL) setInsecureOpenDNSOff { - [self showSpinners]; - NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-off.sh", nil]]; - (void) res; - return TRUE; -} - - (BOOL) setFallbackOn { [self showSpinners]; NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-on.sh", nil]]; @@ -247,24 +211,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; } } -- (IBAction)opendnsButtonPressed:(NSButton *)sender -{ - if (sender.state != 0) { - [self setInsecureOpenDNSOn]; - } else { - [self setInsecureOpenDNSOff]; - } -} - -- (IBAction)familyShieldButtonPressed:(NSButton *)sender -{ - if (sender.state != 0) { - [self setFamilyShieldOn]; - } else { - [self setFamilyShieldOff]; - } -} - - (IBAction)fallbackButtonPressed:(NSButton *)sender { if (sender.state != 0) { @@ -289,30 +235,38 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; [self performSelector: @selector(waitForUpdate) withObject: self afterDelay:kREFRESH_DELAY]; } +- (void) updateResolverInfo: (NSArray *) row { + NSString *location = [row objectAtIndex: 3]; + _locationText.stringValue = location; + NSString *url = [row objectAtIndex: 5]; + if (![url isEqualToString: @""]) { + _providerLink.title = url; + _providerLink.hidden = false; + } else { + _providerLink.hidden = true; + } + NSString *description = [row objectAtIndex: 2]; + _descriptionText.stringValue = description; +} + +- (IBAction)resolversNamesPopupButtonPressed:(NSPopUpButton *)sender { + NSUInteger i = [sender indexOfSelectedItem]; + if (i <= 0U || i >= resolversList.count) { + return; + } + NSArray *row = [resolversList objectAtIndex: i]; + [self updateResolverInfo: row]; + setenv("RESOLVER_NAME", [[row objectAtIndex: 0] UTF8String], 1); + [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./set-dnscrypt-resolver-name.sh \"$RESOLVER_NAME\"", nil]]; +} + - (void) mainViewDidLoad { currentState = kDNS_CONFIGURATION_UNKNOWN; - [_previewNotesWebView setDrawsBackground:false]; [self initState]; [self periodicallyUpdateStatusWithCurrentConfig]; - NSString *version = kDNSCRYPT_PACKAGE_VERSION; - NSString *softwareBlurbFormat = NSLocalizedString(@"This software (v: %@) encrypts and authenticates DNS packets between your computer and OpenDNS. This prevents man-in-the-middle attacks and snooping of DNS traffic by ISPs or others.", @"Description of what the package does - %@ is replaced by the version number"); - NSString *describePorts = NSLocalizedString(@"DNSCrypt can use UDP and TCP ports 53 and 443.", @"Describe what ports DNSCrypt uses"); - NSString *describeFallback = NSLocalizedString(@"If you prefer reliability over security, enable fallback to insecure DNS.", @"Describe what the 'fallback to insecure mode' checkbox does"); - - NSMutableString *htmlString = [NSMutableString stringWithString: @""]; - - [htmlString appendFormat: softwareBlurbFormat, version]; - [htmlString appendString: @"

"]; - [htmlString appendString: @"
    "]; - [htmlString appendFormat: @"
  • %@
  • ", describePorts]; - [htmlString appendFormat: @"
  • %@
  • ", describeFallback]; - [htmlString appendString: @"
"]; - [htmlString appendString: @""]; - [[_previewNotesWebView mainFrame] loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"file:///"]]; - SInt32 OSXversionMajor, OSXversionMinor; if (Gestalt(gestaltSystemVersionMajor, &OSXversionMajor) != noErr || Gestalt(gestaltSystemVersionMinor, &OSXversionMinor) != noErr || OSXversionMajor < 10 || OSXversionMinor < 6) { return; @@ -358,10 +312,10 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; return nil; } -- (IBAction)openDNSLinkPushed:(NSButton *)sender +- (IBAction)providerLinkPushed:(NSButton *)sender { (void) sender; - [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: kOPENDNS_URL]]; + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: sender.title]]; } - (IBAction)uninstallPushed:(NSButton *)sender { @@ -374,7 +328,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; staticResolvers = [[staticResolvers componentsSeparatedByCharactersInSet: charset] componentsJoinedByString: @" "]; sender.stringValue = staticResolvers; setenv("STATIC_RESOLVERS", [staticResolvers UTF8String], 1); - [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./set-static-resolvers.sh \"$STATIC_RESOLVERS\"", staticResolvers, nil]]; + [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./set-static-resolvers.sh \"$STATIC_RESOLVERS\"", nil]]; } - (BOOL) setQueryLoggingOn { diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/en.lproj/DNSCrypt.xib b/DNSCrypt-Preference-Pane/DNSCrypt/en.lproj/DNSCrypt.xib index e81155a..ba15215 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/en.lproj/DNSCrypt.xib +++ b/DNSCrypt-Preference-Pane/DNSCrypt/en.lproj/DNSCrypt.xib @@ -1,9 +1,9 @@ - + - - + + @@ -14,16 +14,17 @@ + - - - + + + @@ -33,7 +34,7 @@ - + @@ -54,7 +55,7 @@ - - - - - - - @@ -179,6 +163,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -275,7 +287,7 @@ ads.* - + @@ -308,7 +320,7 @@ ads.* - + @@ -358,7 +370,9 @@ ads.* - + + +