Add a button to the preference pane to disable ipv6

This commit is contained in:
Alter Step
2015-07-28 00:01:18 +02:00
parent a9d852b76d
commit 6ca7749d9b
4 changed files with 103 additions and 10 deletions
@@ -38,6 +38,7 @@ typedef enum {
NSButton *_dnscryptButton;
NSButton *_fallbackButton;
NSButton *_disableIPv6Button;
NSTextField *_currentResolverTextField;
NSImageView *_statusImageView;
@@ -59,6 +60,7 @@ typedef enum {
@property (nonatomic, strong) IBOutlet NSButton *dnscryptButton;
@property (nonatomic, strong) IBOutlet NSButton *fallbackButton;
@property (nonatomic, strong) IBOutlet NSButton *disableIPv6Button;
@property (nonatomic, strong) IBOutlet NSTextField *currentResolverTextField;
@property (nonatomic, strong) IBOutlet NSImageView *statusImageView;
@@ -84,6 +86,7 @@ typedef enum {
- (IBAction)dnscryptButtonPressed:(NSButton *)sender;
- (IBAction)fallbackButtonPressed:(NSButton *)sender;
- (IBAction)disableIPv6ButtonPressed:(NSButton *)sender;
- (IBAction)providerLinkPushed:(NSButton *)sender;
- (IBAction)uninstallPushed:(NSButton *)sender;
@@ -16,6 +16,7 @@
@synthesize exceptionsTextField = _exceptionsTextField;
@synthesize dnscryptButton = _dnscryptButton;
@synthesize fallbackButton = _fallbackButton;
@synthesize disableIPv6Button = _disableIPv6Button;
@synthesize statusImageView = _statusImageView;
@synthesize statusText = _statusText;
@synthesize currentResolverTextField = _currentResolverTextField;
@@ -55,6 +56,7 @@ NSArray *resolversList;
_dnscryptButton.state = 0;
_fallbackButton.state = 0;
_disableIPv6Button.state = 0;
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-dnscrypt-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
@@ -64,6 +66,10 @@ NSArray *resolversList;
if ([res isEqualToString: @"yes"]) {
[_fallbackButton setState: 1];
}
res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-aaaa-blocking-status.sh", nil]];
if ([res isEqualToString: @"yes"]) {
[_disableIPv6Button setState: 1];
}
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/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && exec ./get-query-logging-status.sh", nil]];
@@ -202,6 +208,20 @@ NSArray *resolversList;
return TRUE;
}
- (BOOL) setDisableIPv6On {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-aaaa-blocking-on.sh", nil]];
(void) res;
return TRUE;
}
- (BOOL) setDisableIPv6Off {
[self showSpinners];
NSString *res = [self fromCommand: @"/bin/csh" withArguments: [NSArray arrayWithObjects: @"-c", @"cd '" kDNSCRIPT_SCRIPTS_BASE_DIR @"' && ./create-ticket.sh && ./switch-aaaa-blocking-off.sh", nil]];
(void) res;
return TRUE;
}
- (IBAction)dnscryptButtonPressed:(NSButton *)sender
{
if (sender.state != 0) {
@@ -220,6 +240,15 @@ NSArray *resolversList;
}
}
- (IBAction)disableIPv6ButtonPressed:(NSButton *)sender
{
if (sender.state != 0) {
[self setDisableIPv6On];
} else {
[self setDisableIPv6Off];
}
}
- (void) waitForUpdate {
NSString *res;
static unsigned int tries;
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="5056" systemVersion="13D45a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="15A226f" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1070" defaultVersion="1060" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="5056"/>
<plugIn identifier="com.apple.WebKitIBPlugin" version="5056"/>
<deployment version="1070" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
<plugIn identifier="com.apple.WebKitIBPlugin" version="7706"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="DNSCrypt">
@@ -15,6 +15,7 @@
<outlet property="blacklistIPsTextField" destination="402" id="444"/>
<outlet property="currentResolverTextField" destination="174" id="296"/>
<outlet property="descriptionText" destination="2aF-7O-SkX" id="nM9-H2-22g"/>
<outlet property="disableIPv6Button" destination="ESJ-Kf-yNj" id="xFL-L3-vLp"/>
<outlet property="dnscryptButton" destination="179" id="363"/>
<outlet property="exceptionsTextField" destination="406" id="452"/>
<outlet property="fallbackButton" destination="281" id="365"/>
@@ -33,8 +34,8 @@
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<window title="&lt;&lt; do not localize >>" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" deferred="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="12" userLabel="PrefPane">
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="&lt;&lt; do not localize &gt;&gt;" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" deferred="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="12" userLabel="PrefPane">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="176" y="715" width="589" height="375"/>
@@ -47,6 +48,7 @@
<tabView initialItem="100" id="99">
<rect key="frame" x="13" y="10" width="563" height="359"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<font key="font" metaFont="system"/>
<tabViewItems>
<tabViewItem label="General" identifier="1" id="100">
@@ -57,6 +59,7 @@
<button toolTip="Use OpenDNS resolvers with the DNSCrypt protocol" id="179">
<rect key="frame" x="15" y="234" width="204" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Enable DNSCrypt" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="180">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="systemBold" size="14"/>
@@ -67,9 +70,10 @@
</connections>
</button>
<button id="281">
<rect key="frame" x="15" y="126" width="239" height="54"/>
<rect key="frame" x="15" y="164" width="239" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">Only check this box if you often have to connect to public WiFi hotspots and you don't want to manually disable DNSCrypt in order to pass a captive portal.</string>
<animations/>
<buttonCell key="cell" type="check" title="Automatically disable if blocked" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="282">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system" size="14"/>
@@ -82,6 +86,7 @@
<textField verticalHuggingPriority="750" id="162">
<rect key="frame" x="14" y="96" width="173" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Current DNS settings:" id="163">
<font key="font" metaFont="system" size="16"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -91,6 +96,7 @@
<textField verticalHuggingPriority="750" id="Wkj-kT-maK">
<rect key="frame" x="278" y="208" width="173" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Location:" id="GO7-P1-scE">
<font key="font" metaFont="system" size="14"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -100,6 +106,7 @@
<textField verticalHuggingPriority="750" id="174">
<rect key="frame" x="14" y="-3" width="240" height="83"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="..." placeholderString="" id="175">
<font key="font" size="14" name="Monaco"/>
<color key="textColor" white="0.2046370968" alpha="1" colorSpace="calibratedWhite"/>
@@ -109,6 +116,7 @@
<textField verticalHuggingPriority="750" id="e9H-pq-zb6">
<rect key="frame" x="345" y="200" width="200" height="27"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" placeholderString="" id="q83-P7-DNW">
<font key="font" size="14" name="Monaco"/>
<color key="textColor" white="0.2046370968" alpha="1" colorSpace="calibratedWhite"/>
@@ -118,6 +126,7 @@
<textField verticalHuggingPriority="750" id="rnd-WE-K61">
<rect key="frame" x="278" y="46" width="261" height="150"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" placeholderString="" id="2aF-7O-SkX">
<font key="font" size="14" name="Monaco"/>
<color key="textColor" white="0.2046370968" alpha="1" colorSpace="calibratedWhite"/>
@@ -127,6 +136,7 @@
<textField verticalHuggingPriority="750" id="274">
<rect key="frame" x="55" y="283" width="219" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="..." placeholderString="" id="275">
<font key="font" size="16" name="Monaco"/>
<color key="textColor" white="0.2046370968" alpha="1" colorSpace="calibratedWhite"/>
@@ -136,11 +146,13 @@
<imageView id="270">
<rect key="frame" x="17" y="277" width="32" height="32"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageAlignment="topLeft" imageScaling="proportionallyDown" image="ajax-loader" id="271"/>
</imageView>
<box autoresizesSubviews="NO" horizontalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="276">
<box horizontalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="276">
<rect key="frame" x="270" y="2" width="4" height="300"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<font key="titleFont" metaFont="system"/>
@@ -148,6 +160,7 @@
<button verticalHuggingPriority="750" id="323">
<rect key="frame" x="274" y="10" width="269" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="http://www.dnscrypt.org" alternateTitle="Browse the OpenDNS web site" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="324">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="cellTitle"/>
@@ -156,9 +169,10 @@
<action selector="providerLinkPushed:" target="-2" id="HYc-qW-k00"/>
</connections>
</button>
<box autoresizesSubviews="NO" verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="345">
<box verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="345">
<rect key="frame" x="17" y="193" width="240" height="5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<font key="titleFont" metaFont="system"/>
@@ -166,6 +180,7 @@
<textField verticalHuggingPriority="750" id="UQr-Gd-nzd">
<rect key="frame" x="324" y="268" width="183" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="DNSCrypt name server:" id="ctO-Mw-4JZ">
<font key="font" metaFont="system" size="16"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -175,6 +190,7 @@
<popUpButton toolTip="Select the resolver to use" verticalHuggingPriority="750" id="yY6-5S-StG">
<rect key="frame" x="286" y="232" width="260" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<popUpButtonCell key="cell" type="push" title="None selected" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="zMy-SG-d4L" id="LPZ-wM-tAR">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
@@ -191,7 +207,22 @@
<action selector="resolversNamesPopupButtonPressed:" target="-2" id="fEP-TP-PCO"/>
</connections>
</popUpButton>
<button id="ESJ-Kf-yNj">
<rect key="frame" x="15" y="133" width="252" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">Only check this box if you often have to connect to public WiFi hotspots and you don't want to manually disable DNSCrypt in order to pass a captive portal.</string>
<animations/>
<buttonCell key="cell" type="check" title="Disable IPv6 to reduce IPv4 latency" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="cCj-X4-U6n">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system" size="14"/>
</buttonCell>
<accessibility description="Fallback to insecure DNS"/>
<connections>
<action selector="disableIPv6ButtonPressed:" target="-2" id="s7R-gl-0Fy"/>
</connections>
</button>
</subviews>
<animations/>
</view>
</tabViewItem>
<tabViewItem label="Advanced" identifier="2" id="388">
@@ -202,6 +233,7 @@
<textField verticalHuggingPriority="750" id="390">
<rect key="frame" x="5" y="236" width="406" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="When not using DNSCrypt, use the following static DNS servers:" id="391">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -211,6 +243,7 @@
<textField verticalHuggingPriority="750" id="392">
<rect key="frame" x="8" y="206" width="526" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" toolTip="Leave empty to use DHCP-provided servers" placeholderString="Space-separated list of IP addresses or leave blank for DHCP" drawsBackground="YES" usesSingleLineMode="YES" id="393">
<font key="font" size="13" name="Courier"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -227,6 +260,7 @@
<button id="398">
<rect key="frame" x="7" y="281" width="126" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Log DNS queries" bezelStyle="regularSquare" imagePosition="left" inset="2" id="399">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
@@ -239,6 +273,7 @@
<button verticalHuggingPriority="750" id="400">
<rect key="frame" x="161" y="273" width="94" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="View log" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="401">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@@ -251,6 +286,7 @@
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" id="402">
<rect key="frame" x="10" y="7" width="169" height="141"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="403">
<font key="font" size="11" name="Courier"/>
<string key="placeholderString">IP addresses (IPv4/IPv6) to block.

208.67.0.255
192.0.43.10
@@ -268,6 +304,7 @@
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" id="404">
<rect key="frame" x="188" y="7" width="169" height="141"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="405">
<font key="font" size="11" name="Courier"/>
<string key="placeholderString">Domain names to block.
@@ -287,6 +324,7 @@ ads.*
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" id="406">
<rect key="frame" x="366" y="7" width="169" height="141"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Domain names to resolve through the default resolvers instead of DNSCrypt.

localdomain
mycompany.example.net" drawsBackground="YES" id="407">
<font key="font" size="11" name="Courier"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -302,6 +340,7 @@ ads.*
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" id="408">
<rect key="frame" x="7" y="156" width="175" height="34"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Block replies containing any of these IP addresses:" id="409">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -311,6 +350,7 @@ ads.*
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" id="410">
<rect key="frame" x="186" y="156" width="175" height="34"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Block queries for the following domain names:" id="411">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -320,6 +360,7 @@ ads.*
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" id="412">
<rect key="frame" x="363" y="156" width="175" height="34"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Bypass DNSCrypt to resolve these domains:" id="413">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -329,6 +370,7 @@ ads.*
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" id="416">
<rect key="frame" x="503" y="277" width="25" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="help" bezelStyle="helpButton" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="417">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@@ -340,15 +382,17 @@ ads.*
<textField verticalHuggingPriority="750" id="423">
<rect key="frame" x="467" y="284" width="33" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Help" id="424">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<box autoresizesSubviews="NO" verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="425">
<box verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="425">
<rect key="frame" x="9" y="265" width="526" height="5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<font key="titleFont" metaFont="system"/>
@@ -356,10 +400,12 @@ ads.*
<webView hidden="YES" maintainsBackForwardList="NO" id="449">
<rect key="frame" x="3" y="-3" width="536" height="278"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<webPreferences key="preferences" identifier="helpWebView" defaultFontSize="12" defaultFixedFontSize="12" minimumFontSize="2" plugInsEnabled="NO" javaEnabled="NO" javaScriptEnabled="NO" javaScriptCanOpenWindowsAutomatically="NO" loadsImagesAutomatically="NO" allowsAnimatedImages="NO" allowsAnimatedImageLooping="NO"/>
<accessibility description="Static DNS resolvers"/>
</webView>
</subviews>
<animations/>
</view>
</tabViewItem>
<tabViewItem label="About" identifier="3" id="356">
@@ -370,6 +416,7 @@ ads.*
<webView maintainsBackForwardList="NO" id="358">
<rect key="frame" x="17" y="31" width="509" height="279"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<webPreferences key="preferences" defaultFontSize="12" defaultFixedFontSize="12" plugInsEnabled="NO" javaEnabled="NO" javaScriptCanOpenWindowsAutomatically="NO" loadsImagesAutomatically="NO" allowsAnimatedImages="NO" allowsAnimatedImageLooping="NO">
<nil key="identifier"/>
</webPreferences>
@@ -377,6 +424,7 @@ ads.*
<button verticalHuggingPriority="750" id="385">
<rect key="frame" x="437" y="-5" width="95" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="Uninstall" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="386">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@@ -386,6 +434,7 @@ ads.*
</connections>
</button>
</subviews>
<animations/>
</view>
</tabViewItem>
<tabViewItem label="Release Notes" identifier="4" id="349">
@@ -396,16 +445,19 @@ ads.*
<webView maintainsBackForwardList="NO" id="354">
<rect key="frame" x="17" y="17" width="509" height="293"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<webPreferences key="preferences" defaultFontSize="12" defaultFixedFontSize="12" plugInsEnabled="NO" javaEnabled="NO" javaScriptCanOpenWindowsAutomatically="NO" loadsImagesAutomatically="NO" allowsAnimatedImages="NO" allowsAnimatedImageLooping="NO">
<nil key="identifier"/>
</webPreferences>
</webView>
</subviews>
<animations/>
</view>
</tabViewItem>
</tabViewItems>
</tabView>
</subviews>
<animations/>
</view>
</window>
<customObject id="263"/>
@@ -0,0 +1,9 @@
#! /bin/sh
. ./common.inc
if [ -e "$AAAA_BLOCKING_FILE" ]; then
echo 'yes'
else
echo 'no'
fi