Compare commits

...
40 Commits
Author SHA1 Message Date
Alter Step f2211060c5 Use semver 2014-04-21 22:50:22 -07:00
Alter Step fd282e098c Reflect the new property names in installation scripts. 2014-04-21 22:38:41 -07:00
Alter Step d4a583a688 over TCP/UDP 2014-04-21 22:38:29 -07:00
Alter Step 417f80be83 Support all resolvers 2014-04-21 21:59:39 -07:00
Frank Denis bdb6ba3cfe Merge pull request #25 from alterstep/master
Remove /usr/local/share/dnscrypt-proxy
2014-04-18 01:00:40 -07:00
Alter Step 969b9c3d19 Merge branch 'master' of github.com:opendns/dnscrypt-osx-client
* 'master' of github.com:opendns/dnscrypt-osx-client:
  libldns.1.dylib mode 755
2014-04-18 00:56:45 -07:00
Alter Step ca13e5fcfe Uninstall /usr/local/share/dnscrypt-proxy 2014-04-18 00:55:59 -07:00
Frank Denis b096f0b3af Merge pull request #24 from alterstep/master
libldns.1.dylib mode 755
2014-04-18 00:40:45 -07:00
Alter Step eb4ead7d44 libldns.1.dylib mode 755 2014-04-18 00:37:36 -07:00
Alter Step 7648ce4ca3 Merge branch 'master' of github.com:opendns/dnscrypt-osx-client
* 'master' of github.com:opendns/dnscrypt-osx-client:
  Port to Mavericks
2014-04-18 00:36:42 -07:00
Alter Step f5cb75a49b No GC ; Add libsodium 2014-04-18 00:35:55 -07:00
Frank Denis 8756439bf1 Merge pull request #23 from alterstep/master
Support Mavericks
2014-04-18 00:23:27 -07:00
Alter Step eb6c4eb7c2 Merge branch 'master' of github.com:opendns/dnscrypt-osx-client
* 'master' of github.com:opendns/dnscrypt-osx-client:
  2014
  2014
2014-04-18 00:19:55 -07:00
Alter Step 09df20a910 Port to Mavericks 2014-04-18 00:19:18 -07:00
Frank Denis c75c19bf5b 2014 2014-01-01 17:10:46 +01:00
Frank Denis 05c89d3c90 2014 2014-01-01 17:10:06 +01:00
Frank Denis 830396921d Merge branch 'master' of github.com:opendns/dnscrypt-osx-client
* 'master' of github.com:opendns/dnscrypt-osx-client:
  deflopt + gifsicle
