| /* |
| File: DNSServiceDiscoveryPref.h |
| |
| Abstract: System Preference Pane for Dynamic DNS and Wide-Area DNS Service Discovery |
| |
| Copyright: (c) Copyright 2005 Apple Computer, Inc. All rights reserved. |
| |
| Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. |
| ("Apple") in consideration of your agreement to the following terms, and your |
| use, installation, modification or redistribution of this Apple software |
| constitutes acceptance of these terms. If you do not agree with these terms, |
| please do not use, install, modify or redistribute this Apple software. |
| |
| In consideration of your agreement to abide by the following terms, and subject |
| to these terms, Apple grants you a personal, non-exclusive license, under Apple's |
| copyrights in this original Apple software (the "Apple Software"), to use, |
| reproduce, modify and redistribute the Apple Software, with or without |
| modifications, in source and/or binary forms; provided that if you redistribute |
| the Apple Software in its entirety and without modifications, you must retain |
| this notice and the following text and disclaimers in all such redistributions of |
| the Apple Software. Neither the name, trademarks, service marks or logos of |
| Apple Computer, Inc. may be used to endorse or promote products derived from the |
| Apple Software without specific prior written permission from Apple. Except as |
| expressly stated in this notice, no other rights or licenses, express or implied, |
| are granted by Apple herein, including but not limited to any patent rights that |
| may be infringed by your derivative works or by other works in which the Apple |
| Software may be incorporated. |
| |
| The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO |
| WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED |
| WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN |
| COMBINATION WITH YOUR PRODUCTS. |
| |
| IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR |
| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
| GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION |
| OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT |
| (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN |
| ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #import <Cocoa/Cocoa.h> |
| #import <PreferencePanes/PreferencePanes.h> |
| #import <CoreFoundation/CoreFoundation.h> |
| #import <SecurityInterface/SFAuthorizationView.h> |
| #import <SystemConfiguration/SystemConfiguration.h> |
| #import <dns_sd.h> |
| |
| typedef struct MyDNSServiceState { |
| DNSServiceRef service; |
| CFRunLoopSourceRef source; |
| CFSocketRef socket; |
| } MyDNSServiceState; |
| |
| |
| @interface DNSServiceDiscoveryPref : NSPreferencePane |
| { |
| IBOutlet NSTextField *hostName; |
| IBOutlet NSTextField *sharedSecretName; |
| IBOutlet NSSecureTextField *sharedSecretValue; |
| IBOutlet NSComboBox *browseDomainsComboBox; |
| IBOutlet NSComboBox *regDomainsComboBox; |
| IBOutlet NSButton *wideAreaCheckBox; |
| IBOutlet NSButton *hostNameSharedSecretButton; |
| IBOutlet NSButton *registrationSharedSecretButton; |
| IBOutlet NSButton *applyButton; |
| IBOutlet NSButton *revertButton; |
| IBOutlet NSWindow *sharedSecretWindow; |
| IBOutlet NSWindow *addBrowseDomainWindow; |
| IBOutlet NSButton *addBrowseDomainButton; |
| IBOutlet NSButton *removeBrowseDomainButton; |
| IBOutlet NSButton *browseOKButton; |
| IBOutlet NSButton *browseCancelButton; |
| IBOutlet NSButton *secretOKButton; |
| IBOutlet NSButton *secretCancelButton; |
| IBOutlet NSImageView *statusImageView; |
| IBOutlet NSTabView *tabView; |
| IBOutlet NSTableView *browseDomainList; |
| IBOutlet SFAuthorizationView *comboAuthButton; |
| |
| NSWindow *mainWindow; |
| NSString *currentHostName; |
| NSString *currentRegDomain; |
| NSArray *currentBrowseDomainsArray; |
| NSMutableArray *browseDomainsArray; |
| NSMutableArray *defaultBrowseDomainsArray; |
| NSString *defaultRegDomain; |
| |
| NSString *hostNameSharedSecretName; |
| NSString *hostNameSharedSecretValue; |
| NSString *regSharedSecretName; |
| NSString *regSharedSecretValue; |
| BOOL currentWideAreaState; |
| BOOL prefsNeedUpdating; |
| BOOL toolInstalled; |
| BOOL browseDomainListEnabled; |
| BOOL justStartedEditing; |
| NSImage *successImage; |
| NSImage *inprogressImage; |
| NSImage *failureImage; |
| |
| MyDNSServiceState regQuery; |
| MyDNSServiceState browseQuery; |
| NSMutableArray *browseDataSource; |
| NSMutableArray *registrationDataSource; |
| } |
| |
| - (IBAction)applyClicked:(id)sender; |
| - (IBAction)enableBrowseDomainClicked:(id)sender; |
| - (IBAction)addBrowseDomainClicked:(id)sender; |
| - (IBAction)removeBrowseDomainClicked:(id)sender; |
| - (IBAction)revertClicked:(id)sender; |
| - (IBAction)changeButtonPressed:(id)sender; |
| - (IBAction)closeMyCustomSheet:(id)sender; |
| - (IBAction)comboAction:(id)sender; |
| - (IBAction)wideAreaCheckBoxChanged:(id)sender; |
| |
| |
| - (NSMutableArray *)browseDataSource; |
| - (NSMutableArray *)registrationDataSource; |
| - (NSComboBox *)browseDomainsComboBox; |
| - (NSComboBox *)regDomainsComboBox; |
| - (NSString *)currentRegDomain; |
| - (NSMutableArray *)defaultBrowseDomainsArray; |
| - (NSArray *)currentBrowseDomainsArray; |
| - (NSString *)currentHostName; |
| - (NSString *)defaultRegDomain; |
| - (void)setDefaultRegDomain:(NSString *)domain; |
| |
| |
| |
| - (void)enableApplyButton; |
| - (void)disableApplyButton; |
| - (void)applyCurrentState; |
| - (void)setBrowseDomainsComboBox; |
| - (void)setupInitialValues; |
| - (void)startDomainBrowsing; |
| - (void)toggleWideAreaBonjour:(BOOL)state; |
| - (void)updateApplyButtonState; |
| - (void)enableControls; |
| - (void)disableControls; |
| - (void)validateTextFields; |
| - (void)readPreferences; |
| - (void)savePreferences; |
| - (void)restorePreferences; |
| - (void)watchForPreferenceChanges; |
| - (void)updateStatusImageView; |
| |
| |
| - (NSString *)sharedSecretKeyName:(NSString * )domain; |
| - (NSString *)domainForHostName:(NSString *)hostNameString; |
| - (int)statusForHostName:(NSString * )domain; |
| - (NSData *)dataForDomainArray:(NSArray *)domainArray; |
| - (NSData *)dataForDomain:(NSString *)domainName isEnabled:(BOOL)enabled; |
| - (NSData *)dataForSharedSecret:(NSString *)secret domain:(NSString *)domainName key:(NSString *)keyName; |
| - (BOOL)domainAlreadyInList:(NSString *)domainString; |
| - (NSString *)trimCharactersFromDomain:(NSString *)domain; |
| |
| |
| // Delegate methods |
| - (void)authorizationViewDidAuthorize:(SFAuthorizationView *)view; |
| - (void)authorizationViewDidDeauthorize:(SFAuthorizationView *)view; |
| - (void)mainViewDidLoad; |
| - (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox; |
| - (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index; |
| - (void)controlTextDidChange:(NSNotification *) notification; |
| |
| @end |