Compare commits

...
34 Commits
Author SHA1 Message Date
Frank Denis 024ed9d287 Add a meta-installer 2012-10-12 13:28:08 -07:00
Frank Denis cbe7f394ee Use csh instead of ksh. Because ksh occasionally likes to dereference a NULL
pointer on Mountain Lion.
2012-10-11 14:15:43 -07:00
Frank Denis b83a2f514c Move the Uninstall button to the right again. 2012-10-11 14:11:12 -07:00
Frank Denis 362c2043eb www.opendns.com can take more than 5 sec to load, so check connectivity
with guide.opendns.com instead.
2012-10-10 22:22:34 -07:00
Frank Denis 6602c4ab5d Remove the focus before displaying the help page for the advanced settings. 2012-10-10 16:27:35 -07:00
Frank Denis c4c4748352 chmod, then chown 2012-10-10 15:25:38 -07:00
Frank Denis 7ed00f4a7a Enforce a few permissions. 2012-10-10 15:24:33 -07:00
Frank Denis 8aa0f90f16 Remove controls of plugins we don't ship any more. 2012-10-10 14:53:37 -07:00
Frank Denis 07c8f437b4 True dat. Detection of IPv6 connectivity is faster now. 2012-10-10 14:18:14 -07:00
Frank Denis 07900f384b A variable assignment can reset $?. Fix IPv6 detection. 2012-10-10 14:14:16 -07:00
Frank Denis ebfd2eead8 Update package for dnscrypt-proxy 1.2.0 and OSX UI 0.19 2012-10-10 13:56:51 -07:00
Frank Denis 43bc6e81d4 Can? Are. 2012-10-10 13:50:05 -07:00
Frank Denis 263d24c5e6 Ship the AAAA plugin and automatically enable it on IPv4-only networks. 2012-10-10 13:48:36 -07:00
Frank Denis a664db7d22 libldns update 2012-10-10 13:42:42 -07:00
Frank Denis bf7c7534cf Update ChangeLog 2012-10-10 13:36:31 -07:00
Frank Denis 9234cd2362 So, the next version will be 0.19. 2012-10-09 14:25:30 -07:00
Frank Denis 85277fd597 Remove dead scripts. 2012-10-09 14:21:59 -07:00
Frank Denis 1ddd8d28d6 Remove doc about removed stuff. 2012-10-09 14:19:47 -07:00
Frank Denis 8ab74b6406 Remove stuff 2012-10-09 14:18:14 -07:00
Frank Denis bf0d5a0eb5 Adjust the layout 2012-10-09 14:14:08 -07:00
Frank Denis 6285a75499 Remove. Stuff. 2012-10-09 14:06:06 -07:00
Frank Denis 9ee80347f5 127.0.0.54 => $INTERFACE_PROXY 2012-10-05 17:38:18 -07:00
Frank Denis 63e6052caf Update ldns 2012-10-03 16:55:53 -07:00
Frank Denis 2647aadad8 Re-enable JS for the feedback form 2012-10-03 10:08:45 -07:00
Frank Denis 6020eb8505 Grammar 2012-10-03 08:37:13 -07:00
Frank Denis d5f551de8a 0.18 2012-10-03 08:21:43 -07:00
Frank Denis 1c8e2e4fa1 Update release notes. 2012-10-03 08:15:28 -07:00
Frank Denis 093ab54300 Explain that a tool like dig(1) shouldn't be use in order to check if
an exception works.
2012-10-03 05:51:42 -07:00
Frank Denis d15252db40 Keep everything sorted, thanks. 2012-10-02 11:26:54 -07:00
Frank Denis 50dc9a9382 Add freebox.fr to the list of exceptions for things like mafreebox.freebox.fr 2012-10-02 11:25:33 -07:00
Frank Denis 75d3983289 Change "enable OpenDNS" to "always use OpenDNS" and
"enable FamilyShield" to "always use FamilyShield" in the
preference pane, too, in order to be in line with the
menu bar.
Suggested by G.D. Wolfman, thanks!
2012-10-02 07:14:59 -07:00
Frank Denis 24227488db Use 0.17.1 in the package. 2012-10-02 07:14:10 -07:00
Frank Denis cbfa42cb3a Moving on. Next will be 0.18 2012-09-29 15:22:55 +02:00
Frank Denis 2f6ab604fc Use static resolvers, if provided, in order to resolve names bypassing OpenDNS 2012-09-29 15:08:44 +02:00
28 changed files with 982 additions and 562 deletions
+17 -17
View File
@@ -60,19 +60,19 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
_opendnsMenuItem.state = 0;
_fallbackMenuItem.state = 0;
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-status.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-familyshield-status.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-insecure-opendns-status.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-fallback-status.sh", nil]];
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];
}
@@ -119,7 +119,7 @@ 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]];
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"]) {
@@ -136,11 +136,11 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
}
[self updateLedStatus];
NSString *currentResolvers = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./get-current-resolvers.sh | ./get-upstream-resolvers.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-pop-conf-change.sh menubar", nil]];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-pop-conf-change.sh menubar", nil]];
if ([res isEqualToString: @"yes"]) {
[self initState];
}
@@ -159,7 +159,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
NSString *res;
static unsigned int tries;
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-tickets-count.sh", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-tickets-count.sh", nil]];
if (res.length <= 0 || [res isEqualToString: @"0"] || tries > kMAX_TRIES_AFTER_CHANGE) {
tries = 0U;
[self periodicallyUpdateStatusWithCurrentConfig];
@@ -179,7 +179,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
_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]];
[self fromCommand: @"/bin/csh" 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];
@@ -223,56 +223,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]];
NSString *res = [self fromCommand: @"/bin/csh" 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]];
NSString *res = [self fromCommand: @"/bin/csh" 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]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-off.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-on.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-off.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-on.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-off.sh", nil]];
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;
}
@@ -17,11 +17,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.17 (beta)</string>
<string>0.19 (beta)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.17</string>
<string>0.19</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
+652
View File
@@ -0,0 +1,652 @@
<?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>PROJECT</key>
<dict>
<key>PACKAGE_FILES</key>
<dict>
<key>DEFAULT_INSTALL_LOCATION</key>
<string>/</string>
<key>HIERARCHY</key>
<dict>
<key>CHILDREN</key>
<array>
<dict>
<key>CHILDREN</key>
<array>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>80</integer>
<key>PATH</key>
<string>Utilities</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
</array>
<key>GID</key>
<integer>80</integer>
<key>PATH</key>
<string>Applications</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>509</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>80</integer>
<key>PATH</key>
<string>Application Support</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Documentation</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Filesystems</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Frameworks</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Internet Plug-Ins</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>LaunchAgents</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>LaunchDaemons</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>PreferencePanes</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Preferences</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>80</integer>
<key>PATH</key>
<string>Printers</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>PrivilegedHelperTools</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>QuickTime</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Screen Savers</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Scripts</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Services</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Widgets</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
</array>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Library</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array>
<dict>
<key>CHILDREN</key>
<array>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Extensions</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
</array>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Library</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
</array>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>System</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>Shared</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>1023</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
</array>
<key>GID</key>
<integer>80</integer>
<key>PATH</key>
<string>Users</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
</array>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<key>PAYLOAD_TYPE</key>
<integer>0</integer>
<key>VERSION</key>
<integer>2</integer>
</dict>
<key>PACKAGE_SCRIPTS</key>
<dict>
<key>PREINSTALL_PATH</key>
<dict>
<key>PATH</key>
<string>install.sh</string>
<key>PATH_TYPE</key>
<integer>3</integer>
</dict>
<key>RESOURCES</key>
<array>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>pkg.tgz</string>
<key>PATH_TYPE</key>
<integer>1</integer>
<key>PERMISSIONS</key>
<integer>420</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>PACKAGE_SETTINGS</key>
<dict>
<key>AUTHENTICATION</key>
<false/>
<key>CONCLUSION_ACTION</key>
<integer>0</integer>
<key>IDENTIFIER</key>
<string>osx.org.pureftpd.pkg.DNSCrypt-Meta-Installer</string>
<key>OVERWRITE_PERMISSIONS</key>
<false/>
<key>VERSION</key>
<string>0.19</string>
</dict>
<key>PROJECT_COMMENTS</key>
<dict>
<key>NOTES</key>
<data>
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1M
IDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQv
c3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9VVRGLTgiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KPHRp
dGxlPjwvdGl0bGU+CjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29u
dGVudD0iQ29jb2EgSFRNTCBXcml0ZXIiPgo8bWV0YSBuYW1lPSJD
b2NvYVZlcnNpb24iIGNvbnRlbnQ9IjExODcuMzQiPgo8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5
Pgo8L2JvZHk+CjwvaHRtbD4K
</data>
</dict>
<key>PROJECT_SETTINGS</key>
<dict>
<key>BUILD_PATH</key>
<dict>
<key>PATH</key>
<string>build</string>
<key>PATH_TYPE</key>
<integer>1</integer>
</dict>
<key>EXCLUDED_FILES</key>
<array>
<dict>
<key>PATTERNS_ARRAY</key>
<array>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>.DS_Store</string>
<key>TYPE</key>
<integer>0</integer>
</dict>
</array>
<key>PROTECTED</key>
<true/>
<key>PROXY_NAME</key>
<string>Remove .DS_Store files</string>
<key>PROXY_TOOLTIP</key>
<string>Remove ".DS_Store" files created by the Finder.</string>
<key>STATE</key>
<true/>
</dict>
<dict>
<key>PATTERNS_ARRAY</key>
<array>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>.pbdevelopment</string>
<key>TYPE</key>
<integer>0</integer>
</dict>
</array>
<key>PROTECTED</key>
<true/>
<key>PROXY_NAME</key>
<string>Remove .pbdevelopment files</string>
<key>PROXY_TOOLTIP</key>
<string>Remove ".pbdevelopment" files created by ProjectBuilder or Xcode.</string>
<key>STATE</key>
<true/>
</dict>
<dict>
<key>PATTERNS_ARRAY</key>
<array>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>CVS</string>
<key>TYPE</key>
<integer>1</integer>
</dict>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>.cvsignore</string>
<key>TYPE</key>
<integer>0</integer>
</dict>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>.cvspass</string>
<key>TYPE</key>
<integer>0</integer>
</dict>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>.svn</string>
<key>TYPE</key>
<integer>1</integer>
</dict>
</array>
<key>PROTECTED</key>
<true/>
<key>PROXY_NAME</key>
<string>Remove SCM metadata</string>
<key>PROXY_TOOLTIP</key>
<string>Remove helper files and folders used by the CVS and SVN Source Code Management systems.</string>
<key>STATE</key>
<true/>
</dict>
<dict>
<key>PATTERNS_ARRAY</key>
<array>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>classes.nib</string>
<key>TYPE</key>
<integer>0</integer>
</dict>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>designable.db</string>
<key>TYPE</key>
<integer>0</integer>
</dict>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>info.nib</string>
<key>TYPE</key>
<integer>0</integer>
</dict>
</array>
<key>PROTECTED</key>
<true/>
<key>PROXY_NAME</key>
<string>Optimize nib files</string>
<key>PROXY_TOOLTIP</key>
<string>Remove "classes.nib", "info.nib" and "designable.nib" files within .nib bundles.</string>
<key>STATE</key>
<true/>
</dict>
<dict>
<key>PATTERNS_ARRAY</key>
<array>
<dict>
<key>REGULAR_EXPRESSION</key>
<false/>
<key>STRING</key>
<string>Resources Disabled</string>
<key>TYPE</key>
<integer>1</integer>
</dict>
</array>
<key>PROTECTED</key>
<true/>
<key>PROXY_NAME</key>
<string>Remove Resources Disabled folders</string>
<key>PROXY_TOOLTIP</key>
<string>Remove "Resources Disabled" folders.</string>
<key>STATE</key>
<true/>
</dict>
<dict>
<key>SEPARATOR</key>
<true/>
</dict>
</array>
<key>NAME</key>
<string>DNSCrypt</string>
</dict>
</dict>
<key>TYPE</key>
<integer>1</integer>
<key>VERSION</key>
<integer>2</integer>
</dict>
</plist>
+7
View File
@@ -0,0 +1,7 @@
#! /bin/sh
env > /tmp/a
tdir=$(mktemp -d /tmp/XXXXXXXXXXXXXXXX)
chmod 755 "$tdir"
tar x -z -C "$tdir" -f pkg.tgz
(sleep 10 ; cd "$tdir" ; exec open -W -b 'com.apple.installer' ./DNSCrypt.mpkg) &
@@ -447,6 +447,38 @@
<dict>
<key>CHILDREN</key>
<array>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_aaaa_blocking.la</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_aaaa_blocking.so</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
@@ -479,6 +511,38 @@
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_forward_after_nxdomain.la</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_forward_after_nxdomain.so</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
@@ -511,70 +575,6 @@
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_parental_control.la</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_parental_control.so</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_set_client_ip.la</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
<key>GID</key>
<integer>0</integer>
<key>PATH</key>
<string>/usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_set_client_ip.so</string>
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<key>TYPE</key>
<integer>3</integer>
<key>UID</key>
<integer>0</integer>
</dict>
<dict>
<key>CHILDREN</key>
<array/>
@@ -828,7 +828,7 @@
<key>USE_HFS+_COMPRESSION</key>
<true/>
<key>VERSION</key>
<string>1.1.0.4</string>
<string>1.2.0</string>
</dict>
<key>UUID</key>
<string>7F7D70AB-F7A2-4027-8304-3063C7B9532F</string>
@@ -1435,7 +1435,7 @@
<key>USE_HFS+_COMPRESSION</key>
<true/>
<key>VERSION</key>
<string>0.17</string>
<string>0.19</string>
</dict>
<key>TYPE</key>
<integer>0</integer>
@@ -1928,7 +1928,7 @@
<key>USE_HFS+_COMPRESSION</key>
<true/>
<key>VERSION</key>
<string>0.17</string>
<string>0.19</string>
</dict>
<key>TYPE</key>
<integer>0</integer>
@@ -7,8 +7,14 @@ exec 2>/dev/null
/bin/mkdir -p '/Library/Application Support/DNSCrypt/probes'
/bin/mkdir -p '/Library/Application Support/DNSCrypt/states'
/bin/mkdir -p '/Library/Application Support/DNSCrypt/tickets'
/usr/sbin/chown -R 0:0 '/Library/Application Support/DNSCrypt'
/bin/chmod 755 '/Library/Application Support/DNSCrypt'
/bin/chmod 755 '/usr/local/bin/hostip'
/bin/chmod 755 '/usr/local/sbin/dnscrypt-proxy'
/bin/chmod -R 755 '/usr/local/lib/dnscrypt-proxy'
/usr/sbin/chown -R 0:0 '/Library/Application Support/DNSCrypt'
/usr/sbin/chown 0:0 '/usr/local/bin/hostip'
/usr/sbin/chown 0:0 '/usr/local/lib/dnscrypt-proxy'
/usr/sbin/chown -R 0:0 '/usr/local/sbin/dnscrypt-proxy'
eval $(/usr/bin/stat -s '/dev/console')
if [ $? != 0 ]; then
@@ -19,6 +25,9 @@ if [ $? != 0 ]; then
'/Library/Application Support/DNSCrypt/tickets'
fi
rm -f '/Library/Application Support/DNSCrypt/control/plugin-parental-controls.enabled'
rm -f '/Library/Application Support/DNSCrypt/control/plugin-lockin.enabled'
for service in com.opendns.osx.DNSCryptAfterboot \
com.opendns.osx.DNSCryptConsoleChange \
com.opendns.osx.DNSCryptControlChange \
+3 -1
View File
@@ -1,8 +1,10 @@
#! /bin/sh
VERSION='0.17'
VERSION='0.19'
cd build || exit 1
[ -d DNSCrypt.mpkg ] || exit 1
(
cd DNSCrypt.mpkg/Contents/Packages || exit 1
@@ -17,11 +17,11 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>0.17</string>
<string>0.19</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.17</string>
<string>0.19</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2011-2012 OpenDNS Inc. All rights reserved.</string>
<key>NSMainNibFile</key>
+3 -6
View File
@@ -9,7 +9,7 @@
#import <PreferencePanes/PreferencePanes.h>
#import <WebKit/WebKit.h>
#define kDNSCRYPT_PACKAGE_VERSION @"0.17"
#define kDNSCRYPT_PACKAGE_VERSION @"0.19"
#define kDNSCRYPT_PREFPANE_APP_PATH @"/Library/PreferencePanes/DNSCrypt.prefPane"
#define kDNSCRYPT_USR_BASE_DIR kDNSCRYPT_PREFPANE_APP_PATH @"/Contents/Resources/usr"
@@ -55,13 +55,12 @@ typedef enum {
@property (nonatomic, retain) IBOutlet WebView *feedbackWebView;
@property (nonatomic, retain) IBOutlet WebView *aboutWebView;
@property (nonatomic, retain) IBOutlet NSTextFieldCell *staticResolversTextField;
@property (nonatomic, retain) IBOutlet NSButton *parentalControlsButton;
@property (nonatomic, retain) IBOutlet NSButtonCell *queryLoggingButton;
@property (nonatomic, retain) IBOutlet NSButton *lockinButton;
@property (nonatomic, retain) IBOutlet NSTextField *blacklistIPsTextField;
@property (nonatomic, retain) IBOutlet NSTextField *blacklistDomainsTextField;
@property (nonatomic, retain) IBOutlet NSTextField *exceptionsTextField;
@property (nonatomic, retain) IBOutlet WebView *helpWebView;
@property (nonatomic, retain) IBOutlet NSButton *viewLogButton;
@property (nonatomic, retain) IBOutlet NSButton *queryLoggingButton;
- (void) mainViewDidLoad;
@@ -73,10 +72,8 @@ typedef enum {
- (IBAction)openDNSLinkPushed:(NSButton *)sender;
- (IBAction)uninstallPushed:(NSButton *)sender;
- (IBAction)staticResolversTextFieldChanged:(NSTextField *)sender;
- (IBAction)parentalControlsButtonPressed:(NSButtonCell *)sender;
- (IBAction)queryLoggingButtonPressed:(NSButtonCell *)sender;
- (IBAction)viewLogButtonPushed:(NSButton *)sender;
- (IBAction)lockinButtonPressed:(NSButton *)sender;
- (IBAction)blacklistIPsUpdated:(NSTextField *)sender;
- (IBAction)blacklistDomainsUpdated:(NSTextField *)sender;
- (IBAction)exceptionsUpdated:(NSTextField *)sender;
+36 -84
View File
@@ -17,12 +17,11 @@
@synthesize feedbackWebView = _feedbackWebView;
@synthesize aboutWebView = _aboutWebView;
@synthesize staticResolversTextField = _staticResolversTextField;
@synthesize parentalControlsButton = _parentalControlsButton;
@synthesize queryLoggingButton = _queryLoggingButton;
@synthesize lockinButton = _lockinButton;
@synthesize blacklistIPsTextField = _blacklistIPsTextField;
@synthesize blacklistDomainsTextField = _blacklistDomainsTextField;
@synthesize helpWebView = _helpWebView;
@synthesize viewLogButton = _viewLogButton;
@synthesize queryLoggingButton = _queryLoggingButton;
@synthesize exceptionsTextField = _exceptionsTextField;
@synthesize dnscryptButton = _dnscryptButton;
@synthesize opendnsButton = _opendnsButton;
@@ -72,36 +71,28 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
_opendnsButton.state = 0;
_fallbackButton.state = 0;
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-status.sh", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
[_dnscryptButton setState: 1];
}
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-familyshield-status.sh", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-familyshield-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
[_familyShieldButton setState: 1];
}
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-insecure-opendns-status.sh", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-insecure-opendns-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
[_opendnsButton setState: 1];
}
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-fallback-status.sh", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-fallback-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
[_fallbackButton setState: 1];
}
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-static-resolvers.sh", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-static-resolvers.sh", nil]];
[_staticResolversTextField setStringValue: res];
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-parental-controls-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
[_parentalControlsButton setState: 1];
}
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-query-logging-status.sh", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-query-logging-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
[_queryLoggingButton setState: 1];
}
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-lockin-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
[_lockinButton setState: 1];
}
NSString *fileContent;
fileContent = [NSString stringWithContentsOfFile: kDNSCRYPT_BLACKLIST_IPS_TMP_FILE encoding:NSUTF8StringEncoding error: nil];
if (fileContent != nil) {
@@ -144,7 +135,7 @@ 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]];
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"]) {
@@ -161,10 +152,10 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
}
[self updateLedStatus];
NSString *currentResolvers = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./get-current-resolvers.sh | ./get-upstream-resolvers.sh", nil]];
NSString *currentResolvers = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./get-current-resolvers.sh | ./get-upstream-resolvers.sh", nil]];
_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]];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./gui-pop-conf-change.sh prefpane", nil]];
if ([res isEqualToString: @"yes"]) {
[self initState];
}
@@ -187,7 +178,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
_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]];
[self fromCommand: @"/bin/csh" 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];
@@ -196,56 +187,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]];
NSString *res = [self fromCommand: @"/bin/csh" 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]];
NSString *res = [self fromCommand: @"/bin/csh" 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]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-familyshield-off.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-on.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-insecure-opendns-off.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-on.sh", nil]];
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/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-fallback-off.sh", nil]];
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;
}
@@ -290,7 +281,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
NSString *res;
static unsigned int tries;
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-tickets-count.sh", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-tickets-count.sh", nil]];
if (res.length <= 0 || [res isEqualToString: @"0"] || tries > kMAX_TRIES_AFTER_CHANGE) {
tries = 0U;
[self periodicallyUpdateStatusWithCurrentConfig];
@@ -306,10 +297,10 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
return;
}
NSString *res;
res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"/usr/local/sbin/dnscrypt-proxy --version | head -n 1", nil]];
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"/usr/local/sbin/dnscrypt-proxy --version | head -n 1", nil]];
NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString: @"\r\n<>'"];
res = [[res componentsSeparatedByCharactersInSet: charset] componentsJoinedByString: @" "];
NSString *script = [NSString stringWithFormat: @"document.querySelector('textarea[name=feedback]').value='\\n\\n\\n--\\nOpenDNS user interface for OSX " kDNSCRYPT_PACKAGE_VERSION "\\n%@'", res];;
NSString *script = [NSString stringWithFormat: @"document.querySelector('textarea[name=feedback]').value='\\n\\n\\n--\\nOpenDNS user interface for OSX " kDNSCRYPT_PACKAGE_VERSION "\\n%@'", res];
[sender stringByEvaluatingJavaScriptFromString: script];
}
@@ -400,7 +391,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
}
- (IBAction)uninstallPushed:(NSButton *)sender {
[self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_BIN_BASE_DIR @"' && /usr/bin/open ./Uninstall.app", nil]];
[self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_BIN_BASE_DIR @"' && /usr/bin/open ./Uninstall.app", nil]];
}
- (IBAction)staticResolversTextFieldChanged:(NSTextField *)sender {
@@ -409,41 +400,19 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
staticResolvers = [[staticResolvers componentsSeparatedByCharactersInSet: charset] componentsJoinedByString: @" "];
sender.stringValue = staticResolvers;
setenv("STATIC_RESOLVERS", [staticResolvers UTF8String], 1);
[self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./set-static-resolvers.sh \"$STATIC_RESOLVERS\"", staticResolvers, nil]];
}
- (BOOL) setParentalControlsOn {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-parental-controls-on.sh", nil]];
(void) res;
return TRUE;
}
- (BOOL) setParentalControlsOff {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-parental-controls-off.sh", nil]];
(void) res;
return TRUE;
}
- (IBAction)parentalControlsButtonPressed:(NSButtonCell *)sender {
if (sender.state != 0) {
[self setParentalControlsOn];
} else {
[self setParentalControlsOff];
}
[self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./set-static-resolvers.sh \"$STATIC_RESOLVERS\"", staticResolvers, nil]];
}
- (BOOL) setQueryLoggingOn {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-query-logging-on.sh", nil]];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-query-logging-on.sh", nil]];
(void) res;
return TRUE;
}
- (BOOL) setQueryLoggingOff {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-query-logging-off.sh", nil]];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-query-logging-off.sh", nil]];
(void) res;
return TRUE;
}
@@ -457,34 +426,12 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
}
- (IBAction)viewLogButtonPushed:(NSButton *)sender {
[self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"open /Applications/Utilities/Console.app " kDNSCRYPT_QUERY_LOG_FILE " || open " kDNSCRYPT_QUERY_LOG_FILE, nil]];
}
- (BOOL) setLockinOn {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-lockin-on.sh", nil]];
(void) res;
return TRUE;
}
- (BOOL) setLockinOff {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-lockin-off.sh", nil]];
(void) res;
return TRUE;
}
- (IBAction)lockinButtonPressed:(NSButton *)sender {
if (sender.state != 0) {
[self setLockinOn];
} else {
[self setLockinOff];
}
[self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"open /Applications/Utilities/Console.app " kDNSCRYPT_QUERY_LOG_FILE " || open " kDNSCRYPT_QUERY_LOG_FILE, nil]];
}
- (BOOL) updateBlacklistIPs {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./update-blacklist-ips.sh", nil]];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./update-blacklist-ips.sh", nil]];
(void) res;
return TRUE;
}
@@ -499,7 +446,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
- (BOOL) updateBlacklistDomains {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./update-blacklist-domains.sh", nil]];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./update-blacklist-domains.sh", nil]];
(void) res;
return TRUE;
}
@@ -514,7 +461,7 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
- (BOOL) updateExceptions {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/ksh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./update-exceptions.sh", nil]];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./update-exceptions.sh", nil]];
(void) res;
return TRUE;
}
@@ -529,12 +476,17 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN;
- (IBAction)helpButtonPressed:(NSButton *)sender {
if (_helpWebView.isHidden) {
[_helpWebView.window makeFirstResponder: nil];
[_helpWebView setHidden: NO];
[_helpWebView setAlphaValue: 0.0];
[_helpWebView.animator setAlphaValue: 1.0];
[_helpWebView setDrawsBackground: TRUE];
[_viewLogButton setHidden: YES];
[_queryLoggingButton setHidden: YES];
} else {
[_helpWebView.window makeFirstResponder: nil];
[_helpWebView setHidden: YES];
[_queryLoggingButton setHidden: NO];
}
}
@@ -2,7 +2,7 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1070</int>
<string key="IBDocument.SystemVersion">12C54</string>
<string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2840</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">625.00</string>
@@ -65,13 +65,13 @@
<string key="NSFrame">{{13, 10}, {563, 359}}</string>
<reference key="NSSuperview" ref="1037298196"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="42710935"/>
<reference key="NSNextKeyView" ref="1025762247"/>
<string key="NSReuseIdentifierKey">_NS:461</string>
<array class="NSMutableArray" key="NSTabViewItems">
<object class="NSTabViewItem" id="19707695">
<string key="NSIdentifier">1</string>
<object class="NSView" key="NSView" id="1025762247">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder" ref="821865429"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSButton" id="894789954">
@@ -79,6 +79,7 @@
<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>
@@ -114,13 +115,14 @@
<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>
<object class="NSButtonCell" key="NSCell" id="555340075">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Enable OpenDNS</string>
<string key="NSContents">Always use OpenDNS</string>
<reference key="NSSupport" ref="176030688"/>
<string key="NSCellIdentifier">_NS:239</string>
<reference key="NSControlView" ref="300098131"/>
@@ -140,13 +142,14 @@
<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>
<object class="NSButtonCell" key="NSCell" id="446412441">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Enable Familyshield</string>
<string key="NSContents">Always use Familyshield</string>
<object class="NSFont" key="NSSupport" id="1059912458">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">14</double>
@@ -170,6 +173,7 @@
<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>
@@ -196,6 +200,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{14, 96}, {173, 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>
@@ -236,6 +241,7 @@
<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>
@@ -260,6 +266,7 @@
<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>
@@ -289,6 +296,7 @@
<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>
@@ -326,6 +334,7 @@
</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">
@@ -356,6 +365,7 @@
</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">
@@ -378,6 +388,7 @@
<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>
@@ -414,6 +425,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>
@@ -460,6 +472,7 @@
</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"/>
@@ -474,7 +487,7 @@
<boolean value="NO" key="WebKitDisplayImagesKey"/>
<boolean value="NO" key="WebKitJavaEnabled"/>
<boolean value="NO" key="WebKitJavaScriptCanOpenWindowsAutomatically"/>
<boolean value="NO" key="WebKitJavaScriptEnabled"/>
<boolean value="YES" key="WebKitJavaScriptEnabled"/>
<integer value="1" key="WebKitMinimumFontSize"/>
<boolean value="NO" key="WebKitPluginsEnabled"/>
</dictionary>
@@ -487,6 +500,7 @@
<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>
@@ -508,6 +522,8 @@
</object>
</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>
@@ -518,15 +534,14 @@
<object class="NSTabViewItem" id="359976024">
<string key="NSIdentifier">2</string>
<object class="NSView" key="NSView" id="42710935">
<reference key="NSNextResponder" ref="821865429"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="826224678">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{5, 293}, {406, 17}}</string>
<string key="NSFrame">{{5, 236}, {406, 17}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1038497103"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -545,10 +560,9 @@
<object class="NSTextField" id="1038497103">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{8, 270}, {526, 22}}</string>
<string key="NSFrame">{{8, 206}, {526, 22}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="763894061"/>
<reference key="NSNextKeyView" ref="11113535"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="684654118">
@@ -577,69 +591,12 @@
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="6419610">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{6, 215}, {455, 18}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="30650809"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="402685960">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">268435456</int>
<string key="NSContents">Lock-in the current network settings and use them even on roaming</string>
<reference key="NSSupport" ref="831984564"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="6419610"/>
<int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="338365942"/>
<reference key="NSAlternateImage" ref="875688652"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="763894061">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{6, 242}, {195, 18}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="679502487"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="931675753">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">268435456</int>
<string key="NSContents">Advanced parental controls</string>
<reference key="NSSupport" ref="831984564"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="763894061"/>
<int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="338365942"/>
<reference key="NSAlternateImage" ref="875688652"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="679502487">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{284, 242}, {126, 18}}</string>
<string key="NSFrame">{{7, 281}, {126, 18}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="985341605"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
@@ -665,10 +622,9 @@
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{446, 234}, {94, 32}}</string>
<string key="NSFrame">{{161, 273}, {94, 32}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="6419610"/>
<reference key="NSNextKeyView" ref="960794720"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="252019693">
@@ -690,9 +646,8 @@
<object class="NSTextField" id="25489948">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{9, 26}, {169, 141}}</string>
<string key="NSFrame">{{10, 7}, {169, 141}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="583617410"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSAntiCompressionPriority">{250, 750}</string>
@@ -722,9 +677,8 @@ LjQzLjEwCjo6MQ</string>
<object class="NSTextField" id="583617410">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{187, 26}, {169, 141}}</string>
<string key="NSFrame">{{188, 7}, {169, 141}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="902108600"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSAntiCompressionPriority">{250, 750}</string>
@@ -750,10 +704,9 @@ aW91cy5leGFtcGxlLm5ldA</string>
<object class="NSTextField" id="902108600">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{365, 26}, {169, 141}}</string>
<string key="NSFrame">{{366, 7}, {169, 141}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="960794720"/>
<reference key="NSNextKeyView" ref="821865429"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSAntiCompressionPriority">{250, 750}</string>
<bool key="NSEnabled">YES</bool>
@@ -777,9 +730,8 @@ aW91cy5leGFtcGxlLm5ldA</string>
<object class="NSTextField" id="11113535">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{6, 170}, {175, 34}}</string>
<string key="NSFrame">{{7, 156}, {175, 34}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="546014897"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSAntiCompressionPriority">{250, 750}</string>
@@ -804,9 +756,8 @@ aW91cy5leGFtcGxlLm5ldA</string>
<object class="NSTextField" id="546014897">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{185, 170}, {175, 34}}</string>
<string key="NSFrame">{{186, 156}, {175, 34}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="567741681"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSAntiCompressionPriority">{250, 750}</string>
@@ -827,9 +778,8 @@ aW91cy5leGFtcGxlLm5ldA</string>
<object class="NSTextField" id="567741681">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{362, 170}, {175, 34}}</string>
<string key="NSFrame">{{363, 156}, {175, 34}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="25489948"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSAntiCompressionPriority">{250, 750}</string>
@@ -851,10 +801,9 @@ aW91cy5leGFtcGxlLm5ldA</string>
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{511, 0}, {25, 25}}</string>
<string key="NSFrame">{{503, 277}, {25, 25}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<reference key="NSNextKeyView" ref="228385556"/>
<string key="NSReuseIdentifierKey">_NS:1598</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="933364045">
@@ -876,9 +825,8 @@ aW91cy5leGFtcGxlLm5ldA</string>
<object class="NSTextField" id="960794720">
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{477, 6}, {33, 17}}</string>
<string key="NSFrame">{{467, 284}, {33, 17}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="988915282"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
@@ -898,10 +846,9 @@ aW91cy5leGFtcGxlLm5ldA</string>
<reference key="NSNextResponder" ref="42710935"/>
<int key="NSvFlags">12</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{8, 206}, {526, 5}}</string>
<string key="NSFrame">{{9, 265}, {526, 5}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="11113535"/>
<reference key="NSNextKeyView" ref="826224678"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -940,9 +887,8 @@ aW91cy5leGFtcGxlLm5ldA</string>
<string>public.url</string>
<string>public.url-name</string>
</set>
<string key="NSFrame">{{3, 26}, {536, 284}}</string>
<string key="NSFrame">{{3, -3}, {536, 278}}</string>
<reference key="NSSuperview" ref="42710935"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="FrameName"/>
@@ -967,9 +913,7 @@ aW91cy5leGFtcGxlLm5ldA</string>
</object>
</array>
<string key="NSFrame">{{10, 33}, {543, 313}}</string>
<reference key="NSSuperview" ref="821865429"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="228385556"/>
<reference key="NSNextKeyView" ref="679502487"/>
</object>
<string key="NSLabel">Advanced</string>
<reference key="NSColor" ref="281676087"/>
@@ -1014,8 +958,9 @@ aW91cy5leGFtcGxlLm5ldA</string>
<object class="NSButton" id="231106999">
<reference key="NSNextResponder" ref="521420514"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{11, -3}, {95, 32}}</string>
<string key="NSFrame">{{437, -5}, {95, 32}}</string>
<reference key="NSSuperview" ref="521420514"/>
<reference key="NSNextKeyView" ref="821865429"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="132642450">
@@ -1135,13 +1080,13 @@ aW91cy5leGFtcGxlLm5ldA</string>
<reference key="NSTabView" ref="821865429"/>
</object>
</array>
<reference key="NSSelectedTabViewItem" ref="359976024"/>
<reference key="NSSelectedTabViewItem" ref="19707695"/>
<reference key="NSFont" ref="604491631"/>
<int key="NSTvFlags">0</int>
<bool key="NSAllowTruncatedLabels">YES</bool>
<bool key="NSDrawsBackground">YES</bool>
<array class="NSMutableArray" key="NSSubviews">
<reference ref="42710935"/>
<reference ref="1025762247"/>
</array>
</object>
</array>
@@ -1345,30 +1290,6 @@ aW91cy5leGFtcGxlLm5ldA</string>
</object>
<int key="connectionID">433</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">parentalControlsButton</string>
<reference key="source" ref="294453543"/>
<reference key="destination" ref="763894061"/>
</object>
<int key="connectionID">434</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">parentalControlsButtonPressed:</string>
<reference key="source" ref="294453543"/>
<reference key="destination" ref="931675753"/>
</object>
<int key="connectionID">436</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">queryLoggingButton</string>
<reference key="source" ref="294453543"/>
<reference key="destination" ref="164894774"/>
</object>
<int key="connectionID">437</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">viewLogButtonPushed:</string>
@@ -1377,22 +1298,6 @@ aW91cy5leGFtcGxlLm5ldA</string>
</object>
<int key="connectionID">441</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">lockinButton</string>
<reference key="source" ref="294453543"/>
<reference key="destination" ref="6419610"/>
</object>
<int key="connectionID">442</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">lockinButtonPressed:</string>
<reference key="source" ref="294453543"/>
<reference key="destination" ref="6419610"/>
</object>
<int key="connectionID">443</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">blacklistIPsTextField</string>
@@ -1465,6 +1370,22 @@ aW91cy5leGFtcGxlLm5ldA</string>
</object>
<int key="connectionID">453</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">viewLogButton</string>
<reference key="source" ref="294453543"/>
<reference key="destination" ref="985341605"/>
</object>
<int key="connectionID">457</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">queryLoggingButton</string>
<reference key="source" ref="294453543"/>
<reference key="destination" ref="679502487"/>
</object>
<int key="connectionID">458</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -1803,20 +1724,18 @@ aW91cy5leGFtcGxlLm5ldA</string>
<reference key="object" ref="42710935"/>
<array class="NSMutableArray" key="children">
<reference ref="25489948"/>
<reference ref="583617410"/>
<reference ref="902108600"/>
<reference ref="1038497103"/>
<reference ref="826224678"/>
<reference ref="679502487"/>
<reference ref="985341605"/>
<reference ref="988915282"/>
<reference ref="960794720"/>
<reference ref="30650809"/>
<reference ref="11113535"/>
<reference ref="546014897"/>
<reference ref="567741681"/>
<reference ref="988915282"/>
<reference ref="1038497103"/>
<reference ref="6419610"/>
<reference ref="763894061"/>
<reference ref="679502487"/>
<reference ref="826224678"/>
<reference ref="960794720"/>
<reference ref="30650809"/>
<reference ref="902108600"/>
<reference ref="583617410"/>
<reference ref="985341605"/>
<reference ref="228385556"/>
</array>
<reference key="parent" ref="359976024"/>
@@ -1847,19 +1766,6 @@ aW91cy5leGFtcGxlLm5ldA</string>
<reference key="object" ref="684654118"/>
<reference key="parent" ref="1038497103"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">396</int>
<reference key="object" ref="6419610"/>
<array class="NSMutableArray" key="children">
<reference ref="402685960"/>
</array>
<reference key="parent" ref="42710935"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">397</int>
<reference key="object" ref="402685960"/>
<reference key="parent" ref="6419610"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">398</int>
<reference key="object" ref="679502487"/>
@@ -1964,19 +1870,6 @@ aW91cy5leGFtcGxlLm5ldA</string>
<reference key="object" ref="1022329366"/>
<reference key="parent" ref="567741681"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">414</int>
<reference key="object" ref="763894061"/>
<array class="NSMutableArray" key="children">
<reference ref="931675753"/>
</array>
<reference key="parent" ref="42710935"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">415</int>
<reference key="object" ref="931675753"/>
<reference key="parent" ref="763894061"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">416</int>
<reference key="object" ref="988915282"/>
@@ -2118,8 +2011,6 @@ aW91cy5leGFtcGxlLm5ldA</string>
</object>
</dictionary>
<string key="393.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="396.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="397.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="398.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="399.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="400.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -2136,8 +2027,6 @@ aW91cy5leGFtcGxlLm5ldA</string>
<string key="411.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="412.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="413.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="414.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="415.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="416.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="417.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="423.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -2163,7 +2052,7 @@ aW91cy5leGFtcGxlLm5ldA</string>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">453</int>
<int key="maxID">458</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -2178,10 +2067,8 @@ aW91cy5leGFtcGxlLm5ldA</string>
<string key="fallbackButtonPressed:">NSButton</string>
<string key="familyShieldButtonPressed:">NSButton</string>
<string key="helpButtonPressed:">NSButton</string>
<string key="lockinButtonPressed:">NSButton</string>
<string key="openDNSLinkPushed:">NSButton</string>
<string key="opendnsButtonPressed:">NSButton</string>
<string key="parentalControlsButtonPressed:">NSButtonCell</string>
<string key="queryLoggingButtonPressed:">NSButtonCell</string>
<string key="staticResolversTextFieldChanged:">NSTextField</string>
<string key="uninstallPushed:">NSButton</string>
@@ -2216,10 +2103,6 @@ aW91cy5leGFtcGxlLm5ldA</string>
<string key="name">helpButtonPressed:</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBActionInfo" key="lockinButtonPressed:">
<string key="name">lockinButtonPressed:</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBActionInfo" key="openDNSLinkPushed:">
<string key="name">openDNSLinkPushed:</string>
<string key="candidateClassName">NSButton</string>
@@ -2228,10 +2111,6 @@ aW91cy5leGFtcGxlLm5ldA</string>
<string key="name">opendnsButtonPressed:</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBActionInfo" key="parentalControlsButtonPressed:">
<string key="name">parentalControlsButtonPressed:</string>
<string key="candidateClassName">NSButtonCell</string>
</object>
<object class="IBActionInfo" key="queryLoggingButtonPressed:">
<string key="name">queryLoggingButtonPressed:</string>
<string key="candidateClassName">NSButtonCell</string>
@@ -2261,17 +2140,16 @@ aW91cy5leGFtcGxlLm5ldA</string>
<string key="familyShieldButton">NSButton</string>
<string key="feedbackWebView">WebView</string>
<string key="helpWebView">WebView</string>
<string key="lockinButton">NSButton</string>
<string key="opendnsButton">NSButton</string>
<string key="parentalControlsButton">NSButton</string>
<string key="previewNotesWebView">WebView</string>
<string key="queryLoggingButton">NSButtonCell</string>
<string key="queryLoggingButton">NSButton</string>
<string key="releaseNotesTabViewItem">NSTabViewItem</string>
<string key="releaseNotesWebView">WebView</string>
<string key="staticResolversTextField">NSTextFieldCell</string>
<string key="statusImageView">NSImageView</string>
<string key="statusText">NSTextField</string>
<string key="tabView">NSTabView</string>
<string key="viewLogButton">NSButton</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="aboutTabViewItem">
@@ -2318,25 +2196,17 @@ aW91cy5leGFtcGxlLm5ldA</string>
<string key="name">helpWebView</string>
<string key="candidateClassName">WebView</string>
</object>
<object class="IBToOneOutletInfo" key="lockinButton">
<string key="name">lockinButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="opendnsButton">
<string key="name">opendnsButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="parentalControlsButton">
<string key="name">parentalControlsButton</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="queryLoggingButton">
<string key="name">queryLoggingButton</string>
<string key="candidateClassName">NSButtonCell</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="releaseNotesTabViewItem">
<string key="name">releaseNotesTabViewItem</string>
@@ -2362,6 +2232,10 @@ aW91cy5leGFtcGxlLm5ldA</string>
<string key="name">tabView</string>
<string key="candidateClassName">NSTabView</string>
</object>
<object class="IBToOneOutletInfo" key="viewLogButton">
<string key="name">viewLogButton</string>
<string key="candidateClassName">NSButton</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
@@ -22,17 +22,6 @@
of default DNS resolvers, enter their IP addresses in this box.
%p
Separate them with spaces.
%section
%h2 Advanced parental controls
%p
When using DNSCrypt, this will block the following list of OpenDNS
categories: lingerie/bikini, adult themes, nudity,
pornography, proxy/anonymizer, sexuality and tasteless.
%p
If you have an OpenDNS account and network settings defined
for your current location, the network settings will override the
advanced parental controls. Having an OpenDNS account allows
finer granularity access controls, building reports and more.
%section
%h2 Log DNS queries
%p
@@ -50,26 +39,6 @@
%p
The "View log" button opens it with the log viewer application
so that you can watch it in real time.
%section
%h2 Lock-in the current network settings
%p
If you have an OpenDNS account, and OpenDNS network settings
defined for your current location, you can make these
persistent.
%p
Checking this box will make the user interface remember what
your current network is.
%p
If you are roaming, the settings for this network will still be
used, no matter what actual network you are connected to.
%p
That way, you can stay protected from botnets, malware,
phishing and block unwanted content, even when using public
Wi-Fi hotspots.
%p
This feature is currently not compatible with the OpenDNS IP
updater. If your ISP assigns dynamic IP addresses, use either
the OpenDNS IP updater or the DNSCrypt lock-in feature, but not both.
%section
%h2 IP addresses blocking
%p
@@ -121,3 +90,20 @@
%p
Domains listed here will bypass DNSCrypt in order to be sent
to the default resolvers.
%p
Do
%strong not
use a tool like hostip(8), drill(1), unbound-host(1), dig(1) or host(1)
in order to check that an exception rule works.
%p
These tools use their own resolution mechanisms that have nothing
to do with how others apps on your system are resolving names.
%p
They don't use the OSX-specific stub resolver, they don't use
the system-wide DNS cache, they have bugs and limitations that the OS
doesn't have (and the opposite is also true), and they don't know a
thing about specific resolvers that have to be used for specific
domains.
%p
Use actual apps, or even a command like ping(8).
@@ -27,20 +27,6 @@
Separate them with spaces.
</p>
</section>
<section>
<h2>Advanced parental controls</h2>
<p>
When using DNSCrypt, this will block the following list of OpenDNS
categories: lingerie/bikini, adult themes, nudity,
pornography, proxy/anonymizer, sexuality and tasteless.
</p>
<p>
If you have an OpenDNS account and network settings defined
for your current location, the network settings will override the
advanced parental controls. Having an OpenDNS account allows
finer granularity access controls, building reports and more.
</p>
</section>
<section>
<h2>Log DNS queries</h2>
<p>
@@ -63,32 +49,6 @@
so that you can watch it in real time.
</p>
</section>
<section>
<h2>Lock-in the current network settings</h2>
<p>
If you have an OpenDNS account, and OpenDNS network settings
defined for your current location, you can make these
persistent.
</p>
<p>
Checking this box will make the user interface remember what
your current network is.
</p>
<p>
If you are roaming, the settings for this network will still be
used, no matter what actual network you are connected to.
</p>
<p>
That way, you can stay protected from botnets, malware,
phishing and block unwanted content, even when using public
Wi-Fi hotspots.
</p>
<p>
This feature is currently not compatible with the OpenDNS IP
updater. If your ISP assigns dynamic IP addresses, use either
the OpenDNS IP updater or the DNSCrypt lock-in feature, but not both.
</p>
</section>
<section>
<h2>IP addresses blocking</h2>
<p>
@@ -156,6 +116,26 @@
Domains listed here will bypass DNSCrypt in order to be sent
to the default resolvers.
</p>
<p>
Do
<strong>not</strong>
use a tool like hostip(8), drill(1), unbound-host(1), dig(1) or host(1)
in order to check that an exception rule works.
</p>
<p>
These tools use their own resolution mechanisms that have nothing
to do with how others apps on your system are resolving names.
</p>
<p>
They don't use the OSX-specific stub resolver, they don't use
the system-wide DNS cache, they have bugs and limitations that the OS
doesn't have (and the opposite is also true), and they don't know a
thing about specific resolvers that have to be used for specific
domains.
</p>
<p>
Use actual apps, or even a command like ping(8).
</p>
</section>
</body>
</html>
@@ -21,6 +21,29 @@
%body
%h1 Release Notes for the user interface
%article
%h2 Version 0.19
%time Wed, 10 Oct 2012
%ul
%li dnscrypt-proxy has been updated to version 1.2.0.
%li Detection of IPv6 connectivity is now faster and more reliable.
%li
AAAA queries are filtered out on networks with no IPv6
connectivity in order to significantly reduce latency.
%article
%h2 Version 0.18
%time Wed, 3 Oct 2012
%ul
%li
freebox.fr has been added to the default list of domains
for which DNSCrypt should be bypassed.
%li
If a static resolvers set has been specified, this will now be
used for exceptions instead of DHCP-provided servers.
%li
Minor cosmetic fixes and documentation improvements have been
made.
%article
%h2 Version 0.17
%time Fri, 28 Sep 2012
@@ -30,15 +53,9 @@
%li
Static default DNS resolvers can now be used instead of
having them provided by a DHCP server.
%li Advanced parental controls.
%li
Logging: outgoing queries can now be logged and displayed in
real time.
%li
OpenDNS networks settings lock-in: use your own network
settings no matter what actual network you are connected to.
Now, you can stay protected from botnets, malware, phishing, and
block unwanted content, even when using public Wi-Fi hotspots.
%li
IP-based blocking: DNS responses containing IP addresses
present in a user-defined set of addresses can be blocked.
@@ -23,6 +23,36 @@
</head>
<body>
<h1>Release Notes for the user interface</h1>
<article>
<h2>Version 0.19</h2>
<time>Wed, 10 Oct 2012</time>
<ul>
<li>dnscrypt-proxy has been updated to version 1.2.0.</li>
<li>Detection of IPv6 connectivity is now faster and more reliable.</li>
<li>
AAAA queries are filtered out on networks with no IPv6
connectivity in order to significantly reduce latency.
</li>
</ul>
</article>
<article>
<h2>Version 0.18</h2>
<time>Wed, 3 Oct 2012</time>
<ul>
<li>
freebox.fr has been added to the default list of domains
for which DNSCrypt should be bypassed.
</li>
<li>
If a static resolvers set has been specified, this will now be
used for exceptions instead of DHCP-provided servers.
</li>
<li>
Minor cosmetic fixes and documentation improvements have been
made.
</li>
</ul>
</article>
<article>
<h2>Version 0.17</h2>
<time>Fri, 28 Sep 2012</time>
@@ -33,17 +63,10 @@
Static default DNS resolvers can now be used instead of
having them provided by a DHCP server.
</li>
<li>Advanced parental controls.</li>
<li>
Logging: outgoing queries can now be logged and displayed in
real time.
</li>
<li>
OpenDNS networks settings lock-in: use your own network
settings no matter what actual network you are connected to.
Now, you can stay protected from botnets, malware, phishing, and
block unwanted content, even when using public Wi-Fi hotspots.
</li>
<li>
IP-based blocking: DNS responses containing IP addresses
present in a user-defined set of addresses can be blocked.
@@ -8,7 +8,8 @@ try_resolution() {
}
try_http_query() {
exec alarmer 5 curl -m 5 http://www.opendns.com 2>/dev/null | \
exec alarmer 5 curl -L --max-redirs 5 -4 -m 5 \
http://guide.opendns.com/main 2>/dev/null | \
fgrep -ic OpenDNS > /dev/null 2>&1
}
@@ -19,9 +19,7 @@ DNSCRYPT_PROXY_PLUGINS_BASE_FILE="${CONTROL_DIR}/plugin"
STATIC_RESOLVERS_FILE="${CONTROL_DIR}/static-resolvers"
PLUGINS_ENABLED_FILE="${CONTROL_DIR}/plugins.enabled"
PARENTAL_CONTROLS_FILE="${CONTROL_DIR}/plugin-parental-controls.enabled"
QUERY_LOGGING_FILE="${CONTROL_DIR}/plugin-query-logging.enabled"
LOCKIN_FILE="${CONTROL_DIR}/plugin-lockin.enabled"
BLOCKING_FILE="${CONTROL_DIR}/plugin-blocking.enabled"
QUERY_LOG_FILE="/var/log/dnscrypt-query.log"
@@ -40,7 +38,7 @@ INTERFACE_PROBES="127.0.0.55"
INTERFACE_PROBES_MASK="24"
DOMAINS_EXCEPTIONS='
fritz.box intranet lan localdomain nowtv.com private routerlogin.net
freebox.fr fritz.box intranet lan localdomain nowtv.com private routerlogin.net
'
export PATH="${DNSCRYPT_USR_BASE_DIR}/bin:${DNSCRYPT_USR_BASE_DIR}/scripts:$PATH"
@@ -39,8 +39,7 @@ remove_old_exceptions() {
}
}
name_servers=$(get_dhcp_dns || get_gw)
name_servers=$(./get-static-resolvers.sh || get_dhcp_dns || get_gw)
[ x"$name_servers" = 'x' ] && exit 0
default_domain=$(./get-current-default-domain.sh)
@@ -1,9 +0,0 @@
#! /bin/sh
. ./common.inc
if [ -e "$LOCKIN_FILE" ]; then
echo 'yes'
else
echo 'no'
fi
@@ -1,9 +0,0 @@
#! /bin/sh
. ./common.inc
if [ -e "$PARENTAL_CONTROLS_FILE" ]; then
echo 'yes'
else
echo 'no'
fi
@@ -2,4 +2,6 @@
. ./common.inc
[ -r "$STATIC_RESOLVERS_FILE" ] && cat "$STATIC_RESOLVERS_FILE"
[ -r "$STATIC_RESOLVERS_FILE" ] && cat "$STATIC_RESOLVERS_FILE" && exit 0
exit 1
@@ -66,8 +66,8 @@ get_plugin_args() {
./stop-dnscrypt-proxy.sh
ping6 -c 1 2620:0:ccc::2 > /dev/null 2>&1
ipv6_supported="no"
ping6 -c 1 2620:0:ccc::2 > /dev/null 2>&1
[ $? = 0 ] && ipv6_supported="yes"
familyshield_wanted="no"
@@ -127,6 +127,9 @@ plugins_args=''
if [ -r "${DNSCRYPT_PROXY_PLUGINS_BASE_FILE}s.enabled" ]; then
plugin_args=$(get_plugin_args)
fi
[ "$ipv6_supported" = "no" ] && \
plugin_args="${plugin_args} --plugin=libdcplugin_example_ldns_aaaa_blocking.la"
best_args=$(cat "${RES_DIR}/${best_file}")
eval dnscrypt-proxy $best_args --local-address="$INTERFACE_PROXY" \
@@ -1,7 +0,0 @@
#! /bin/sh
. ./common.inc
rm -f "$LOCKIN_FILE"
touch "$LOCKIN_ENABLED_FILE"
@@ -1,42 +0,0 @@
#! /bin/sh
. ./common.inc
get_opendns_config() {
exec dig +tries=3 +time=3 +short txt debug.opendns.com @208.67.222.222
}
get_client_ip() {
local client_ip=''
local has_thing_id='false'
while read line; do
case "$line" in
\"id\ *) has_thing_id='true' ;;
\"source\ *) client_ip=$(echo "$line" | cut -d' ' -f2 | cut -d ':' -f1) ;;
esac
done
[ x"$client_ip" != 'x' ] && echo "$client_ip" | egrep '^[0-9.]{1,15}$'
}
hex_ip() {
local dec="$1"
local hex=''
local OIFS="$IFS"
local p
IFS='.'
for p in $dec; do
hex="${hex}$(printf '%02x' $p)"
done
IFS="$OIFS"
echo "$hex"
}
client_ip=$(get_opendns_config | get_client_ip) || exit 1
client_ip_hex=$(hex_ip "$client_ip")
echo "libdcplugin_example_ldns_opendns_set_client_ip.la,${client_ip_hex}" > \
"$LOCKIN_FILE"
touch "$PLUGINS_ENABLED_FILE"
@@ -1,7 +0,0 @@
#! /bin/sh
. ./common.inc
rm -f "$PARENTAL_CONTROLS_FILE"
@@ -1,8 +0,0 @@
#! /bin/sh
. ./common.inc
echo 'libdcplugin_example_ldns_opendns_parental_control.la' > \
"$PARENTAL_CONTROLS_FILE"
touch "$PLUGINS_ENABLED_FILE"
@@ -12,7 +12,7 @@ PAUSE_INCREMENT=0.1
pause=0
while [ -e "$DNSCRYPT_FILE" ]; do
current_resolvers=$(./get-current-resolvers.sh)
if [ "$current_resolvers" = '127.0.0.54' ]; then
if [ "$current_resolvers" = "$INTERFACE_PROXY" ]; then
if [ ! -e "$PROXY_PID_FILE" ]; then
./start-dnscrypt-proxy.sh || ./switch-to-dhcp.sh
fi
@@ -20,7 +20,7 @@ while [ -e "$DNSCRYPT_FILE" ]; do
if [ $pause -lt $PAUSE_MAX ]; then
pause=$((pause + $PAUSE_INCREMENT))
fi
sleep $pause
sleep $pause
./check-hijacking.sh || continue
./start-dnscrypt-proxy.sh || continue
./check-local-dns.sh || continue