2013-06-14 09:27:52 -07:00
Frank Denis 538faa5d23 Rename DNSCrypt-Menubar to DNSCrypt Menubar 2013-06-14 09:27:33 -07:00
Frank Denis 26b37115b8 Merge pull request #16 from neheb/master
smaller png files + smaller gif
2013-06-07 08:57:42 -07:00
Mangix d51a6b7069 deflopt + gifsicle 2013-06-07 07:19:33 -07:00
Frank Denis 80d0323adb Disable the OpenDNS Umbrella services if they happen to be running. 2013-06-03 22:28:33 -07:00
Frank Denis ab678ae786 Bump version to 0.21
Not that anything interesting happened to this code since 0.19, it's just that
changing the version is the only thing I was able to do when looking at this
code after so long.
2013-06-03 22:23:30 -07:00
Frank Denis f905fdff8f Add .l to the default list of exceptions 2013-06-03 21:46:33 -07:00
Frank Denis 289c5cae3f Update libldns, ship it as universal binary. 2013-05-23 13:58:11 -07:00
Frank Denis 0a4995dd8f Merge pull request #15 from neheb/master
Smaller PNG files
2013-05-20 10:11:38 -07:00
Mangix 169f19228a Smaller PNG files 2013-05-19 13:47:42 -07:00
Frank Denis 0fc99cc5be Update Sparkle URL 2013-04-12 08:27:26 +02:00
Frank Denis 631a56b662 Recompress images with zopfli 2013-03-09 19:13:16 -08:00
Frank Denis 7aa7c380a0 Regen about.html 2012-11-25 12:46:27 -08:00
Frank Denis 48e413d79e Make it clear that the "fallback to insecure" thing renders the whole thing
useless against active attacks, not dnscrypt itself.
2012-11-25 12:44:44 -08:00
Frank Denis 1f13d0822e Add a DISABLE_IPV6 knob to disable IPv6.
OpenDNS filtering doesn't work on IPv6, at least for people identified by
their IP address, so there should be a simple way, even if it's not directly
in the GUI, to use only IPv4.
2012-11-18 00:27:17 -08:00
Frank Denis a2daf52f1c Clearly explain why "fallback to insecure" is a terrible idea. 2012-11-16 22:55:57 -08:00
Frank Denis 198c622297 Update libldns 2012-11-03 12:51:37 -07:00
Frank Denis 8d488da1c3 Bump 2012-11-03 12:35:55 -07:00
Frank Denis 04d82b13ae Connect the fallback to insecure item from the Xib to the code, so that it
can actually be updated.
2012-11-03 12:31:48 -07:00
Frank Denis c9c87447f5 Build universal binaries
Suck up the fact that building 32-bit binaries requires explicitly defining
each properties like in the good 'ol days.
2012-11-03 12:28:04 -07:00
Frank Denis 76e6cda0ff Update libldns to 1.6.14-final. 2012-10-23 14:33:44 -07:00
Frank Denis 532d993530 Add some tooltips 2012-10-13 23:49:26 -07:00
Frank Denis bc88036a5e Use [NSImage imageNamed:] for the menu bar icons, so that retina icons
(provided that we have some) can be displayed.
2012-10-13 11:29:31 -07:00
Frank Denis 313c634690 Don't combine hi-dpi images 2012-10-13 11:27:01 -07:00
221 changed files with 1897 additions and 4617 deletions
+2 -1
View File
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2011 OpenDNS, Inc.
* 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
@@ -7,20 +7,18 @@
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,20 +28,20 @@
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 = "<group>"; };
0906D82B14B4D9AC0093FA7D /* no-opendns.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "no-opendns.png"; sourceTree = "<group>"; };
0906D82C14B4D9AC0093FA7D /* yes-opendns-no-crypt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "yes-opendns-no-crypt.png"; sourceTree = "<group>"; };
0906D82D14B4D9AC0093FA7D /* yes-opendns-yes-crypt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "yes-opendns-yes-crypt.png"; sourceTree = "<group>"; };
09651147147D832D007FEE31 /* dnscrypt.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = dnscrypt.icns; path = ../dnscrypt.icns; sourceTree = "<group>"; };
096AEEF91468A11E009F2AA4 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = "<group>"; };
09A13ACD145F3B9000B227A4 /* DNSCrypt-Menubar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "DNSCrypt-Menubar.app"; sourceTree = BUILT_PRODUCTS_DIR; };
098E72581905DF4C00C8CC6E /* icon-dnscrypt-active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-dnscrypt-active.png"; sourceTree = "<group>"; };
098E725A1905DF4C00C8CC6E /* icon-dnscrypt-inactive.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-dnscrypt-inactive.png"; sourceTree = "<group>"; };
098E725C1905DF4C00C8CC6E /* icon-no-network.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-no-network.png"; sourceTree = "<group>"; };
098E72641905E1A700C8CC6E /* icon-dnscrypt-active@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-dnscrypt-active@2x.png"; sourceTree = "<group>"; };
098E72651905E1A700C8CC6E /* icon-dnscrypt-inactive@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-dnscrypt-inactive@2x.png"; sourceTree = "<group>"; };
098E72661905E1A700C8CC6E /* icon-no-network@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-no-network@2x.png"; sourceTree = "<group>"; };
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; };
09A13AD5145F3B9000B227A4 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
@@ -52,11 +50,9 @@
09A13ADB145F3B9000B227A4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
09A13ADD145F3B9000B227A4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
09A13ADF145F3B9000B227A4 /* DNSCrypt-Menubar-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DNSCrypt-Menubar-Prefix.pch"; sourceTree = "<group>"; };
09A13AE1145F3B9000B227A4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
09A13AE3145F3B9000B227A4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
09A13AE4145F3B9000B227A4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
09A13AE7145F3B9000B227A4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; };
09F4DDA816019D0D002C4E04 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -65,7 +61,6 @@
buildActionMask = 2147483647;
files = (
09A13AD2145F3B9000B227A4 /* Cocoa.framework in Frameworks */,
09F4DDA916019D0D002C4E04 /* Sparkle.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -84,7 +79,7 @@
09A13ACE145F3B9000B227A4 /* Products */ = {
isa = PBXGroup;
children = (
09A13ACD145F3B9000B227A4 /* DNSCrypt-Menubar.app */,
09A13ACD145F3B9000B227A4 /* DNSCrypt Menubar.app */,
);
name = Products;
sourceTree = "<group>";
@@ -92,7 +87,6 @@
09A13AD0145F3B9000B227A4 /* Frameworks */ = {
isa = PBXGroup;
children = (
09F4DDA816019D0D002C4E04 /* Sparkle.framework */,
09A13AD1145F3B9000B227A4 /* Cocoa.framework */,
09A13AD3145F3B9000B227A4 /* Other Frameworks */,
);
@@ -128,12 +122,12 @@
09A13ADA145F3B9000B227A4 /* InfoPlist.strings */,
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 = "<group>";
@@ -156,7 +150,7 @@
);
name = "DNSCrypt-Menubar";
productName = "DNSCrypt-Menubar";
productReference = 09A13ACD145F3B9000B227A4 /* DNSCrypt-Menubar.app */;
productReference = 09A13ACD145F3B9000B227A4 /* DNSCrypt Menubar.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@@ -165,7 +159,7 @@
09A13AC4145F3B9000B227A4 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0450;
LastUpgradeCheck = 0460;
};
buildConfigurationList = 09A13AC7145F3B9000B227A4 /* Build configuration list for PBXProject "DNSCrypt-Menubar" */;
compatibilityVersion = "Xcode 3.2";
@@ -189,15 +183,15 @@
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;
};
@@ -224,14 +218,6 @@
name = InfoPlist.strings;
sourceTree = "<group>";
};
09A13AE0145F3B9000B227A4 /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
09A13AE1145F3B9000B227A4 /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
09A13AE6145F3B9000B227A4 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
@@ -247,8 +233,11 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
CLANG_ENABLE_OBJC_ARC = NO;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
@@ -263,6 +252,7 @@
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
ONLY_ACTIVE_ARCH = YES;
@@ -274,8 +264,11 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
CLANG_ENABLE_OBJC_ARC = NO;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -284,6 +277,7 @@
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
SDKROOT = macosx;
@@ -302,7 +296,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "DNSCrypt-Menubar/DNSCrypt-Menubar-Prefix.pch";
INFOPLIST_FILE = "DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
PRODUCT_NAME = "DNSCrypt Menubar";
WRAPPER_EXTENSION = app;
};
name = Debug;
@@ -319,7 +313,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "DNSCrypt-Menubar/DNSCrypt-Menubar-Prefix.pch";
INFOPLIST_FILE = "DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
PRODUCT_NAME = "DNSCrypt Menubar";
WRAPPER_EXTENSION = app;
};
name = Release;
+14 -21
View File
@@ -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 <Cocoa/Cocoa.h>
@@ -14,32 +7,32 @@
#define kDNSCRYPT_VAR_BASE_DIR @"/Library/Application Support/DNSCrypt"
#define kDNSCRYPT_CONTROL_DIR kDNSCRYPT_VAR_BASE_DIR @"/control"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
@property (strong) IBOutlet NSMenu *dnscryptMenu;
@property (strong) NSStatusItem *statusItem;
@property (strong) IBOutlet NSMenuItem *versionMenuItem;
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *_window;
NSMenu *_dnscryptMenu;
NSStatusItem *_statusItem;
NSMenuItem *_versionMenuItem;
NSMenuItem *_statusResolversMenuItem;
NSMenuItem *_dnscryptMenuItem;
}
#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;
@property (strong) NSStatusItem *statusItem;
@property (assign) NSWindow *window;
@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
+6 -124
View File
@@ -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
@@ -97,47 +67,36 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
- (void) updateLedStatus
{
NSBundle *bundle = [NSBundle mainBundle];
NSImage *led = nil;
switch (currentState) {
case kDNS_CONFIGURATION_OPENDNS:
led = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"yes-opendns-no-crypt.png"]];
break;
case kDNS_CONFIGURATION_LOCALHOST:
led = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"yes-opendns-yes-crypt.png"]];
led = [NSImage imageNamed: @"icon-dnscrypt-active"];
break;
case kDNS_CONFIGURATION_VANILLA:
led = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"no-opendns.png"]];
led = [NSImage imageNamed: @"icon-dnscrypt-inactive"];
break;
default:
led = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"no-network.png"]];
led = [NSImage imageNamed: @"icon-no-network"];
}
_statusItem.image = led;
[led release];
}
- (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]];
@@ -174,10 +133,8 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
{
[self setCheckBoxesEnabled: FALSE];
NSBundle *bundle = [NSBundle mainBundle];
NSImage *led = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"no-network.png"]];
NSImage *led = [NSImage imageNamed: @"icon-no-network"];
_statusItem.image = led;
[led release];
[self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-push-conf-change.sh prefpane", nil]];
@@ -206,7 +163,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[SUUpdater sharedUpdater] setSendsSystemProfile: TRUE];
}
- (IBAction)preferencesMenuItemPushed:(NSMenuItem *)sender
@@ -235,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
{
@@ -288,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
@@ -9,7 +9,7 @@
<key>CFBundleIconFile</key>
<string>dnscrypt.icns</string>
<key>CFBundleIdentifier</key>
<string>com.opendns.osx.${PRODUCT_NAME:rfc1034identifier}</string>
<string>com.github.dnscrypt-osxclient.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@@ -17,11 +17,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.19 (beta)</string>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.19</string>
<string>1.0.0</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
@@ -29,14 +29,10 @@
<key>LSUIElement</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2012 OpenDNS, Inc. All rights reserved.</string>
<string>BSD</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>SUFeedURL</key>
<string>http://opendns.github.com/dnscrypt-osx-client/updates/osx/sparkle-updates.xml</string>
<key>SUPublicDSAKeyFile</key>
<string>dsa_pub.pem</string>
</dict>
</plist>
@@ -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-----
@@ -1,30 +0,0 @@
{\rtf1\ansi\ansicpg65001\cocoartf1138\cocoasubrtf230
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\vieww9600\viewh8400\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 Engineering:
\b0 \
Some people\
\
\b Human Interface Design:
\b0 \
Some other people\
\
\b Testing:
\b0 \
Hopefully not nobody\
\
\b Documentation:
\b0 \
Whoever\
\
\b With special thanks to:
\b0 \
Mom\
}
@@ -1,660 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1080</int>
<string key="IBDocument.SystemVersion">12A269</string>
<string key="IBDocument.InterfaceBuilderVersion">2818</string>
<string key="IBDocument.AppKitVersion">1187</string>
<string key="IBDocument.HIToolboxVersion">624.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2818</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSCustomObject</string>
<string>NSMenu</string>
<string>NSMenuItem</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
<object class="NSCustomObject" id="1021">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSCustomObject" id="1014">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1050">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSCustomObject" id="976324537">
<string key="NSClassName">AppDelegate</string>
</object>
<object class="NSMenu" id="705716806">
<string key="NSTitle"/>
<array class="NSMutableArray" key="NSMenuItems">
<object class="NSMenuItem" id="1061864523">
<reference key="NSMenu" ref="705716806"/>
<string key="NSTitle">Enable DNSCrypt</string>
<string key="NSKeyEquiv">e</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<object class="NSCustomResource" key="NSOnImage" id="720710128">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="1029721002">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
</object>
<object class="NSMenuItem" id="512564254">
<reference key="NSMenu" ref="705716806"/>
<string key="NSTitle">Fallback to insecure</string>
<string key="NSKeyEquiv">x</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="947483772">
<reference key="NSMenu" ref="705716806"/>
<string key="NSTitle">Always use FamilyShield</string>
<string key="NSKeyEquiv">f</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="31983378">
<reference key="NSMenu" ref="705716806"/>
<string key="NSTitle">Always use OpenDNS</string>
<string key="NSKeyEquiv">o</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="392357407">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="721984748">
<reference key="NSMenu" ref="705716806"/>
<string key="NSTitle">DNSCrypt Preferences</string>
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="669888296">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="1019451222">
<reference key="NSMenu" ref="705716806"/>
<string key="NSTitle">Check for updates</string>
<string key="NSKeyEquiv">u</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="580228755">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="472006404">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="512706455">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="346126718">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<string key="NSTitle">Current configuration:</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="344915292">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<int key="NSIndent">1</int>
<string key="NSTitle">...</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="1037964463">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="431757742">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<string key="NSTitle">Current resolvers:</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="544242747">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<int key="NSIndent">1</int>
<string key="NSTitle">...</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="235572958">
<reference key="NSMenu" ref="705716806"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
<object class="NSMenuItem" id="379851885">
<reference key="NSMenu" ref="705716806"/>
<string key="NSTitle">Hide from the menu bar</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="720710128"/>
<reference key="NSMixedImage" ref="1029721002"/>
</object>
</array>
</object>
<object class="NSCustomObject" id="757349031">
<string key="NSClassName">SUUpdater</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="1021"/>
<reference key="destination" ref="976324537"/>
</object>
<int key="connectionID">495</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">terminate:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="379851885"/>
</object>
<int key="connectionID">560</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">dnscryptMenu</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="705716806"/>
</object>
<int key="connectionID">543</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">statusConfigurationMenuItem</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="344915292"/>
</object>
<int key="connectionID">551</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">statusResolversMenuItem</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="544242747"/>
</object>
<int key="connectionID">552</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">versionMenuItem</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="472006404"/>
</object>
<int key="connectionID">568</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">preferencesMenuItemPushed:</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="721984748"/>
</object>
<int key="connectionID">571</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">familyShieldMenuItem</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="947483772"/>
</object>
<int key="connectionID">577</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">dnscryptMenuItem</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="1061864523"/>
</object>
<int key="connectionID">578</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">dnscryptMenuItemPushed:</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="1061864523"/>
</object>
<int key="connectionID">580</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">familyShieldMenuItemPushed:</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="947483772"/>
</object>
<int key="connectionID">581</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">fallbackMenuItemPushed:</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="512564254"/>
</object>
<int key="connectionID">584</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">opendnsMenuItem</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="31983378"/>
</object>
<int key="connectionID">587</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">opendnsMenuItemPushed:</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="31983378"/>
</object>
<int key="connectionID">588</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">checkForUpdates:</string>
<reference key="source" ref="757349031"/>
<reference key="destination" ref="1019451222"/>
</object>
<int key="connectionID">563</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1048"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1021"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1014"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1050"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">494</int>
<reference key="object" ref="976324537"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">539</int>
<reference key="object" ref="705716806"/>
<array class="NSMutableArray" key="children">
<reference ref="346126718"/>
<reference ref="344915292"/>
<reference ref="431757742"/>
<reference ref="544242747"/>
<reference ref="1037964463"/>
<reference ref="235572958"/>
<reference ref="1061864523"/>
<reference ref="379851885"/>
<reference ref="1019451222"/>
<reference ref="669888296"/>
<reference ref="580228755"/>
<reference ref="472006404"/>
<reference ref="512706455"/>
<reference ref="721984748"/>
<reference ref="947483772"/>
<reference ref="31983378"/>
<reference ref="392357407"/>
<reference ref="512564254"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">540</int>
<reference key="object" ref="346126718"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">541</int>
<reference key="object" ref="344915292"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">542</int>
<reference key="object" ref="1061864523"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">549</int>
<reference key="object" ref="431757742"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">550</int>
<reference key="object" ref="544242747"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">553</int>
<reference key="object" ref="1037964463"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">554</int>
<reference key="object" ref="235572958"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">557</int>
<reference key="object" ref="669888296"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">558</int>
<reference key="object" ref="379851885"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">561</int>
<reference key="object" ref="757349031"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">562</int>
<reference key="object" ref="1019451222"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">564</int>
<reference key="object" ref="580228755"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">565</int>
<reference key="object" ref="472006404"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">566</int>
<reference key="object" ref="512706455"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">570</int>
<reference key="object" ref="721984748"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">572</int>
<reference key="object" ref="947483772"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">574</int>
<reference key="object" ref="31983378"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">576</int>
<reference key="object" ref="392357407"/>
<reference key="parent" ref="705716806"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">583</int>
<reference key="object" ref="512564254"/>
<reference key="parent" ref="705716806"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="494.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="539.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="540.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="541.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="542.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="549.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="550.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="553.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="554.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="557.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="558.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="561.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="562.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="564.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="565.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="566.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="570.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="572.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="574.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="576.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="583.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">588</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">AppDelegate</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="dnscryptMenuItemPushed:">NSMenuItem</string>
<string key="fallbackMenuItemPushed:">NSMenuItem</string>
<string key="familyShieldMenuItemPushed:">NSMenuItem</string>
<string key="opendnsMenuItemPushed:">NSMenuItem</string>
<string key="preferencesMenuItemPushed:">NSMenuItem</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="dnscryptMenuItemPushed:">
<string key="name">dnscryptMenuItemPushed:</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBActionInfo" key="fallbackMenuItemPushed:">
<string key="name">fallbackMenuItemPushed:</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBActionInfo" key="familyShieldMenuItemPushed:">
<string key="name">familyShieldMenuItemPushed:</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBActionInfo" key="opendnsMenuItemPushed:">
<string key="name">opendnsMenuItemPushed:</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBActionInfo" key="preferencesMenuItemPushed:">
<string key="name">preferencesMenuItemPushed:</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="dnscryptMenu">NSMenu</string>
<string key="dnscryptMenuItem">NSMenuItem</string>
<string key="fallbackMenuItem">NSMenuItem</string>
<string key="familyShieldMenuItem">NSMenuItem</string>
<string key="opendnsMenuItem">NSMenuItem</string>
<string key="statusConfigurationMenuItem">NSMenuItem</string>
<string key="statusResolversMenuItem">NSMenuItem</string>
<string key="versionMenuItem">NSMenuItem</string>
<string key="window">NSWindow</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="dnscryptMenu">
<string key="name">dnscryptMenu</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo" key="dnscryptMenuItem">
<string key="name">dnscryptMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="fallbackMenuItem">
<string key="name">fallbackMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="familyShieldMenuItem">
<string key="name">familyShieldMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="opendnsMenuItem">
<string key="name">opendnsMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="statusConfigurationMenuItem">
<string key="name">statusConfigurationMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="statusResolversMenuItem">
<string key="name">statusResolversMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="versionMenuItem">
<string key="name">versionMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="window">
<string key="name">window</string>
<string key="candidateClassName">NSWindow</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/AppDelegate.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">SUUpdater</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">checkForUpdates:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">checkForUpdates:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">checkForUpdates:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">delegate</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">delegate</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">delegate</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/SUUpdater.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSMenuCheckmark">{11, 11}</string>
<string key="NSMenuMixedState">{10, 3}</string>
</dictionary>
</data>
</archive>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="5056" systemVersion="13D45a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment defaultVersion="1060" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="5056"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="494" id="495"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<customObject id="494" customClass="AppDelegate">
<connections>
<outlet property="dnscryptMenu" destination="539" id="543"/>
<outlet property="dnscryptMenuItem" destination="542" id="578"/>
<outlet property="statusResolversMenuItem" destination="550" id="552"/>
<outlet property="versionMenuItem" destination="565" id="568"/>
</connections>
</customObject>
<menu id="539">
<items>
<menuItem title="Enable DNSCrypt" keyEquivalent="e" id="542">
<connections>
<action selector="dnscryptMenuItemPushed:" target="494" id="580"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="576"/>
<menuItem title="DNSCrypt-OSXClient Preferences" keyEquivalent="," id="570">
<connections>
<action selector="preferencesMenuItemPushed:" target="494" id="571"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="564"/>
<menuItem enabled="NO" id="565">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="553"/>
<menuItem title="Current resolvers:" enabled="NO" id="549">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="..." enabled="NO" indentationLevel="1" id="550">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="554"/>
<menuItem title="Hide from the menu bar" keyEquivalent="h" id="558">
<connections>
<action selector="terminate:" target="-1" id="560"/>
</connections>
</menuItem>
</items>
</menu>
</objects>
</document>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 B

@@ -1 +0,0 @@
Versions/Current/Headers
@@ -1 +0,0 @@
Versions/Current/Resources
@@ -1 +0,0 @@
Versions/Current/Sparkle
@@ -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
@@ -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
@@ -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 <SUVersionComparison>)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 <SUVersionDisplay>)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
@@ -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 <Cocoa/Cocoa.h>
/*!
@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
@@ -1,27 +0,0 @@
//
// SUVersionDisplayProtocol.h
// EyeTV
//
// Created by Uli Kusterer on 08.12.09.
// Copyright 2009 Elgato Systems GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
/*!
@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
@@ -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 <Sparkle/SUUpdater.h>
#import <Sparkle/SUAppcast.h>
#import <Sparkle/SUAppcastItem.h>
#import <Sparkle/SUVersionComparisonProtocol.h>
#endif
@@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>12C50</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>Sparkle</string>
<key>CFBundleIdentifier</key>
<string>org.andymatuschak.Sparkle</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Sparkle</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.5 Beta (git)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>dee4ffa</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>4G144l</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>11E52</string>
<key>DTSDKName</key>
<string>macosx10.7</string>
<key>DTXcode</key>
<string>0450</string>
<key>DTXcodeBuild</key>
<string>4G144l</string>
</dict>
</plist>
@@ -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 (<http://www.daemonology.net/bsdiff/>:
/*-
* 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.
*/
@@ -1,182 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ADP2,1</key>
<string>Developer Transition Kit</string>
<key>iMac1,1</key>
<string>iMac G3 (Rev A-D)</string>
<key>iMac4,1</key>
<string>iMac (Core Duo)</string>
<key>iMac4,2</key>
<string>iMac for Education (17-inch, Core Duo)</string>
<key>iMac5,1</key>
<string>iMac (Core 2 Duo, 17 or 20 inch, SuperDrive)</string>
<key>iMac5,2</key>
<string>iMac (Core 2 Duo, 17 inch, Combo Drive)</string>
<key>iMac6,1</key>
<string>iMac (Core 2 Duo, 24 inch, SuperDrive)</string>
<key>iMac8,1</key>
<string>iMac (April 2008)</string>
<key>MacBook1,1</key>
<string>MacBook (Core Duo)</string>
<key>MacBook2,1</key>
<string>MacBook (Core 2 Duo)</string>
<key>MacBook4,1</key>
<string>MacBook (Core 2 Duo Feb 2008)</string>
<key>MacBookAir1,1</key>
<string>MacBook Air (January 2008)</string>
<key>MacBookAir2,1</key>
<string>MacBook Air (June 2009)</string>
<key>MacBookAir3,1</key>
<string>MacBook Air (October 2010)</string>
<key>MacBookPro1,1</key>
<string>MacBook Pro Core Duo (15-inch)</string>
<key>MacBookPro1,2</key>
<string>MacBook Pro Core Duo (17-inch)</string>
<key>MacBookPro2,1</key>
<string>MacBook Pro Core 2 Duo (17-inch)</string>
<key>MacBookPro2,2</key>
<string>MacBook Pro Core 2 Duo (15-inch)</string>
<key>MacBookPro3,1</key>
<string>MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo)</string>
<key>MacBookPro3,2</key>
<string>MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo)</string>
<key>MacBookPro4,1</key>
<string>MacBook Pro (Core 2 Duo Feb 2008)</string>
<key>Macmini1,1</key>
<string>Mac Mini (Core Solo/Duo)</string>
<key>MacPro1,1</key>
<string>Mac Pro (four-core)</string>
<key>MacPro2,1</key>
<string>Mac Pro (eight-core)</string>
<key>MacPro3,1</key>
<string>Mac Pro (January 2008 4- or 8- core &quot;Harpertown&quot;)</string>
<key>MacPro4,1</key>
<string>Mac Pro (March 2009)</string>
<key>MacPro5,1</key>
<string>Mac Pro (August 2010)</string>
<key>PowerBook1,1</key>
<string>PowerBook G3</string>
<key>PowerBook2,1</key>
<string>iBook G3</string>
<key>PowerBook2,2</key>
<string>iBook G3 (FireWire)</string>
<key>PowerBook2,3</key>
<string>iBook G3</string>
<key>PowerBook2,4</key>
<string>iBook G3</string>
<key>PowerBook3,1</key>
<string>PowerBook G3 (FireWire)</string>
<key>PowerBook3,2</key>
<string>PowerBook G4</string>
<key>PowerBook3,3</key>
<string>PowerBook G4 (Gigabit Ethernet)</string>
<key>PowerBook3,4</key>
<string>PowerBook G4 (DVI)</string>
<key>PowerBook3,5</key>
<string>PowerBook G4 (1GHz / 867MHz)</string>
<key>PowerBook4,1</key>
<string>iBook G3 (Dual USB, Late 2001)</string>
<key>PowerBook4,2</key>
<string>iBook G3 (16MB VRAM)</string>
<key>PowerBook4,3</key>
<string>iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003)</string>
<key>PowerBook5,1</key>
<string>PowerBook G4 (17 inch)</string>
<key>PowerBook5,2</key>
<string>PowerBook G4 (15 inch FW 800)</string>
<key>PowerBook5,3</key>
<string>PowerBook G4 (17-inch 1.33GHz)</string>
<key>PowerBook5,4</key>
<string>PowerBook G4 (15 inch 1.5/1.33GHz)</string>
<key>PowerBook5,5</key>
<string>PowerBook G4 (17-inch 1.5GHz)</string>
<key>PowerBook5,6</key>
<string>PowerBook G4 (15 inch 1.67GHz/1.5GHz)</string>
<key>PowerBook5,7</key>
<string>PowerBook G4 (17-inch 1.67GHz)</string>
<key>PowerBook5,8</key>
<string>PowerBook G4 (Double layer SD, 15 inch)</string>
<key>PowerBook5,9</key>
<string>PowerBook G4 (Double layer SD, 17 inch)</string>
<key>PowerBook6,1</key>
<string>PowerBook G4 (12 inch)</string>
<key>PowerBook6,2</key>
<string>PowerBook G4 (12 inch, DVI)</string>
<key>PowerBook6,3</key>
<string>iBook G4</string>
<key>PowerBook6,4</key>
<string>PowerBook G4 (12 inch 1.33GHz)</string>
<key>PowerBook6,5</key>
<string>iBook G4 (Early-Late 2004)</string>
<key>PowerBook6,7</key>
<string>iBook G4 (Mid 2005)</string>
<key>PowerBook6,8</key>
<string>PowerBook G4 (12 inch 1.5GHz)</string>
<key>PowerMac1,1</key>
<string>Power Macintosh G3 (Blue &amp; White)</string>
<key>PowerMac1,2</key>
<string>Power Macintosh G4 (PCI Graphics)</string>
<key>PowerMac10,1</key>
<string>Mac Mini G4</string>
<key>PowerMac10,2</key>
<string>Mac Mini (Late 2005)</string>
<key>PowerMac11,2</key>
<string>Power Macintosh G5 (Late 2005)</string>
<key>PowerMac12,1</key>
<string>iMac G5 (iSight)</string>
<key>PowerMac2,1</key>
<string>iMac G3 (Slot-loading CD-ROM)</string>
<key>PowerMac2,2</key>
<string>iMac G3 (Summer 2000)</string>
<key>PowerMac3,1</key>
<string>Power Macintosh G4 (AGP Graphics)</string>
<key>PowerMac3,2</key>
<string>Power Macintosh G4 (AGP Graphics)</string>
<key>PowerMac3,3</key>
<string>Power Macintosh G4 (Gigabit Ethernet)</string>
<key>PowerMac3,4</key>
<string>Power Macintosh G4 (Digital Audio)</string>
<key>PowerMac3,5</key>
<string>Power Macintosh G4 (Quick Silver)</string>
<key>PowerMac3,6</key>
<string>Power Macintosh G4 (Mirrored Drive Door)</string>
<key>PowerMac4,1</key>
<string>iMac G3 (Early/Summer 2001)</string>
<key>PowerMac4,2</key>
<string>iMac G4 (Flat Panel)</string>
<key>PowerMac4,4</key>
<string>eMac</string>
<key>PowerMac4,5</key>
<string>iMac G4 (17-inch Flat Panel)</string>
<key>PowerMac5,1</key>
<string>Power Macintosh G4 Cube</string>
<key>PowerMac6,1</key>
<string>iMac G4 (USB 2.0)</string>
<key>PowerMac6,3</key>
<string>iMac G4 (20-inch Flat Panel)</string>
<key>PowerMac6,4</key>
<string>eMac (USB 2.0, 2005)</string>
<key>PowerMac7,2</key>
<string>Power Macintosh G5</string>
<key>PowerMac7,3</key>
<string>Power Macintosh G5</string>
<key>PowerMac8,1</key>
<string>iMac G5</string>
<key>PowerMac8,2</key>
<string>iMac G5 (Ambient Light Sensor)</string>
<key>PowerMac9,1</key>
<string>Power Macintosh G5 (Late 2005)</string>
<key>RackMac1,1</key>
<string>Xserve G4</string>
<key>RackMac1,2</key>
<string>Xserve G4 (slot-loading, cluster node)</string>
<key>RackMac3,1</key>
<string>Xserve G5</string>
<key>Xserve1,1</key>
<string>Xserve (Intel Xeon)</string>
<key>Xserve2,1</key>
<string>Xserve (January 2008 quad-core)</string>
</dict>
</plist>
@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>12C50</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>finish_installation</string>
<key>CFBundleIconFile</key>
<string>Sparkle</string>
<key>CFBundleIdentifier</key>
<string>org.andymatuschak.sparkle.finish-installation</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>4G144l</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>11E52</string>
<key>DTSDKName</key>
<string>macosx10.7</string>
<key>DTXcode</key>
<string>0450</string>
<key>DTXcodeBuild</key>
<string>4G144l</string>
<key>LSBackgroundOnly</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>10.4</string>
<key>LSUIElement</key>
<string>1</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
@@ -1 +0,0 @@
fr.lproj

Some files were not shown because too many files have changed in this diff Show More