Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dcb209aa2c | ||
|
|
8475fe5287 | ||
|
|
9aa4fea0ed | ||
|
|
4ec53b807f | ||
|
|
33d17cdcd2 | ||
|
|
e3c16df9fc | ||
|
|
fcaae563c9 | ||
|
|
2a1aaa33b9 | ||
|
|
35277a3e08 | ||
|
|
0f8823d73d | ||
|
|
ed1c7d679c | ||
|
|
ebfc8e667a | ||
|
|
1ce77e1aee | ||
|
|
5d4ba56a8d | ||
|
|
b6e5cf0427 | ||
|
|
39a64fb476 | ||
|
|
e41fd947f0 | ||
|
|
11826e20ee | ||
|
|
7fca88fc2d | ||
|
|
4b53063514 | ||
|
|
edc601496f |
@@ -61,22 +61,18 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
_fallbackMenuItem.state = 0;
|
||||
|
||||
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-status.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[_dnscryptMenuItem setState: 1];
|
||||
}
|
||||
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-familyshield-status.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[_familyShieldMenuItem setState: 1];
|
||||
}
|
||||
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-insecure-opendns-status.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[_opendnsMenuItem setState: 1];
|
||||
}
|
||||
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-fallback-status.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[_fallbackMenuItem setState: 1];
|
||||
}
|
||||
@@ -99,22 +95,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
- (void) showSpinners
|
||||
{
|
||||
[self setCheckBoxesEnabled: FALSE];
|
||||
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
NSImage *led = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"no-network.png"]];
|
||||
_statusItem.image = led;
|
||||
[led release];
|
||||
|
||||
[self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-push-conf-change.sh prefpane", nil]];
|
||||
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(periodicallyUpdateStatusWithCurrentConfig) object: nil];
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(waitForUpdate) object: nil];
|
||||
[self performSelector: @selector(waitForUpdate) withObject: self afterDelay:kREFRESH_DELAY];
|
||||
}
|
||||
|
||||
- (void) updateLedStatus
|
||||
{
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
@@ -138,9 +118,8 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
}
|
||||
|
||||
- (BOOL) updateStatusWithCurrentConfig
|
||||
{
|
||||
{
|
||||
NSString *stateDescription = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./get-current-resolvers.sh | ./get-resolvers-description.sh", nil]];
|
||||
NSLog(@"%@", stateDescription);
|
||||
if ([stateDescription isEqualToString: @"FamilyShield"]) {
|
||||
currentState = kDNS_CONFIGURATION_OPENDNS;
|
||||
} else if ([stateDescription isEqualToString: @"DNSCrypt"]) {
|
||||
@@ -162,15 +141,20 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
_statusResolversMenuItem.title = currentResolvers;
|
||||
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-pop-conf-change.sh menubar", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[self initState];
|
||||
}
|
||||
[self setCheckBoxesEnabled: TRUE];
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (void) periodicallyUpdateStatusWithCurrentConfig {
|
||||
[self updateStatusWithCurrentConfig];
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(periodicallyUpdateStatusWithCurrentConfig) object: nil];
|
||||
[self performSelector: @selector(periodicallyUpdateStatusWithCurrentConfig) withObject:nil afterDelay: 5.0];
|
||||
}
|
||||
|
||||
- (void) waitForUpdate {
|
||||
NSString *res;
|
||||
static unsigned int tries;
|
||||
@@ -186,10 +170,20 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
[self performSelector: @selector(waitForUpdate) withObject: self afterDelay:kREFRESH_DELAY];
|
||||
}
|
||||
|
||||
- (void) periodicallyUpdateStatusWithCurrentConfig {
|
||||
[self updateStatusWithCurrentConfig];
|
||||
- (void) showSpinners
|
||||
{
|
||||
[self setCheckBoxesEnabled: FALSE];
|
||||
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
NSImage *led = [[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"no-network.png"]];
|
||||
_statusItem.image = led;
|
||||
[led release];
|
||||
|
||||
[self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-push-conf-change.sh prefpane", nil]];
|
||||
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(periodicallyUpdateStatusWithCurrentConfig) object: nil];
|
||||
[self performSelector: @selector(periodicallyUpdateStatusWithCurrentConfig) withObject:nil afterDelay: 5.0];
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(waitForUpdate) object: nil];
|
||||
[self performSelector: @selector(waitForUpdate) withObject: self afterDelay:kREFRESH_DELAY];
|
||||
}
|
||||
|
||||
- (void) awakeFromNib
|
||||
@@ -230,56 +224,56 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
- (BOOL) setDNSCryptOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-to-dnscrypt.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setDNSCryptOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-to-dhcp.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFamilyShieldOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-on.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFamilyShieldOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-off.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setInsecureOpenDNSOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-on.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setInsecureOpenDNSOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-off.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFallbackOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-on.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFallbackOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-off.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.12 (beta)</string>
|
||||
<string>0.13 (beta)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.12</string>
|
||||
<string>0.13</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
||||
@@ -1241,7 +1241,7 @@
|
||||
<key>USE_HFS+_COMPRESSION</key>
|
||||
<true/>
|
||||
<key>VERSION</key>
|
||||
<string>0.12</string>
|
||||
<string>0.13</string>
|
||||
</dict>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
@@ -1722,7 +1722,7 @@
|
||||
<key>AUTHENTICATION</key>
|
||||
<integer>1</integer>
|
||||
<key>CONCLUSION_ACTION</key>
|
||||
<integer>4</integer>
|
||||
<integer>2</integer>
|
||||
<key>IDENTIFIER</key>
|
||||
<string>com.opendns.osx.dnscryptClient.DNSCrypt-Menubar</string>
|
||||
<key>LOCATION</key>
|
||||
@@ -1734,7 +1734,7 @@
|
||||
<key>USE_HFS+_COMPRESSION</key>
|
||||
<true/>
|
||||
<key>VERSION</key>
|
||||
<string>0.12</string>
|
||||
<string>0.13</string>
|
||||
</dict>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
|
||||
VERSION='0.12'
|
||||
VERSION='0.13'
|
||||
|
||||
cd build || exit 1
|
||||
(
|
||||
|
||||
@@ -13,3 +13,8 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
The get-dhcp-resolvers.sh and check-network-change.sh scripts use code
|
||||
snippets from the dnssec-trigger project, by Wouter Wijngaards, NLnet
|
||||
Labs. (great and similar project, check it out:
|
||||
http://www.nlnetlabs.nl/projects/dnssec-trigger/)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
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 */; };
|
||||
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 */; };
|
||||
@@ -45,6 +46,7 @@
|
||||
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 = "<group>"; };
|
||||
09A13ABB145F2D8700B227A4 /* ajax-loader.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "ajax-loader.gif"; sourceTree = "<group>"; };
|
||||
09AD019F15D2483500638DCE /* html */ = {isa = PBXFileReference; lastKnownFileType = folder; name = html; path = extra/html; sourceTree = "<group>"; };
|
||||
09FB094315C9DE6400B8AAB6 /* usr */ = {isa = PBXFileReference; lastKnownFileType = folder; name = usr; path = extra/usr; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
@@ -119,6 +121,7 @@
|
||||
0946B0D713F47F53008277C6 /* DNSCrypt.tiff */,
|
||||
4B89D982147CA39200872F60 /* dnscrypt_256.png */,
|
||||
0946B0D913F47F53008277C6 /* DNSCrypt.xib */,
|
||||
09AD019F15D2483500638DCE /* html */,
|
||||
09FB094315C9DE6400B8AAB6 /* usr */,
|
||||
0946B0CE13F47F53008277C6 /* Supporting Files */,
|
||||
);
|
||||
@@ -226,6 +229,7 @@
|
||||
09A13ABC145F2D8700B227A4 /* ajax-loader.gif in Resources */,
|
||||
4B89D983147CA39200872F60 /* dnscrypt_256.png in Resources */,
|
||||
09FB094415C9DE6400B8AAB6 /* usr in Resources */,
|
||||
09AD01A015D2483500638DCE /* html in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -277,7 +281,7 @@
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
@@ -306,7 +310,7 @@
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.12</string>
|
||||
<string>0.13</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.12</string>
|
||||
<string>0.13</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2011-2012 OpenDNS Inc. All rights reserved.</string>
|
||||
<key>NSMainNibFile</key>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#import <PreferencePanes/PreferencePanes.h>
|
||||
#import <WebKit/WebKit.h>
|
||||
|
||||
#define kDNSCRYPT_PACKAGE_VERSION @"0.12"
|
||||
#define kDNSCRYPT_PACKAGE_VERSION @"0.13"
|
||||
|
||||
#define kDNSCRYPT_PREFPANE_APP_PATH @"/Library/PreferencePanes/DNSCrypt.prefPane"
|
||||
#define kDNSCRYPT_USR_BASE_DIR kDNSCRYPT_PREFPANE_APP_PATH @"/Contents/Resources/usr"
|
||||
@@ -32,19 +32,22 @@ typedef enum {
|
||||
@interface DNSCrypt : NSPreferencePane {
|
||||
AuthorizationRef auth;
|
||||
}
|
||||
@property (assign) IBOutlet NSTabView *tabView;
|
||||
@property (assign) IBOutlet NSTabViewItem *aboutTabViewItem;
|
||||
@property (assign) IBOutlet NSTabViewItem *releaseNotesTabViewItem;
|
||||
|
||||
@property (weak) IBOutlet NSButton *dnscryptButton;
|
||||
@property (weak) IBOutlet NSButton *opendnsButton;
|
||||
@property (weak) IBOutlet NSButton *familyShieldButton;
|
||||
@property (weak) IBOutlet NSButton *fallbackButton;
|
||||
@property (strong) IBOutlet NSButton *dnscryptButton;
|
||||
@property (strong) IBOutlet NSButton *opendnsButton;
|
||||
@property (strong) IBOutlet NSButton *familyShieldButton;
|
||||
@property (strong) IBOutlet NSButton *fallbackButton;
|
||||
|
||||
@property (weak) IBOutlet NSTextField *currentResolverTextField;
|
||||
@property (weak) IBOutlet NSImageView *statusImageView;
|
||||
@property (weak) IBOutlet NSTextField *statusText;
|
||||
@property (weak) IBOutlet WebView *previewNotesWebView;
|
||||
@property (weak) IBOutlet WebView *releaseNotesWebView;
|
||||
@property (weak) IBOutlet WebView *feedbackWebView;
|
||||
@property (weak) IBOutlet WebView *aboutWebView;
|
||||
@property (strong) IBOutlet NSTextField *currentResolverTextField;
|
||||
@property (strong) IBOutlet NSImageView *statusImageView;
|
||||
@property (strong) IBOutlet NSTextField *statusText;
|
||||
@property (strong) IBOutlet WebView *previewNotesWebView;
|
||||
@property (strong) IBOutlet WebView *releaseNotesWebView;
|
||||
@property (strong) IBOutlet WebView *feedbackWebView;
|
||||
@property (strong) IBOutlet WebView *aboutWebView;
|
||||
|
||||
- (void) mainViewDidLoad;
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
|
||||
- (NSString *) fromCommand: (NSString *) launchPath withArguments: (NSArray *) arguments
|
||||
{
|
||||
NSPipe *pipe = [NSPipe pipe];
|
||||
NSPipe *pipe = [[NSPipe alloc] init];
|
||||
NSTask *task = [[NSTask alloc] init];
|
||||
NSData *data;
|
||||
NSString *result;
|
||||
@@ -45,6 +45,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
data = [[pipe fileHandleForReading] readDataToEndOfFile];
|
||||
[task waitUntilExit];
|
||||
[task release];
|
||||
[pipe release];
|
||||
result = [[[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding] autorelease];
|
||||
if ([result hasSuffix: @"\n"]) {
|
||||
result = [result substringToIndex: result.length - 1];
|
||||
@@ -62,119 +63,23 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
_fallbackButton.state = 0;
|
||||
|
||||
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-status.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[_dnscryptButton setState: 1];
|
||||
}
|
||||
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-familyshield-status.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[_familyShieldButton setState: 1];
|
||||
}
|
||||
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-insecure-opendns-status.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[_opendnsButton setState: 1];
|
||||
}
|
||||
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-fallback-status.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[_fallbackButton setState: 1];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL) setDNSCryptOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-to-dnscrypt.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setDNSCryptOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-to-dhcp.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFamilyShieldOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-on.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFamilyShieldOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-off.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setInsecureOpenDNSOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-on.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setInsecureOpenDNSOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-off.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFallbackOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-on.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFallbackOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-off.sh", nil]];
|
||||
NSLog(@"%@", res);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (IBAction)dnscryptButtonPressed:(NSButton *)sender
|
||||
{
|
||||
if (sender.state != 0) {
|
||||
[self setDNSCryptOn];
|
||||
} else {
|
||||
[self setDNSCryptOff];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)opendnsButtonPressed:(NSButton *)sender
|
||||
{
|
||||
if (sender.state != 0) {
|
||||
[self setInsecureOpenDNSOn];
|
||||
} else {
|
||||
[self setInsecureOpenDNSOn];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)familyShieldButtonPressed:(NSButton *)sender
|
||||
{
|
||||
if (sender.state != 0) {
|
||||
[self setFamilyShieldOn];
|
||||
} else {
|
||||
[self setFamilyShieldOff];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)fallbackButtonPressed:(NSButton *)sender
|
||||
{
|
||||
if (sender.state != 0) {
|
||||
[self setFallbackOn];
|
||||
} else {
|
||||
[self setFallbackOff];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) updateLedStatus
|
||||
{
|
||||
NSBundle *bundle = [NSBundle bundleWithIdentifier: @"com.opendns.osx.DNSCrypt"];
|
||||
@@ -203,7 +108,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
- (BOOL) updateStatusWithCurrentConfig
|
||||
{
|
||||
NSString *stateDescription = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./get-current-resolvers.sh | ./get-resolvers-description.sh", nil]];
|
||||
NSLog(@"%@", stateDescription);
|
||||
if ([stateDescription isEqualToString: @"FamilyShield"]) {
|
||||
currentState = kDNS_CONFIGURATION_OPENDNS;
|
||||
} else if ([stateDescription isEqualToString: @"DNSCrypt"]) {
|
||||
@@ -224,7 +128,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
_currentResolverTextField.stringValue = currentResolvers;
|
||||
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-pop-conf-change.sh prefpane", nil]];
|
||||
NSLog(@"%@", res);
|
||||
if ([res isEqualToString: @"yes"]) {
|
||||
[self initState];
|
||||
}
|
||||
@@ -233,6 +136,119 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (void) periodicallyUpdateStatusWithCurrentConfig {
|
||||
[self updateStatusWithCurrentConfig];
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(periodicallyUpdateStatusWithCurrentConfig) object: nil];
|
||||
[self performSelector: @selector(periodicallyUpdateStatusWithCurrentConfig) withObject:nil afterDelay: kREFRESH_DELAY];
|
||||
}
|
||||
|
||||
- (void) showSpinners {
|
||||
NSBundle *bundle = [NSBundle bundleWithIdentifier: kBUNDLE_IDENTIFIER];
|
||||
|
||||
[self setCheckBoxesEnabled: FALSE];
|
||||
_statusText.stringValue = NSLocalizedString(@"Updating", @"Updating network configuraiton");
|
||||
_statusImageView.image = [[[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"ajax-loader.gif"]] autorelease];
|
||||
_currentResolverTextField.stringValue = @"";
|
||||
|
||||
[self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-push-conf-change.sh menubar", nil]];
|
||||
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(periodicallyUpdateStatusWithCurrentConfig) object: nil];
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(waitForUpdate) object: nil];
|
||||
[self performSelector: @selector(waitForUpdate) withObject: self afterDelay:kREFRESH_DELAY];
|
||||
}
|
||||
|
||||
- (BOOL) setDNSCryptOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-to-dnscrypt.sh", nil]];
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setDNSCryptOff {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-to-dhcp.sh", nil]];
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL) setFamilyShieldOn {
|
||||
[self showSpinners];
|
||||
NSString *res = [self fromCommand: @"/bin/ksh" 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/ksh" 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/ksh" 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/ksh" 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/ksh" 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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-off.sh", nil]];
|
||||
(void) res;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (IBAction)dnscryptButtonPressed:(NSButton *)sender
|
||||
{
|
||||
if (sender.state != 0) {
|
||||
[self setDNSCryptOn];
|
||||
} else {
|
||||
[self setDNSCryptOff];
|
||||
}
|
||||
}
|
||||
|
||||
- (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) {
|
||||
[self setFallbackOn];
|
||||
} else {
|
||||
[self setFallbackOff];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) waitForUpdate {
|
||||
NSString *res;
|
||||
static unsigned int tries;
|
||||
@@ -248,27 +264,6 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
[self performSelector: @selector(waitForUpdate) withObject: self afterDelay:kREFRESH_DELAY];
|
||||
}
|
||||
|
||||
- (void) showSpinners {
|
||||
NSBundle *bundle = [NSBundle bundleWithIdentifier: kBUNDLE_IDENTIFIER];
|
||||
|
||||
[self setCheckBoxesEnabled: FALSE];
|
||||
_statusText.stringValue = NSLocalizedString(@"Updating", @"Updating network configuraiton");
|
||||
_statusImageView.image = [[[NSImage alloc] initWithContentsOfFile: [bundle pathForImageResource: @"ajax-loader.gif"]] autorelease];
|
||||
_currentResolverTextField.stringValue = @"";
|
||||
|
||||
[self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-push-conf-change.sh menubar", nil]];
|
||||
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(periodicallyUpdateStatusWithCurrentConfig) object: nil];
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(waitForUpdate) object: nil];
|
||||
[self performSelector: @selector(waitForUpdate) withObject: self afterDelay:kREFRESH_DELAY];
|
||||
}
|
||||
|
||||
- (void) periodicallyUpdateStatusWithCurrentConfig {
|
||||
[self updateStatusWithCurrentConfig];
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(periodicallyUpdateStatusWithCurrentConfig) object: nil];
|
||||
[self performSelector: @selector(periodicallyUpdateStatusWithCurrentConfig) withObject:nil afterDelay: kREFRESH_DELAY];
|
||||
}
|
||||
|
||||
- (void) mainViewDidLoad
|
||||
{
|
||||
currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
@@ -303,17 +298,23 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
|
||||
NSString *feedbackURLText = @"http://dnscrypt.opendns.com/feedback.php";
|
||||
[[_feedbackWebView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:feedbackURLText]]];
|
||||
|
||||
SInt32 OSXversionMajor, OSXversionMinor;
|
||||
if (Gestalt(gestaltSystemVersionMajor, &OSXversionMajor) != noErr || Gestalt(gestaltSystemVersionMinor, &OSXversionMinor) != noErr || OSXversionMajor < 10 || OSXversionMinor < 7) {
|
||||
[_tabView removeTabViewItem: _aboutTabViewItem];
|
||||
[_tabView removeTabViewItem:_releaseNotesTabViewItem];
|
||||
return;
|
||||
}
|
||||
[_releaseNotesWebView setDrawsBackground:false];
|
||||
[_releaseNotesWebView setShouldUpdateWhileOffscreen:true];
|
||||
[_releaseNotesWebView setUIDelegate:self];
|
||||
NSString *releaseNotesURLText = @"http://dnscrypt.opendns.com/releasenotes.php";
|
||||
[[_releaseNotesWebView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:releaseNotesURLText]]];
|
||||
NSURL *releaseNotesURL = [NSURL fileURLWithPath: [[NSBundle bundleForClass:[self class]] pathForResource: @"html/releasenotes" ofType: @"html"] isDirectory: NO];
|
||||
[[_releaseNotesWebView mainFrame] loadRequest:[NSURLRequest requestWithURL: releaseNotesURL]];
|
||||
|
||||
[_aboutWebView setDrawsBackground:false];
|
||||
[_aboutWebView setShouldUpdateWhileOffscreen:true];
|
||||
[_aboutWebView setUIDelegate:self];
|
||||
NSString *aboutURLText = @"http://dnscrypt.opendns.com/about.php";
|
||||
[[_aboutWebView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:aboutURLText]]];
|
||||
NSURL *aboutURL = [NSURL fileURLWithPath: [[NSBundle bundleForClass:[self class]] pathForResource: @"html/about" ofType: @"html"] isDirectory: NO];
|
||||
[[_aboutWebView mainFrame] loadRequest:[NSURLRequest requestWithURL: aboutURL]];
|
||||
}
|
||||
|
||||
- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1070</int>
|
||||
<string key="IBDocument.SystemVersion">12A269</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2818</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2829</string>
|
||||
<string key="IBDocument.AppKitVersion">1187</string>
|
||||
<string key="IBDocument.HIToolboxVersion">624.00</string>
|
||||
<dictionary class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="com.apple.InterfaceBuilder.CocoaPlugin">2818</string>
|
||||
<string key="com.apple.WebKitIBPlugin">1804</string>
|
||||
<string key="com.apple.InterfaceBuilder.CocoaPlugin">2829</string>
|
||||
<string key="com.apple.WebKitIBPlugin">1809</string>
|
||||
</dictionary>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSBox</string>
|
||||
@@ -64,7 +64,6 @@
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrame">{{13, 10}, {563, 359}}</string>
|
||||
<reference key="NSSuperview" ref="1037298196"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1025762247"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:461</string>
|
||||
<array class="NSMutableArray" key="NSTabViewItems">
|
||||
@@ -79,7 +78,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 238}, {204, 22}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="300098131"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:239</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -115,7 +113,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 212}, {245, 24}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="891532389"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:239</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -142,7 +139,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 157}, {244, 22}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="384170040"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:239</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -173,7 +169,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 133}, {204, 22}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="240318099"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:239</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -200,7 +195,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{14, 96}, {176, 19}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="496861916"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:3936</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -241,7 +235,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{54, 284}, {72, 19}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="908408940"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:3936</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -266,7 +259,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{14, -3}, {240, 83}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="855319081"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:3596</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -296,7 +288,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{115, 283}, {125, 19}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="894789954"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:3596</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -334,7 +325,6 @@
|
||||
</set>
|
||||
<string key="NSFrame">{{302, 222}, {224, 88}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="487940586"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSImageCell" key="NSCell" id="107747299">
|
||||
@@ -365,7 +355,6 @@
|
||||
</set>
|
||||
<string key="NSFrame">{{17, 277}, {32.395949255088134, 32.395949255088134}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="372048088"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSImageCell" key="NSCell" id="336811923">
|
||||
@@ -388,7 +377,6 @@
|
||||
<int key="NSvFlags">12</int>
|
||||
<string key="NSFrame">{{269.5, 2}, {4, 300}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="429164099"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1557</string>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
@@ -425,7 +413,7 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{323, 190}, {183, 32}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="821865429"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:2419</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="675161177">
|
||||
@@ -471,7 +459,6 @@
|
||||
</set>
|
||||
<string key="NSFrame">{{302, 2}, {224, 192}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:51</string>
|
||||
<string key="FrameName"/>
|
||||
@@ -492,7 +479,6 @@
|
||||
<int key="NSvFlags">12</int>
|
||||
<string key="NSFrame">{{17, 193}, {240, 5}}</string>
|
||||
<reference key="NSSuperview" ref="1025762247"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="410495287"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:2411</string>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
@@ -515,7 +501,6 @@
|
||||
</array>
|
||||
<string key="NSFrame">{{10, 33}, {543, 313}}</string>
|
||||
<reference key="NSSuperview" ref="821865429"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="423755939"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:463</string>
|
||||
</object>
|
||||
@@ -675,7 +660,6 @@
|
||||
</array>
|
||||
<string key="NSFrameSize">{589, 375}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="821865429"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1366, 746}}</string>
|
||||
@@ -825,6 +809,30 @@
|
||||
</object>
|
||||
<int key="connectionID">372</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">aboutTabViewItem</string>
|
||||
<reference key="source" ref="294453543"/>
|
||||
<reference key="destination" ref="820989392"/>
|
||||
</object>
|
||||
<int key="connectionID">376</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">releaseNotesTabViewItem</string>
|
||||
<reference key="source" ref="294453543"/>
|
||||
<reference key="destination" ref="615953595"/>
|
||||
</object>
|
||||
<int key="connectionID">383</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">tabView</string>
|
||||
<reference key="source" ref="294453543"/>
|
||||
<reference key="destination" ref="821865429"/>
|
||||
</object>
|
||||
<int key="connectionID">384</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
@@ -1235,158 +1243,9 @@
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">372</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">DNSCrypt</string>
|
||||
<string key="superclassName">NSPreferencePane</string>
|
||||
<dictionary class="NSMutableDictionary" key="actions">
|
||||
<string key="dnscryptButtonPressed:">NSButton</string>
|
||||
<string key="fallbackButtonPressed:">NSButton</string>
|
||||
<string key="familyShieldButtonPressed:">NSButton</string>
|
||||
<string key="openDNSLinkPushed:">NSButton</string>
|
||||
<string key="opendnsButtonPressed:">NSButton</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="dnscryptButtonPressed:">
|
||||
<string key="name">dnscryptButtonPressed:</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="fallbackButtonPressed:">
|
||||
<string key="name">fallbackButtonPressed:</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="familyShieldButtonPressed:">
|
||||
<string key="name">familyShieldButtonPressed:</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="openDNSLinkPushed:">
|
||||
<string key="name">openDNSLinkPushed:</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="opendnsButtonPressed:">
|
||||
<string key="name">opendnsButtonPressed:</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="aboutWebView">WebView</string>
|
||||
<string key="currentResolverTextField">NSTextField</string>
|
||||
<string key="dnscryptButton">NSButton</string>
|
||||
<string key="fallbackButton">NSButton</string>
|
||||
<string key="familyShieldButton">NSButton</string>
|
||||
<string key="feedbackWebView">WebView</string>
|
||||
<string key="opendnsButton">NSButton</string>
|
||||
<string key="previewNotesWebView">WebView</string>
|
||||
<string key="releaseNotesWebView">WebView</string>
|
||||
<string key="statusImageView">NSImageView</string>
|
||||
<string key="statusText">NSTextField</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="aboutWebView">
|
||||
<string key="name">aboutWebView</string>
|
||||
<string key="candidateClassName">WebView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="currentResolverTextField">
|
||||
<string key="name">currentResolverTextField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="dnscryptButton">
|
||||
<string key="name">dnscryptButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="fallbackButton">
|
||||
<string key="name">fallbackButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="familyShieldButton">
|
||||
<string key="name">familyShieldButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="feedbackWebView">
|
||||
<string key="name">feedbackWebView</string>
|
||||
<string key="candidateClassName">WebView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="opendnsButton">
|
||||
<string key="name">opendnsButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="previewNotesWebView">
|
||||
<string key="name">previewNotesWebView</string>
|
||||
<string key="candidateClassName">WebView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="releaseNotesWebView">
|
||||
<string key="name">releaseNotesWebView</string>
|
||||
<string key="candidateClassName">WebView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="statusImageView">
|
||||
<string key="name">statusImageView</string>
|
||||
<string key="candidateClassName">NSImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="statusText">
|
||||
<string key="name">statusText</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/DNSCrypt.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSPreferencePane</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="_firstKeyView">NSView</string>
|
||||
<string key="_initialKeyView">NSView</string>
|
||||
<string key="_lastKeyView">NSView</string>
|
||||
<string key="_window">NSWindow</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="_firstKeyView">
|
||||
<string key="name">_firstKeyView</string>
|
||||
<string key="candidateClassName">NSView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="_initialKeyView">
|
||||
<string key="name">_initialKeyView</string>
|
||||
<string key="candidateClassName">NSView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="_lastKeyView">
|
||||
<string key="name">_lastKeyView</string>
|
||||
<string key="candidateClassName">NSView</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/NSPreferencePane.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">WebView</string>
|
||||
<object class="NSMutableDictionary" key="actions">
|
||||
<string key="NS.key.0">reloadFromOrigin:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<string key="NS.key.0">reloadFromOrigin:</string>
|
||||
<object class="IBActionInfo" key="NS.object.0">
|
||||
<string key="name">reloadFromOrigin:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/WebView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
<int key="maxID">384</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
!!! 5
|
||||
%html{lang: "en"}
|
||||
%head
|
||||
%meta{charset: "utf-8"}
|
||||
%title About DNSCrypt
|
||||
%style{type: "text/css"}
|
||||
:sass
|
||||
body
|
||||
font:
|
||||
family: arial, helvetica, sans-serif
|
||||
margin: 0
|
||||
h1
|
||||
margin: 0
|
||||
%body
|
||||
%h1 About DNSCrypt
|
||||
%p
|
||||
This software encrypts DNS packets between your computer and
|
||||
OpenDNS. This prevents man-in-the-middle attacks and snooping of DNS
|
||||
traffic by ISPs or others.
|
||||
%p
|
||||
Tips:
|
||||
%ul
|
||||
%li If you have a firewall, open TCP and UDP ports 53 and 443.
|
||||
%li
|
||||
If you prefer reliability over security, enable fallback to
|
||||
insecure DNS.
|
||||
%li
|
||||
The FamilyShield service blocks pornographic content,
|
||||
including OpenDNS "Pornography", "Tasteless" and "Sexuality"
|
||||
categories, in addition to proxies and anonymizers (which can render
|
||||
filtering useless). It also blocks phishing and some malware.
|
||||
%p
|
||||
Please help by providing feedback!
|
||||
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<title>About DNSCrypt</title>
|
||||
<style type='text/css'>
|
||||
body {
|
||||
font-family: arial, helvetica, sans-serif;
|
||||
margin: 0; }
|
||||
|
||||
h1 {
|
||||
margin: 0; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>About DNSCrypt</h1>
|
||||
<p>
|
||||
This software encrypts DNS packets between your computer and
|
||||
OpenDNS. This prevents man-in-the-middle attacks and snooping of DNS
|
||||
traffic by ISPs or others.
|
||||
</p>
|
||||
<p>
|
||||
Tips:
|
||||
<ul>
|
||||
<li>If you have a firewall, open TCP and UDP ports 53 and 443.</li>
|
||||
<li>
|
||||
If you prefer reliability over security, enable fallback to
|
||||
insecure DNS.
|
||||
</li>
|
||||
<li>
|
||||
The FamilyShield service blocks pornographic content,
|
||||
including OpenDNS "Pornography", "Tasteless" and "Sexuality"
|
||||
categories, in addition to proxies and anonymizers (which can render
|
||||
filtering useless). It also blocks phishing and some malware.
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
Please help by providing feedback!
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,85 @@
|
||||
!!! 5
|
||||
%html{lang: "en"}
|
||||
%head
|
||||
%meta{charset: "utf-8"}
|
||||
%title Release notes
|
||||
%style{type: "text/css"}
|
||||
:sass
|
||||
body
|
||||
font:
|
||||
family: arial, helvetica, sans-serif
|
||||
margin: 0
|
||||
h1, h2
|
||||
margin: 0
|
||||
h1
|
||||
border-bottom: 1px solid grey
|
||||
article
|
||||
padding-left: 1em
|
||||
time
|
||||
font:
|
||||
style: italic
|
||||
%body
|
||||
%h1 Release Notes
|
||||
%article
|
||||
%h2 Version 0.13 released!
|
||||
%time Wed, 08 Aug 2012
|
||||
%ul
|
||||
%li The DNS cache is now flushed after a configuration change.
|
||||
%li Compatibility with OSX 10.6 has been improved.
|
||||
%li
|
||||
The release notes are now bundled with the preference pane.
|
||||
This reduces the startup time and ensures that these notes are
|
||||
consistent with the currently running version.
|
||||
|
||||
%article
|
||||
%h2 Version 0.12 released!
|
||||
%time Mon, 06 Aug 2012
|
||||
%ul
|
||||
%li
|
||||
The "fallback to insecure" mode now properly copes with captive
|
||||
portals and firewalls.
|
||||
%li
|
||||
The TCP/443 checkbox is gone. When the dnscrypt box is
|
||||
checked, it tries everything in parallel and keeps whatever
|
||||
works best.
|
||||
%li
|
||||
IPv6 is fully supported (and automatic. If that works using
|
||||
IPv6, IPv6 is used)
|
||||
%li
|
||||
Familyshield is supported, with and without dnscrypt.
|
||||
%li
|
||||
OpenDNS/DNSCrypt/Familyshield/Fallback settings can be set
|
||||
from the menu bar.
|
||||
%li
|
||||
Internal domain names like routerlogin.net are directly sent
|
||||
to the router or to whatever DNS resolvers the DHCP server provides.
|
||||
%li
|
||||
Packages are signed for Mountain Lion.
|
||||
%li
|
||||
The interface passively watches for network changes according to the
|
||||
current network configuration and the current Wifi access
|
||||
point. It doesn't constantly poll for changes any more.
|
||||
%li
|
||||
The proxy has been updated to version 1.0.1.
|
||||
|
||||
%article
|
||||
%h2 Version 0.10 released!
|
||||
%time Thu, 12 Jan 2012
|
||||
%ul
|
||||
%li The orange dot has been replaced with a green one.
|
||||
%li
|
||||
Some content in the preferences pane wasn't always
|
||||
properly loaded on Snow Leopard. This has been fixed.
|
||||
|
||||
%article
|
||||
%h2 Version 0.9 released!
|
||||
%time Mon, 10 Jan 2012
|
||||
%ul
|
||||
%li A new icon set, due to popular request.
|
||||
%li The dnscrypt settings are persistent across reboots.
|
||||
|
||||
%article
|
||||
%h2 Version 0.8 released!
|
||||
%time Wed, 14 Dec 2011
|
||||
%ul
|
||||
%li dnscrypt doesn't require administrative privileges any more.
|
||||
@@ -0,0 +1,107 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<title>Release notes</title>
|
||||
<style type='text/css'>
|
||||
body {
|
||||
font-family: arial, helvetica, sans-serif;
|
||||
margin: 0; }
|
||||
|
||||
h1, h2 {
|
||||
margin: 0; }
|
||||
|
||||
h1 {
|
||||
border-bottom: 1px solid grey; }
|
||||
|
||||
article {
|
||||
padding-left: 1em; }
|
||||
|
||||
time {
|
||||
font-style: italic; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Release Notes</h1>
|
||||
<article>
|
||||
<h2>Version 0.13 released!</h2>
|
||||
<time>Wed, 08 Aug 2012</time>
|
||||
<ul>
|
||||
<li>The DNS cache is now flushed after a configuration change.</li>
|
||||
<li>Compatibility with OSX 10.6 has been improved.</li>
|
||||
<li>
|
||||
The release notes are now bundled with the preference pane.
|
||||
This reduces the startup time and ensures that these notes are
|
||||
consistent with the currently running version.
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Version 0.12 released!</h2>
|
||||
<time>Mon, 06 Aug 2012</time>
|
||||
<ul>
|
||||
<li>
|
||||
The "fallback to insecure" mode now properly copes with captive
|
||||
portals and firewalls.
|
||||
</li>
|
||||
<li>
|
||||
The TCP/443 checkbox is gone. When the dnscrypt box is
|
||||
checked, it tries everything in parallel and keeps whatever
|
||||
works best.
|
||||
</li>
|
||||
<li>
|
||||
IPv6 is fully supported (and automatic. If that works using
|
||||
IPv6, IPv6 is used)
|
||||
</li>
|
||||
<li>
|
||||
Familyshield is supported, with and without dnscrypt.
|
||||
</li>
|
||||
<li>
|
||||
OpenDNS/DNSCrypt/Familyshield/Fallback settings can be set
|
||||
from the menu bar.
|
||||
</li>
|
||||
<li>
|
||||
Internal domain names like routerlogin.net are directly sent
|
||||
to the router or to whatever DNS resolvers the DHCP server provides.
|
||||
</li>
|
||||
<li>
|
||||
Packages are signed for Mountain Lion.
|
||||
</li>
|
||||
<li>
|
||||
The interface passively watches for network changes according to the
|
||||
current network configuration and the current Wifi access
|
||||
point. It doesn't constantly poll for changes any more.
|
||||
</li>
|
||||
<li>
|
||||
The proxy has been updated to version 1.0.1.
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Version 0.10 released!</h2>
|
||||
<time>Thu, 12 Jan 2012</time>
|
||||
<ul>
|
||||
<li>The orange dot has been replaced with a green one.</li>
|
||||
<li>
|
||||
Some content in the preferences pane wasn't always
|
||||
properly loaded on Snow Leopard. This has been fixed.
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Version 0.9 released!</h2>
|
||||
<time>Mon, 10 Jan 2012</time>
|
||||
<ul>
|
||||
<li>A new icon set, due to popular request.</li>
|
||||
<li>The dnscrypt settings are persistent across reboots.</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article>
|
||||
<h2>Version 0.8 released!</h2>
|
||||
<time>Wed, 14 Dec 2011</time>
|
||||
<ul>
|
||||
<li>dnscrypt doesn't require administrative privileges any more.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</body>
|
||||
</html>
|
||||
@@ -11,3 +11,5 @@ exec networksetup -listallnetworkservices 2>/dev/null | \
|
||||
fgrep -v '*' | while read x ; do
|
||||
networksetup -setdnsservers "$x" "$servers"
|
||||
done
|
||||
dscacheutil -flushcache 2> /dev/null
|
||||
exit 0
|
||||
|
||||
@@ -9,3 +9,5 @@ exec networksetup -listallnetworkservices 2>/dev/null | \
|
||||
fgrep -v '*' | while read x ; do
|
||||
networksetup -setdnsservers "$x" $servers
|
||||
done
|
||||
dscacheutil -flushcache 2> /dev/null
|
||||
exit 0
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<link rel="stylesheet" media="screen" href="./screen.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="body">
|
||||
<h1>About DNSCrypt!</h1>
|
||||
<p>This software encrypts DNS packets between your computer and OpenDNS. This prevents man-in-the-middle attacks and snooping of DNS traffic by ISPs or others.</p>
|
||||
<p>Tips:</p>
|
||||
<ul>
|
||||
<li>If you have a firewall or other middleware mangling your packets, try enabling DNSCrypt with TCP over port 443.
|
||||
<li>If you prefer reliability over security, enable fallback to insecure DNS.</li>
|
||||
</ul>
|
||||
<p>Please help by providing feedback!</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+8
-6
@@ -1,6 +1,6 @@
|
||||
!!! 5
|
||||
%html{lang: "en"}
|
||||
%head
|
||||
%html{lang: "en"}
|
||||
%head
|
||||
%meta{charset: "utf-8"}
|
||||
%title DNSCrypt feedback form
|
||||
%style{type: "text/css"}
|
||||
@@ -8,8 +8,11 @@
|
||||
body
|
||||
font:
|
||||
family: arial, helvetica, sans-serif
|
||||
margin: 0
|
||||
h1
|
||||
margin: 0
|
||||
form
|
||||
margin: 10px auto
|
||||
margin: 0 auto
|
||||
width: 500px
|
||||
p
|
||||
margin: 0.25em 0
|
||||
@@ -30,7 +33,7 @@
|
||||
width: auto
|
||||
textarea
|
||||
width: 300px
|
||||
height: 200px
|
||||
height: 170px
|
||||
#submit
|
||||
text-align: center
|
||||
%body
|
||||
@@ -40,8 +43,7 @@
|
||||
%p
|
||||
%label{for: "name"} Name:
|
||||
%input{type: "text", name: "name", autofocus: true,
|
||||
required: true, value: "{{name}}",
|
||||
class: "{{class_name}}"}
|
||||
required: true, value: "{{name}}", class: "{{class_name}}"}
|
||||
%p
|
||||
%label{for: "email"} Email:
|
||||
%input{type: "email", name: "email",
|
||||
|
||||
+88
-19
@@ -2,6 +2,9 @@
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
define('FEEDBACK_RECIPIENT', 'DNSCrypt Feedback <dnscrypt@example.com>');
|
||||
define('FEEDBACK_SUBJECT', 'DNSCrypt Feedback');
|
||||
|
||||
function strip_slashes_from_user_data(&$array) {
|
||||
foreach($array as $k => $v) {
|
||||
if (is_array($v)) {
|
||||
@@ -12,22 +15,26 @@ function strip_slashes_from_user_data(&$array) {
|
||||
}
|
||||
}
|
||||
|
||||
if (get_magic_quotes_gpc()) {
|
||||
strip_slashes_from_user_data($_GET);
|
||||
strip_slashes_from_user_data($_POST);
|
||||
strip_slashes_from_user_data($_COOKIE);
|
||||
function disable_magic_quotes() {
|
||||
if (get_magic_quotes_gpc()) {
|
||||
strip_slashes_from_user_data($_GET);
|
||||
strip_slashes_from_user_data($_POST);
|
||||
strip_slashes_from_user_data($_COOKIE);
|
||||
}
|
||||
}
|
||||
|
||||
function render_headers() {
|
||||
header('X-Frame-Options: sameorigin');
|
||||
header('X-XSS-Protection: 1; mode=block');
|
||||
header('X-Content-Security-Policy: allow \'self\'');
|
||||
header('Cache-Control: private, max-age=3600');
|
||||
header('Expires: ' . date('r', time() + 3600));
|
||||
}
|
||||
|
||||
function render_tpl($template, $vars) {
|
||||
$tpl = @file_get_contents($template);
|
||||
if (empty($tpl)) {
|
||||
throw new Exception("template");
|
||||
throw new Exception('template');
|
||||
}
|
||||
foreach ($vars as $key => $value) {
|
||||
foreach (array_keys($vars) as $key_) {
|
||||
@@ -35,25 +42,87 @@ function render_tpl($template, $vars) {
|
||||
$value = '';
|
||||
}
|
||||
}
|
||||
$tpl = str_replace('{{' . $key . '}}',
|
||||
htmlspecialchars($value),
|
||||
$tpl);
|
||||
$tpl = str_replace('{{' . $key . '}}', htmlspecialchars($value), $tpl);
|
||||
}
|
||||
echo $tpl;
|
||||
}
|
||||
|
||||
$authenticity_token = isset($_GET['authenticity_token']) ?
|
||||
(string) $_GET['authenticity_token'] : '';
|
||||
$name = trim(isset($_POST['name']) ? (string) $_POST['name'] : '');
|
||||
$email = trim(isset($_POST['email']) ? (string) $_POST['email'] : '');
|
||||
$feedback = trim(isset($_POST['feedback']) ? (string) $_POST['feedback'] : '');
|
||||
function redirect_to_sent_page($uri) {
|
||||
header('HTTP/1.1 303 See other');
|
||||
header('Location: ' . $uri);
|
||||
exit;
|
||||
}
|
||||
|
||||
$form_url = $_SERVER['REQUEST_URI'] . '?' .
|
||||
http_build_query(array('authenticity_token' => $authenticity_token));
|
||||
function _send_email($name, $email, $feedback) {
|
||||
$from = mb_encode_mimeheader($name, 'UTF-8') . '<' . $email . '>';
|
||||
$to = FEEDBACK_RECIPIENT;
|
||||
$subject = mb_encode_mimeheader(FEEDBACK_SUBJECT, 'UTF-8');
|
||||
$body = addslashes($feedback);
|
||||
|
||||
return send_email($from, $to, $subject, $body);
|
||||
}
|
||||
|
||||
function send_form($name, $email, $feedback) {
|
||||
if (_send_email($name, $email, $feedback) !== TRUE) {
|
||||
redirect_to_sent_page($_SERVER['SCRIPT_NAME']);
|
||||
}
|
||||
redirect_to_sent_page('sent.html');
|
||||
}
|
||||
|
||||
function process_feedback(&$errors, &$name, &$email, &$feedback) {
|
||||
$name = trim(isset($_POST['name']) ? (string) $_POST['name'] : '');
|
||||
$email = trim(isset($_POST['email']) ? (string) $_POST['email'] : '');
|
||||
$feedback = trim(isset($_POST['feedback']) ?
|
||||
(string) $_POST['feedback'] : '');
|
||||
if (empty($name)) {
|
||||
array_push($errors, 'name');
|
||||
}
|
||||
if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||
array_push($errors, 'email');
|
||||
}
|
||||
if (empty($feedback)) {
|
||||
array_push($errors, 'feedback');
|
||||
}
|
||||
if (! empty($errors)) {
|
||||
return;
|
||||
}
|
||||
session_start();
|
||||
if (empty($_SESSION['authenticity_token']) ||
|
||||
$_GET['authenticity_token'] !== $_SESSION['authenticity_token']) {
|
||||
return;
|
||||
}
|
||||
send_form($name, $email, $feedback);
|
||||
unset($_SESSION['authenticity_token']);
|
||||
}
|
||||
|
||||
disable_magic_quotes();
|
||||
|
||||
render_headers();
|
||||
|
||||
render_tpl('feedback.tpl', array('authenticity_token' => $authenticity_token,
|
||||
'name' => $name, 'email' => $email,
|
||||
'feedback' => $feedback,
|
||||
'form_url' => $form_url));
|
||||
$errors = array();
|
||||
$name = $email = $feedback = '';
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' &&
|
||||
!empty($_GET['authenticity_token'])) {
|
||||
process_feedback($errors, $name, $email, $feedback);
|
||||
}
|
||||
|
||||
if (session_id() === '') {
|
||||
session_start();
|
||||
}
|
||||
$authenticity_token = md5(uniqid(__FILE__, TRUE));
|
||||
$_SESSION['authenticity_token'] = $authenticity_token;
|
||||
|
||||
$form_url = $_SERVER['SCRIPT_NAME'] . '?' .
|
||||
http_build_query(array('authenticity_token' => $authenticity_token));
|
||||
|
||||
$vars = array('name' => $name,
|
||||
'email' => $email,
|
||||
'feedback' => $feedback,
|
||||
'form_url' => $form_url);
|
||||
|
||||
foreach ($errors as $error) {
|
||||
$vars['class_' . $error] = 'error';
|
||||
}
|
||||
|
||||
render_tpl('feedback.tpl', $vars + $errors);
|
||||
|
||||
+14
-10
@@ -5,37 +5,41 @@
|
||||
<title>DNSCrypt feedback form</title>
|
||||
<style type='text/css'>
|
||||
body {
|
||||
font-family: arial, helvetica, sans-serif; }
|
||||
|
||||
font-family: arial, helvetica, sans-serif;
|
||||
margin: 0; }
|
||||
|
||||
h1 {
|
||||
margin: 0; }
|
||||
|
||||
form {
|
||||
margin: 10px auto;
|
||||
margin: 0 auto;
|
||||
width: 500px; }
|
||||
form p {
|
||||
margin: 0.25em 0; }
|
||||
form .error {
|
||||
background: #ffbbbb;
|
||||
color: black; }
|
||||
|
||||
|
||||
fieldset {
|
||||
border: none;
|
||||
padding: 0; }
|
||||
|
||||
|
||||
label {
|
||||
float: left;
|
||||
width: 100px;
|
||||
text-align: right;
|
||||
padding-right: 1em; }
|
||||
|
||||
|
||||
input {
|
||||
width: 200px; }
|
||||
|
||||
|
||||
input[type=submit] {
|
||||
width: auto; }
|
||||
|
||||
|
||||
textarea {
|
||||
width: 300px;
|
||||
height: 200px; }
|
||||
|
||||
height: 170px; }
|
||||
|
||||
#submit {
|
||||
text-align: center; }
|
||||
</style>
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<link rel="stylesheet" media="screen" href="./screen.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Release Notes</h1>
|
||||
<div class="blog">
|
||||
<div class="post">
|
||||
<h2>Version 0.10 released!</h2>
|
||||
<div class="date"><p>Updated: Thu, 12 Jan 2012</p></div>
|
||||
<ul>
|
||||
<li>The orange dot has been replaced with a green one.</li>
|
||||
<li>Some content in the preferences pane wasn't always properly loaded on Snow Leopard. This has been fixed.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="post">
|
||||
<h2>Version 0.9 released!</h2>
|
||||
<div class="date"><p>Updated: Mon, 10 Jan 2012</p></div>
|
||||
<ul>
|
||||
<li>A new icon set, due to popular request.</li>
|
||||
<li>The dnscrypt settings are persistent across reboots.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="post">
|
||||
<h2>Version 0.8 released!</h2>
|
||||
<div class="date"><p>Updated: Wed, 14 Dec 2011</p></div>
|
||||
<ul>
|
||||
<li>dnscrypt doesn't require administrative privileges any more.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="post">
|
||||
<h2>Version 0.7 released!</h2>
|
||||
<div class="date"><p>Updated: Mon, 5 Dec 2011</p></div>
|
||||
<ul>
|
||||
<li>Bug fixes.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="post">
|
||||
<h2>Version 0.6 released!</h2>
|
||||
<div class="date"><p>Updated: Mon, 28 Nov 2011</p></div>
|
||||
<ul>
|
||||
<li>Bug fixes.</li>
|
||||
<li>More robust key handling.</li>
|
||||
<li>A new icon.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="post">
|
||||
<h2>Version 0.4 released!</h2>
|
||||
<div class="date"><p>Updated: Mon, 22 Nov 2011</p></div>
|
||||
<ul>
|
||||
<li>This version removes the built-in updater (using Sparkle for updates).</li>
|
||||
<li>Uses 208.67.220.220 instead of 208.67.222.222 (no difference).</li>
|
||||
<li>Snow Leopard improvements.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="post">
|
||||
<h2>Now supporting Snow Leopard!</h2>
|
||||
<div class="date"><p>Updated: Tue, 15 Nov 2011 23:57:08 +0000</p></div>
|
||||
<p>Much more to come. Please give feedback. The next version will even have version numbers displayed. :-)</p>
|
||||
<p>We need an icon too, any ideas?</p>
|
||||
</div>
|
||||
<div class="post">
|
||||
<h2>Preview Release Released!</h2>
|
||||
<div class="date"><p>Updated: Tue, 13 Nov 2011 12:26:33 +0000</p></div>
|
||||
<p>This is the first release of DNSCrypt! Much more to come. Please give feedback.</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,20 +0,0 @@
|
||||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
max-width: 500px;
|
||||
margin: 0;
|
||||
}
|
||||
.blog {
|
||||
font-family: serif;
|
||||
}
|
||||
.post {
|
||||
padding: 10px 10px 0 10px;
|
||||
margin-bottom: 10px;
|
||||
border-top: 1px solid #999;
|
||||
}
|
||||
h1, h2, .date, .date p {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
.date {
|
||||
font-style: italic;
|
||||
}
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
!!! 5
|
||||
%html{lang: "en"}
|
||||
%head
|
||||
%html{lang: "en"}
|
||||
%head
|
||||
%meta{charset: "utf-8"}
|
||||
%meta{"http-equiv" => "refresh", content: "5; url=feedback.php"}
|
||||
%title DNSCrypt feedback sent
|
||||
|
||||
Reference in New Issue
Block a user