From f16b2c271779963f8dd511badf599a51dc2a835c Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Tue, 25 Sep 2012 22:40:45 +0200 Subject: [PATCH] Add support for advanced parental controls, move the whole thing to 0.17 beta. --- .../DNSCrypt-Menubar-Info.plist | 4 +- .../DNSCrypt-OSX-Installer.pkgproj | 200 +++++++++++++++++- DNSCrypt-OSX-Installer/sign.sh | 2 +- .../DNSCrypt/DNSCrypt-Info.plist | 4 +- DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h | 4 +- DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m | 27 +++ .../DNSCrypt/en.lproj/DNSCrypt.xib | 30 ++- .../DNSCrypt/extra/usr/scripts/common.inc | 3 + .../scripts/get-parental-controls-status.sh | 9 + .../scripts/switch-parental-controls-off.sh | 7 + .../scripts/switch-parental-controls-on.sh | 8 + 11 files changed, 286 insertions(+), 12 deletions(-) create mode 100755 DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/get-parental-controls-status.sh create mode 100755 DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/switch-parental-controls-off.sh create mode 100755 DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/switch-parental-controls-on.sh diff --git a/DNSCrypt-Menubar/DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist b/DNSCrypt-Menubar/DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist index aa8fc4c..ed60424 100644 --- a/DNSCrypt-Menubar/DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist +++ b/DNSCrypt-Menubar/DNSCrypt-Menubar/DNSCrypt-Menubar-Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.16 (beta) + 0.17 (beta) CFBundleSignature ???? CFBundleVersion - 0.16 + 0.17 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion diff --git a/DNSCrypt-OSX-Installer/DNSCrypt-OSX-Installer.pkgproj b/DNSCrypt-OSX-Installer/DNSCrypt-OSX-Installer.pkgproj index 74e1634..d530d2c 100755 --- a/DNSCrypt-OSX-Installer/DNSCrypt-OSX-Installer.pkgproj +++ b/DNSCrypt-OSX-Installer/DNSCrypt-OSX-Installer.pkgproj @@ -441,6 +441,200 @@ UID 0 + + CHILDREN + + + CHILDREN + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_blocking.la + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_blocking.so + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_deviceid.la + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_deviceid.so + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_parental_control.la + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_parental_control.so + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_set_client_ip.la + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_ldns_opendns_set_client_ip.so + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_logging.la + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 0 + PATH + /usr/local/lib/dnscrypt-proxy/libdcplugin_example_logging.so + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + GID + 0 + PATH + dnscrypt-proxy + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 2 + UID + 0 + + + GID + 0 + PATH + lib + PATH_TYPE + 0 + PERMISSIONS + 493 + TYPE + 2 + UID + 0 + CHILDREN @@ -634,7 +828,7 @@ USE_HFS+_COMPRESSION VERSION - 1.1.0.2 + 1.1.0.4 UUID 7F7D70AB-F7A2-4027-8304-3063C7B9532F @@ -1241,7 +1435,7 @@ USE_HFS+_COMPRESSION VERSION - 0.16 + 0.17 TYPE 0 @@ -1734,7 +1928,7 @@ USE_HFS+_COMPRESSION VERSION - 0.16 + 0.17 TYPE 0 diff --git a/DNSCrypt-OSX-Installer/sign.sh b/DNSCrypt-OSX-Installer/sign.sh index 40edca9..84ec3a2 100755 --- a/DNSCrypt-OSX-Installer/sign.sh +++ b/DNSCrypt-OSX-Installer/sign.sh @@ -1,6 +1,6 @@ #! /bin/sh -VERSION='0.16' +VERSION='0.17-dev' cd build || exit 1 ( diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt-Info.plist b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt-Info.plist index 623a54e..2e59eec 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt-Info.plist +++ b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt-Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 0.16 + 0.17 CFBundleSignature ???? CFBundleVersion - 0.16 + 0.17 NSHumanReadableCopyright Copyright © 2011-2012 OpenDNS Inc. All rights reserved. NSMainNibFile diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h index c2d7660..0fb0579 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h +++ b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.h @@ -9,7 +9,7 @@ #import #import -#define kDNSCRYPT_PACKAGE_VERSION @"0.16" +#define kDNSCRYPT_PACKAGE_VERSION @"0.17" #define kDNSCRYPT_PREFPANE_APP_PATH @"/Library/PreferencePanes/DNSCrypt.prefPane" #define kDNSCRYPT_USR_BASE_DIR kDNSCRYPT_PREFPANE_APP_PATH @"/Contents/Resources/usr" @@ -50,6 +50,7 @@ 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; - (void) mainViewDidLoad; @@ -61,5 +62,6 @@ typedef enum { - (IBAction)openDNSLinkPushed:(NSButton *)sender; - (IBAction)uninstallPushed:(NSButton *)sender; - (IBAction)staticResolversTextFieldChanged:(NSTextField *)sender; +- (IBAction)parentalControlsButtonPressed:(NSButtonCell *)sender; @end diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m index aa2ee16..2f9ca65 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m +++ b/DNSCrypt-Preference-Pane/DNSCrypt/DNSCrypt.m @@ -17,6 +17,7 @@ @synthesize feedbackWebView = _feedbackWebView; @synthesize aboutWebView = _aboutWebView; @synthesize staticResolversTextField = _staticResolversTextField; +@synthesize parentalControlsButton = _parentalControlsButton; @synthesize dnscryptButton = _dnscryptButton; @synthesize opendnsButton = _opendnsButton; @synthesize fallbackButton = _fallbackButton; @@ -83,6 +84,10 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; } res = [self fromCommand: @"/bin/ksh" 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]; + } } - (void) updateLedStatus @@ -369,4 +374,26 @@ DNSConfigurationState currentState = kDNS_CONFIGURATION_UNKNOWN; [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]; + } +} + @end diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/en.lproj/DNSCrypt.xib b/DNSCrypt-Preference-Pane/DNSCrypt/en.lproj/DNSCrypt.xib index 95e7dea..6ebe8a7 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/en.lproj/DNSCrypt.xib +++ b/DNSCrypt-Preference-Pane/DNSCrypt/en.lproj/DNSCrypt.xib @@ -65,7 +65,6 @@ {{13, 10}, {563, 359}} - _NS:461 @@ -842,7 +841,6 @@ aW91cy5leGFtcGxlLm5ldA {{511, 0}, {25, 25}} - _NS:1598 YES @@ -1344,6 +1342,22 @@ aW91cy5leGFtcGxlLm5ldA 433 + + + parentalControlsButton + + + + 434 + + + + parentalControlsButtonPressed: + + + + 436 + @@ -2063,7 +2077,7 @@ aW91cy5leGFtcGxlLm5ldA - 433 + 436 @@ -2076,6 +2090,7 @@ aW91cy5leGFtcGxlLm5ldA NSButton NSButton NSButton + NSButtonCell NSTextField NSButton @@ -2100,6 +2115,10 @@ aW91cy5leGFtcGxlLm5ldA opendnsButtonPressed: NSButton + + parentalControlsButtonPressed: + NSButtonCell + staticResolversTextFieldChanged: NSTextField @@ -2118,6 +2137,7 @@ aW91cy5leGFtcGxlLm5ldA NSButton WebView NSButton + NSButton WebView NSTabViewItem WebView @@ -2159,6 +2179,10 @@ aW91cy5leGFtcGxlLm5ldA opendnsButton NSButton + + parentalControlsButton + NSButton + previewNotesWebView WebView diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/common.inc b/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/common.inc index d3c3772..ef6b67f 100644 --- a/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/common.inc +++ b/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/common.inc @@ -18,6 +18,9 @@ HANDLERS_LOCK_FILE="/var/run/dnscrypt-handlers.lock" DOMAINS_EXCEPTIONS_FILE="${CONTROL_DIR}/domains-exceptions" 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" + INTERFACE_UNBOUND="127.0.0.53" INTERFACE_UNBOUND_MASK="24" diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/get-parental-controls-status.sh b/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/get-parental-controls-status.sh new file mode 100755 index 0000000..08c8ffd --- /dev/null +++ b/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/get-parental-controls-status.sh @@ -0,0 +1,9 @@ +#! /bin/sh + +. ./common.inc + +if [ -e "$PARENTAL_CONTROLS_FILE" ]; then + echo 'yes' +else + echo 'no' +fi diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/switch-parental-controls-off.sh b/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/switch-parental-controls-off.sh new file mode 100755 index 0000000..075854d --- /dev/null +++ b/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/switch-parental-controls-off.sh @@ -0,0 +1,7 @@ +#! /bin/sh + +. ./common.inc + +rm -f "$PARENTAL_CONTROLS_FILE" + + diff --git a/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/switch-parental-controls-on.sh b/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/switch-parental-controls-on.sh new file mode 100755 index 0000000..5b7d67d --- /dev/null +++ b/DNSCrypt-Preference-Pane/DNSCrypt/extra/usr/scripts/switch-parental-controls-on.sh @@ -0,0 +1,8 @@ +#! /bin/sh + +. ./common.inc + +echo 'libdcplugin_example_ldns_opendns_parental_control.la' > \ + "$PARENTAL_CONTROLS_FILE" +touch "$PLUGINS_ENABLED_FILE" +