Develop Kerberos renew system for ticket
authorClaudio Bisegni <Claudio.Bisegni@lnf.infn.it>
Mon, 22 Mar 2010 22:35:22 +0000 (23:35 +0100)
committerDerrick Brashear <shadow@dementia.org>
Tue, 23 Mar 2010 21:13:27 +0000 (14:13 -0700)
    - In Preference pane has been added a tab called "Option" where are
      showned the option for kerberos renew
    - In AfsBackgrounder has been implemented the NSTimer that will call
      the krb5 renew action according to user preference value

Change-Id: Ica4b705018722488613ac09586e60c69303d1076
Change-Id: I79ce1334d99f926544e865fbb563a1ffecaa969c
Reviewed-on: http://gerrit.openafs.org/1606
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/platform/DARWIN/AFSPreference/AFSBackgrounder/AFSBackgrounderDelegate.h
src/platform/DARWIN/AFSPreference/AFSBackgrounder/AFSBackgrounderDelegate.m
src/platform/DARWIN/AFSPreference/AFSCommanderPref.h
src/platform/DARWIN/AFSPreference/AFSCommanderPref.m
src/platform/DARWIN/AFSPreference/AFSPropertyManager.m
src/platform/DARWIN/AFSPreference/English.lproj/OpenAFSPreference.xib
src/platform/DARWIN/AFSPreference/Krb5Util.h [new file with mode: 0644]
src/platform/DARWIN/AFSPreference/Krb5Util.m [new file with mode: 0644]
src/platform/DARWIN/AFSPreference/OpenAFS.xcodeproj/project.pbxproj
src/platform/DARWIN/AFSPreference/global.h

index 31239f2..c4799c6 100644 (file)
        NSImage *hasTokenImage;
        NSImage *noTokenImage;
        
+       //krb5 renew
+       NSNumber *krb5CheckRenew;
+       NSNumber *krb5RenewTime;
+       NSNumber *krb5RenewCheckTimeInterval;
+       NSNumber *krb5SecToExpireTimeForRenew;
+
        //credential windows mainWindow
        AFSMenuCredentialContoller *credentialMenuController;
 
        //NSTimer for tokens refresh
        NSTimer *timerForCheckTokensList;
+       NSTimer *timerForCheckRenewTicket;
        NSLock *tokensLock;
+       NSLock *renewTicketLock;
        bool currentLinkActivationStatus;
        NSMutableDictionary *linkConfiguration;
        NSLock *linkCreationLock;
 }
 - (void)startTimer;
 - (void)stopTimer;
+- (void)startTimerRenewTicket;
+- (void)stopTimerRenewTicket;
 - (BOOL)useAklogPrefValue;
 - (void)readPreferenceFile:(NSNotification *)notification;
 - (void)getToken:(id)sender;
 - (void)releaseToken:(id)sender;
 - (void)updateAfsStatus:(NSTimer*)timer;
+- (void)krb5RenewAction:(NSTimer*)timer;
 - (void)klogUserEven:(NSNotification *)notification;
 - (void)switchHandler:(NSNotification*) notification;
 - (void)chageMenuVisibility:(NSNotification *)notification;
index d5d3170..94bef26 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <string.h>
 #import <sys/xattr.h>
+#import "Krb5Util.h"
 
 #define LINK_ICON 'srvr'
 
@@ -34,6 +35,7 @@
        
        // allocate the lock for concurent afs check state
        tokensLock = [[NSLock alloc] init];
+       renewTicketLock = [[NSLock alloc] init];
        
        //remove the auto eanble on menu item
        [backgrounderMenu setAutoenablesItems:NO];
        
        //release the lock
        [self stopTimer];
+       [self stopTimerRenewTicket];
        
        if(hasTokenImage) [hasTokenImage release];
        if(noTokenImage) [noTokenImage release];
        NSNumber *linkEnabledStatus =  (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_USE_LINK, (CFStringRef)kAfsCommanderID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
        [self updateLinkModeStatusWithpreferenceStatus:[linkEnabledStatus boolValue]];
        
+       //check the user preference for manage the renew
+       krb5CheckRenew =  (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_KRB5_CHECK_ENABLE,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       krb5RenewTime = (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_KRB5_RENEW_TIME,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       krb5RenewCheckTimeInterval = (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       krb5SecToExpireTimeForRenew = (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_KRB5_SEC_TO_EXPIRE_TIME_FOR_RENEW,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+
        
        //set the menu name
        [self updateAfsStatus:nil];
+
+               //stop and start the timer for krb5 renew
+       [self stopTimerRenewTicket];
+       [self startTimerRenewTicket];
 }
 
 // -------------------------------------------------------------------------------
        [timerForCheckTokensList invalidate];   
        timerForCheckTokensList = nil;
 }
+
+// -------------------------------------------------------------------------------
+//  startTimerRenewTicket:
+// -------------------------------------------------------------------------------
+- (void)startTimerRenewTicket {
+       //start the time for check ticket renew
+       if(timerForCheckRenewTicket || !krb5RenewCheckTimeInterval || ![krb5RenewCheckTimeInterval intValue]) return;
+       NSLog(@"startTimerRenewTicket with sec %d", [krb5RenewCheckTimeInterval intValue]);
+       timerForCheckRenewTicket = [NSTimer scheduledTimerWithTimeInterval:(krb5RenewCheckTimeInterval?[krb5RenewCheckTimeInterval intValue]:PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL_DEFAULT_VALUE)
+                                                                                                                          target:self
+                                                                                                                        selector:@selector(krb5RenewAction:)
+                                                                                                                        userInfo:nil
+                                                                                                                         repeats:YES];
+       [timerForCheckRenewTicket fire];
+}
+
+// -------------------------------------------------------------------------------
+//  stopTimerRenewTicket:
+// -------------------------------------------------------------------------------
+- (void)stopTimerRenewTicket {
+       NSLog(@"stopTimerRenewTicket");
+       if(!timerForCheckRenewTicket) return;
+       [timerForCheckRenewTicket invalidate];
+       timerForCheckRenewTicket = nil;
+}
+
+// -------------------------------------------------------------------------------
+//  krb5RenewAction:
+// -------------------------------------------------------------------------------
+- (void)krb5RenewAction:(NSTimer*)timer {
+       //Try to locking
+       if(![renewTicketLock tryLock]) return;
+       NSLog(@"krb5RenewAction %@", [NSDate date]);
+       @try {
+               [Krb5Util renewTicket:[krb5SecToExpireTimeForRenew intValue]
+                                       renewTime:[krb5RenewTime intValue]];
+       }
+       @catch (NSException * e) {
+       }
+       @finally {
+               [renewTicketLock unlock];
+       }
+
+
+}
+
 // -------------------------------------------------------------------------------
 //  -(void) getImageFromBundle
 // -------------------------------------------------------------------------------
index f6666c7..cc1534b 100644 (file)
@@ -43,6 +43,10 @@ int CoreMenuExtraRemoveMenuExtra(void *menuExtra, int whoCares);
        IBOutlet NSTextField *daemonNumber;
        IBOutlet NSTextField *afsRootMountPoint;
        IBOutlet NSTextField *nVolEntry;
+       IBOutlet NSTextField *nsTextFieldKrb5RenewTime;
+       IBOutlet NSTextField *nsTextFieldKrb5SecToExpireDateForRenew;
+       IBOutlet NSTextField *nsTextFieldKrb5RenewCheckIntervall;
+       IBOutlet NSButton *nsButtonEnableDisableKrb5RenewCheck;
        IBOutlet NSButton *dynRoot;
        IBOutlet NSButton *afsDB;
        IBOutlet NSButton *verbose;
@@ -123,6 +127,8 @@ int CoreMenuExtraRemoveMenuExtra(void *menuExtra, int whoCares);
 - (IBAction) searchCellTextEvent:(id) sender;
 - (IBAction) manageBackgrounderActivation:(id)sender;
 - (IBAction) tableViewLinkPerformClick:(id) sender;
+- (IBAction) enableDisableKrb5RenewCheck:(id) sender;
+- (IBAction) krb5RenewParamChange:(id) sender;
 - (void) credentialAtLoginTimeEventCreationLaunchAgentDir:(NSWindow*)alert returnCode:(int)returnCode contextInfo:(void *)contextInfo;
 - (void) clearCellServDBFiltering;
 - (void) filterCellServDB:(NSString*)textToFilter;
index 6e4e4ff..4d708ef 100644 (file)
        NSNumber *linkEnabledStatus =  (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_USE_LINK,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
        [checkEnableLink setState:[linkEnabledStatus boolValue]];
        
+       //check the user preference for manage the renew
+       NSNumber *checkRenew =  (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_KRB5_CHECK_ENABLE,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       if(checkRenew)[nsButtonEnableDisableKrb5RenewCheck setState:[checkRenew intValue]];
+
+       NSNumber *renewTime = (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_KRB5_RENEW_TIME,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       if(renewTime && [renewTime intValue])[nsTextFieldKrb5RenewTime setIntValue:[renewTime intValue]];
+       else [nsTextFieldKrb5RenewTime setIntValue:PREFERENCE_KRB5_RENEW_TIME_DEFAULT_VALUE];
+
+       NSNumber *renewCheckTimeInterval = (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       if(renewCheckTimeInterval && [renewCheckTimeInterval intValue])[nsTextFieldKrb5RenewCheckIntervall setIntValue:[renewCheckTimeInterval intValue]];
+       else [nsTextFieldKrb5RenewCheckIntervall setIntValue:PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL_DEFAULT_VALUE];
+
+       NSNumber *expireTimeForRenew = (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_KRB5_SEC_TO_EXPIRE_TIME_FOR_RENEW,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       if(expireTimeForRenew && [expireTimeForRenew intValue])[nsTextFieldKrb5SecToExpireDateForRenew setIntValue:[expireTimeForRenew intValue]];
+       else [nsTextFieldKrb5SecToExpireDateForRenew setIntValue:PREFERENCE_KRB5_SEC_TO_EXPIRE_TIME_FOR_RENEW_DEFAULT_VALUE];
+
        //link configuration
        NSData *prefData = (NSData*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_LINK_CONFIGURATION,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
        linkConfiguration = (NSMutableDictionary*)[NSPropertyListSerialization propertyListFromData:prefData
 - (void) writePreferenceFile
 {
        //Set the preference for afs path
-       /*CFPreferencesSetValue((CFStringRef)PREFERENCE_AFS_SYS_PAT, 
-                                                 (CFStringRef)[((NSTextField*) installationPathTextField ) stringValue], 
-                                                 (CFStringRef)kAfsCommanderID, kCFPreferencesAnyUser, kCFPreferencesAnyHost);*/
-       
        //Set the preference for aklog use
        CFPreferencesSetValue((CFStringRef)PREFERENCE_USE_AKLOG, 
                                                  (CFNumberRef)[NSNumber numberWithInt:[useAklogCheck state]], 
        
        //set aklog at login
        CFPreferencesSetValue((CFStringRef)PREFERENCE_SHOW_STATUS_MENU, 
-                                                 (CFNumberRef)[NSNumber numberWithBool:[afsMenucheckBox state]], 
+                                                 (CFNumberRef)[NSNumber numberWithBool:[(NSButton*)afsMenucheckBox state]],
                                                  (CFStringRef)kAfsCommanderID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
        
-       //write preference for link
+       //preference for link
        CFPreferencesSetValue((CFStringRef)PREFERENCE_USE_LINK,
                                                  (CFNumberRef)[NSNumber numberWithBool:[checkEnableLink state]], 
                                                  (CFStringRef)kAfsCommanderID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
        
+               //preference for renew time
+       CFPreferencesSetValue((CFStringRef)PREFERENCE_KRB5_RENEW_TIME,
+                                                 (CFNumberRef)[NSNumber numberWithInt:[nsTextFieldKrb5RenewTime intValue]],
+                                                 (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+
+               //expire time for renew
+       CFPreferencesSetValue((CFStringRef)PREFERENCE_KRB5_SEC_TO_EXPIRE_TIME_FOR_RENEW,
+                                                 (CFNumberRef)[NSNumber numberWithInt:[nsTextFieldKrb5SecToExpireDateForRenew intValue]],
+                                                 (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+
+               //sec to expiretime for renew job
+       CFPreferencesSetValue((CFStringRef)PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL,
+                                                 (CFNumberRef)[NSNumber numberWithInt:[nsTextFieldKrb5RenewCheckIntervall intValue]],
+                                                 (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+
        CFPreferencesSynchronize((CFStringRef)kAfsCommanderID,  kCFPreferencesAnyUser, kCFPreferencesAnyHost);
        CFPreferencesSynchronize((CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
        [[NSDistributedNotificationCenter defaultCenter] postNotificationName:kAFSMenuExtraID object:kPrefChangeNotification];
 -(IBAction) afsMenuActivationEvent:(id) sender
 {
        CFPreferencesSetValue((CFStringRef)PREFERENCE_SHOW_STATUS_MENU, 
-                                                 (CFNumberRef)[NSNumber numberWithBool:[afsMenucheckBox state]], 
+                                                 (CFNumberRef)[NSNumber numberWithBool:[(NSButton*)afsMenucheckBox state]],
                                                  (CFStringRef)kAfsCommanderID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
        
        CFPreferencesSynchronize((CFStringRef)kAfsCommanderID,  kCFPreferencesAnyUser, kCFPreferencesAnyHost);
                [tableViewLink reloadData];
        }
 }
+// -------------------------------------------------------------------------------
+//  tableViewLinkPerformClick:
+// -------------------------------------------------------------------------------
+- (IBAction) enableDisableKrb5RenewCheck:(id) sender {
+       //NSLog(@"enableDisableKrb5RenewCheck");
+       CFPreferencesSetValue((CFStringRef)PREFERENCE_KRB5_CHECK_ENABLE,
+                                                 (CFNumberRef) [NSNumber numberWithInt:[(NSButton*)sender intValue]],
+                                                 (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       CFPreferencesSynchronize((CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+               //notify the backgrounder
+       [[NSDistributedNotificationCenter defaultCenter] postNotificationName:kAFSMenuExtraID object:kPrefChangeNotification];
+}
+// -------------------------------------------------------------------------------
+//  tableViewLinkPerformClick:
+// -------------------------------------------------------------------------------
+- (IBAction) krb5RenewParamChange:(id) sender {
+       //NSLog(@"krb5RenewParamChange %@", [sender description]);
+       CFStringRef prefStr = 0L;
+       NSNumber *newNumberValue = [NSNumber numberWithInt:[(NSButton*)sender intValue]];
+
+       switch([(NSControl*)sender tag]){
+               case 1:{
+                       prefStr = (CFStringRef)PREFERENCE_KRB5_RENEW_TIME;
+               }
+               break;
+
+               case 2:{
+                       prefStr = (CFStringRef)PREFERENCE_KRB5_SEC_TO_EXPIRE_TIME_FOR_RENEW;
+               }
+               break;
+
+               case 3:{
+                       prefStr = (CFStringRef)PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL;
+               }
+               break;
+       }
 
+               /*CFPreferencesSetValue(prefStr,
+                                                 (CFNumberRef)newNumberValue,
+                                                 (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+       CFPreferencesSynchronize((CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);*/
+}
 @end
 
 @implementation AFSCommanderPref (NSTableDataSource)
index 5a5c540..559a216 100644 (file)
@@ -6,7 +6,7 @@
 //  Copyright 2007 INFN - National Institute of Nuclear Physics. All rights reserved.
 //
 
-#import <Kerberos/Kerberos.h>
+#import "Krb5Util.h"
 #import "AFSPropertyManager.h"
 #import "TaskUtil.h"
 
 //  +(void) aklog
 // -------------------------------------------------------------------------------
 -(void) aklog:(NSString*)theCell noKerberosCall:(BOOL)krb5CallEnable {
-       KLPrincipal             princ = nil;
        KLStatus                kstatus = noErr;
-       char                    *princName = 0L;
-       KLBoolean       outFoundValidTickets = false;
        @try {
                // trying to ket kerberos ticket
                if(krb5CallEnable) {
-                       kstatus = KLCacheHasValidTickets(nil, nil, &outFoundValidTickets, nil, nil);
-                       //kstatus =  KLAcquireInitialTickets (0L, 0L, &princ,  &princName);
-                       if(!outFoundValidTickets) {
-                               kstatus = KLAcquireNewInitialTickets(nil, nil, &princ, &princName);
-                               if(kstatus != noErr && kstatus != klUserCanceledErr) @throw [NSException exceptionWithName:@"aklog" 
-                                                                                                                                                                                                       reason:@"KLAcquireInitialTickets" 
-                                                                                                                                                                                                 userInfo:nil];
-                       }
+                       kstatus = [Krb5Util getNewTicketIfNotPresent];
                } else kstatus = klNoErr;
                
-               
                //ok to launch aklog
                if(kstatus == klNoErr) [TaskUtil executeTaskSearchingPath:@"aklog" 
                                                                                                                         args:(theCell==nil?[NSArray arrayWithObjects:nil]:[NSArray arrayWithObjects:@"-c", theCell, nil])];
                @throw e;
        }
        @finally {
-               // destory the kerberos va
-               if (kstatus == klNoErr) {
-                       KLDisposeString (princName);
-                       KLDisposePrincipal (princ);
-               }
+
        }
                
 }
index 2638635..2661fff 100644 (file)
@@ -2,13 +2,13 @@
 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
        <data>
                <int key="IBDocument.SystemTarget">1050</int>
-               <string key="IBDocument.SystemVersion">10B504</string>
-               <string key="IBDocument.InterfaceBuilderVersion">740</string>
-               <string key="IBDocument.AppKitVersion">1038.2</string>
-               <string key="IBDocument.HIToolboxVersion">437.00</string>
+               <string key="IBDocument.SystemVersion">10C540</string>
+               <string key="IBDocument.InterfaceBuilderVersion">762</string>
+               <string key="IBDocument.AppKitVersion">1038.25</string>
+               <string key="IBDocument.HIToolboxVersion">458.00</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
-                       <string key="NS.object.0">740</string>
+                       <string key="NS.object.0">762</string>
                </object>
                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                                                                <reference key="NSHScroller" ref="145484441"/>
                                                                                                <reference key="NSContentView" ref="229139620"/>
                                                                                                <reference key="NSHeaderClipView" ref="785725164"/>
-                                                                                               <reference key="NSCornerView" ref="151502956"/>
                                                                                                <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
                                                                                        </object>
                                                                                        <object class="NSButton" id="642014996">
                                                                        <reference key="NSColor" ref="568311573"/>
                                                                        <reference key="NSTabView" ref="739317740"/>
                                                                </object>
+                                                               <object class="NSTabViewItem" id="585584503">
+                                                                       <string key="NSIdentifier">Item 4</string>
+                                                                       <object class="NSView" key="NSView" id="626243774">
+                                                                               <nil key="NSNextResponder"/>
+                                                                               <int key="NSvFlags">256</int>
+                                                                               <object class="NSMutableArray" key="NSSubviews">
+                                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                       <object class="NSBox" id="731215349">
+                                                                                               <reference key="NSNextResponder" ref="626243774"/>
+                                                                                               <int key="NSvFlags">10</int>
+                                                                                               <object class="NSMutableArray" key="NSSubviews">
+                                                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                       <object class="NSView" id="660074200">
+                                                                                                               <reference key="NSNextResponder" ref="731215349"/>
+                                                                                                               <int key="NSvFlags">256</int>
+                                                                                                               <object class="NSMutableArray" key="NSSubviews">
+                                                                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                       <object class="NSTextField" id="628152029">
+                                                                                                                               <reference key="NSNextResponder" ref="660074200"/>
+                                                                                                                               <int key="NSvFlags">268</int>
+                                                                                                                               <string key="NSFrame">{{15, 132}, {174, 17}}</string>
+                                                                                                                               <reference key="NSSuperview" ref="660074200"/>
+                                                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                                                               <object class="NSTextFieldCell" key="NSCell" id="733262466">
+                                                                                                                                       <int key="NSCellFlags">68288064</int>
+                                                                                                                                       <int key="NSCellFlags2">272630784</int>
+                                                                                                                                       <string key="NSContents">Requested ticket lifetime:</string>
+                                                                                                                                       <reference key="NSSupport" ref="275217208"/>
+                                                                                                                                       <reference key="NSControlView" ref="628152029"/>
+                                                                                                                                       <reference key="NSBackgroundColor" ref="568311573"/>
+                                                                                                                                       <reference key="NSTextColor" ref="276594776"/>
+                                                                                                                               </object>
+                                                                                                                       </object>
+                                                                                                                       <object class="NSTextField" id="685654991">
+                                                                                                                               <reference key="NSNextResponder" ref="660074200"/>
+                                                                                                                               <int key="NSvFlags">268</int>
+                                                                                                                               <string key="NSFrame">{{237, 130}, {96, 22}}</string>
+                                                                                                                               <reference key="NSSuperview" ref="660074200"/>
+                                                                                                                               <int key="NSTag">1</int>
+                                                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                                                               <object class="NSTextFieldCell" key="NSCell" id="675625754">
+                                                                                                                                       <int key="NSCellFlags">-1804468671</int>
+                                                                                                                                       <int key="NSCellFlags2">71304192</int>
+                                                                                                                                       <real value="3600" key="NSContents"/>
+                                                                                                                                       <reference key="NSSupport" ref="275217208"/>
+                                                                                                                                       <object class="NSNumberFormatter" key="NSFormatter" id="310647748">
+                                                                                                                                               <object class="NSMutableDictionary" key="NS.attributes">
+                                                                                                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                       <object class="NSArray" key="dict.sortedKeys">
+                                                                                                                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                               <string>allowsFloats</string>
+                                                                                                                                                               <string>formatterBehavior</string>
+                                                                                                                                                               <string>locale</string>
+                                                                                                                                                               <string>maximumFractionDigits</string>
+                                                                                                                                                               <string>minimum</string>
+                                                                                                                                                               <string>minimumFractionDigits</string>
+                                                                                                                                                               <string>minimumIntegerDigits</string>
+                                                                                                                                                               <string>negativeInfinitySymbol</string>
+                                                                                                                                                               <string>nilSymbol</string>
+                                                                                                                                                               <string>numberStyle</string>
+                                                                                                                                                               <string>positiveInfinitySymbol</string>
+                                                                                                                                                       </object>
+                                                                                                                                                       <object class="NSMutableArray" key="dict.values">
+                                                                                                                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                               <boolean value="YES"/>
+                                                                                                                                                               <integer value="1040"/>
+                                                                                                                                                               <reference ref="925904638"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <real value="3600"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <string>-∞</string>
+                                                                                                                                                               <string/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <string>+∞</string>
+                                                                                                                                                       </object>
+                                                                                                                                               </object>
+                                                                                                                                               <string key="NS.positiveformat">#</string>
+                                                                                                                                               <string key="NS.negativeformat">#</string>
+                                                                                                                                               <nil key="NS.positiveattrs"/>
+                                                                                                                                               <nil key="NS.negativeattrs"/>
+                                                                                                                                               <nil key="NS.zero"/>
+                                                                                                                                               <object class="NSAttributedString" key="NS.nil">
+                                                                                                                                                       <string key="NSString"/>
+                                                                                                                                               </object>
+                                                                                                                                               <object class="NSAttributedString" key="NS.nan">
+                                                                                                                                                       <string key="NSString">NaN</string>
+                                                                                                                                                       <reference key="NSAttributes" ref="383448102"/>
+                                                                                                                                               </object>
+                                                                                                                                               <real value="3600" key="NS.min"/>
+                                                                                                                                               <reference key="NS.max" ref="139642944"/>
+                                                                                                                                               <object class="NSDecimalNumberHandler" key="NS.rounding">
+                                                                                                                                                       <int key="NS.roundingmode">3</int>
+                                                                                                                                                       <bool key="NS.raise.overflow">YES</bool>
+                                                                                                                                                       <bool key="NS.raise.underflow">YES</bool>
+                                                                                                                                                       <bool key="NS.raise.dividebyzero">YES</bool>
+                                                                                                                                               </object>
+                                                                                                                                               <string key="NS.decimal">.</string>
+                                                                                                                                               <string key="NS.thousand">,</string>
+                                                                                                                                               <bool key="NS.hasthousands">NO</bool>
+                                                                                                                                               <bool key="NS.localized">NO</bool>
+                                                                                                                                               <bool key="NS.allowsfloats">YES</bool>
+                                                                                                                                       </object>
+                                                                                                                                       <reference key="NSControlView" ref="685654991"/>
+                                                                                                                                       <bool key="NSDrawsBackground">YES</bool>
+                                                                                                                                       <reference key="NSBackgroundColor" ref="878835253"/>
+                                                                                                                                       <reference key="NSTextColor" ref="568125270"/>
+                                                                                                                               </object>
+                                                                                                                       </object>
+                                                                                                                       <object class="NSTextField" id="716552409">
+                                                                                                                               <reference key="NSNextResponder" ref="660074200"/>
+                                                                                                                               <int key="NSvFlags">268</int>
+                                                                                                                               <string key="NSFrame">{{237, 70}, {96, 22}}</string>
+                                                                                                                               <reference key="NSSuperview" ref="660074200"/>
+                                                                                                                               <int key="NSTag">3</int>
+                                                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                                                               <object class="NSTextFieldCell" key="NSCell" id="583586222">
+                                                                                                                                       <int key="NSCellFlags">-1804468671</int>
+                                                                                                                                       <int key="NSCellFlags2">71304192</int>
+                                                                                                                                       <real value="3600" key="NSContents"/>
+                                                                                                                                       <reference key="NSSupport" ref="275217208"/>
+                                                                                                                                       <object class="NSNumberFormatter" key="NSFormatter" id="786136385">
+                                                                                                                                               <object class="NSMutableDictionary" key="NS.attributes">
+                                                                                                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                       <object class="NSArray" key="dict.sortedKeys">
+                                                                                                                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                               <string>allowsFloats</string>
+                                                                                                                                                               <string>formatterBehavior</string>
+                                                                                                                                                               <string>locale</string>
+                                                                                                                                                               <string>maximumFractionDigits</string>
+                                                                                                                                                               <string>minimum</string>
+                                                                                                                                                               <string>minimumFractionDigits</string>
+                                                                                                                                                               <string>minimumIntegerDigits</string>
+                                                                                                                                                               <string>negativeInfinitySymbol</string>
+                                                                                                                                                               <string>nilSymbol</string>
+                                                                                                                                                               <string>numberStyle</string>
+                                                                                                                                                               <string>positiveInfinitySymbol</string>
+                                                                                                                                                       </object>
+                                                                                                                                                       <object class="NSMutableArray" key="dict.values">
+                                                                                                                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                               <boolean value="YES"/>
+                                                                                                                                                               <integer value="1040"/>
+                                                                                                                                                               <reference ref="925904638"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <real value="60"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <string>-∞</string>
+                                                                                                                                                               <string/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <string>+∞</string>
+                                                                                                                                                       </object>
+                                                                                                                                               </object>
+                                                                                                                                               <string key="NS.positiveformat">#</string>
+                                                                                                                                               <string key="NS.negativeformat">#</string>
+                                                                                                                                               <nil key="NS.positiveattrs"/>
+                                                                                                                                               <nil key="NS.negativeattrs"/>
+                                                                                                                                               <nil key="NS.zero"/>
+                                                                                                                                               <object class="NSAttributedString" key="NS.nil">
+                                                                                                                                                       <string key="NSString"/>
+                                                                                                                                               </object>
+                                                                                                                                               <object class="NSAttributedString" key="NS.nan">
+                                                                                                                                                       <string key="NSString">NaN</string>
+                                                                                                                                                       <reference key="NSAttributes" ref="383448102"/>
+                                                                                                                                               </object>
+                                                                                                                                               <real value="60" key="NS.min"/>
+                                                                                                                                               <reference key="NS.max" ref="139642944"/>
+                                                                                                                                               <object class="NSDecimalNumberHandler" key="NS.rounding">
+                                                                                                                                                       <int key="NS.roundingmode">3</int>
+                                                                                                                                                       <bool key="NS.raise.overflow">YES</bool>
+                                                                                                                                                       <bool key="NS.raise.underflow">YES</bool>
+                                                                                                                                                       <bool key="NS.raise.dividebyzero">YES</bool>
+                                                                                                                                               </object>
+                                                                                                                                               <string key="NS.decimal">.</string>
+                                                                                                                                               <string key="NS.thousand">,</string>
+                                                                                                                                               <bool key="NS.hasthousands">NO</bool>
+                                                                                                                                               <bool key="NS.localized">NO</bool>
+                                                                                                                                               <bool key="NS.allowsfloats">YES</bool>
+                                                                                                                                       </object>
+                                                                                                                                       <reference key="NSControlView" ref="716552409"/>
+                                                                                                                                       <bool key="NSDrawsBackground">YES</bool>
+                                                                                                                                       <reference key="NSBackgroundColor" ref="878835253"/>
+                                                                                                                                       <reference key="NSTextColor" ref="568125270"/>
+                                                                                                                               </object>
+                                                                                                                       </object>
+                                                                                                                       <object class="NSTextField" id="763432112">
+                                                                                                                               <reference key="NSNextResponder" ref="660074200"/>
+                                                                                                                               <int key="NSvFlags">268</int>
+                                                                                                                               <string key="NSFrame">{{15, 72}, {207, 17}}</string>
+                                                                                                                               <reference key="NSSuperview" ref="660074200"/>
+                                                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                                                               <object class="NSTextFieldCell" key="NSCell" id="449287045">
+                                                                                                                                       <int key="NSCellFlags">68288064</int>
+                                                                                                                                       <int key="NSCellFlags2">272630784</int>
+                                                                                                                                       <string key="NSContents">Ticket renewal check frequency:</string>
+                                                                                                                                       <reference key="NSSupport" ref="275217208"/>
+                                                                                                                                       <reference key="NSControlView" ref="763432112"/>
+                                                                                                                                       <reference key="NSBackgroundColor" ref="568311573"/>
+                                                                                                                                       <reference key="NSTextColor" ref="276594776"/>
+                                                                                                                               </object>
+                                                                                                                       </object>
+                                                                                                                       <object class="NSTextField" id="40613678">
+                                                                                                                               <reference key="NSNextResponder" ref="660074200"/>
+                                                                                                                               <int key="NSvFlags">268</int>
+                                                                                                                               <string key="NSFrame">{{237, 100}, {96, 22}}</string>
+                                                                                                                               <reference key="NSSuperview" ref="660074200"/>
+                                                                                                                               <int key="NSTag">2</int>
+                                                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                                                               <object class="NSTextFieldCell" key="NSCell" id="131938172">
+                                                                                                                                       <int key="NSCellFlags">-1804468671</int>
+                                                                                                                                       <int key="NSCellFlags2">71304192</int>
+                                                                                                                                       <real value="3600" key="NSContents"/>
+                                                                                                                                       <reference key="NSSupport" ref="275217208"/>
+                                                                                                                                       <object class="NSNumberFormatter" key="NSFormatter" id="230053326">
+                                                                                                                                               <object class="NSMutableDictionary" key="NS.attributes">
+                                                                                                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                       <object class="NSArray" key="dict.sortedKeys">
+                                                                                                                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                               <string>allowsFloats</string>
+                                                                                                                                                               <string>formatterBehavior</string>
+                                                                                                                                                               <string>locale</string>
+                                                                                                                                                               <string>maximumFractionDigits</string>
+                                                                                                                                                               <string>minimum</string>
+                                                                                                                                                               <string>minimumFractionDigits</string>
+                                                                                                                                                               <string>minimumIntegerDigits</string>
+                                                                                                                                                               <string>negativeInfinitySymbol</string>
+                                                                                                                                                               <string>nilSymbol</string>
+                                                                                                                                                               <string>numberStyle</string>
+                                                                                                                                                               <string>positiveInfinitySymbol</string>
+                                                                                                                                                       </object>
+                                                                                                                                                       <object class="NSMutableArray" key="dict.values">
+                                                                                                                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                                                                                                               <boolean value="YES"/>
+                                                                                                                                                               <integer value="1040"/>
+                                                                                                                                                               <reference ref="925904638"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <real value="60"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <string>-∞</string>
+                                                                                                                                                               <string/>
+                                                                                                                                                               <integer value="0"/>
+                                                                                                                                                               <string>+∞</string>
+                                                                                                                                                       </object>
+                                                                                                                                               </object>
+                                                                                                                                               <string key="NS.positiveformat">#</string>
+                                                                                                                                               <string key="NS.negativeformat">#</string>
+                                                                                                                                               <nil key="NS.positiveattrs"/>
+                                                                                                                                               <nil key="NS.negativeattrs"/>
+                                                                                                                                               <nil key="NS.zero"/>
+                                                                                                                                               <object class="NSAttributedString" key="NS.nil">
+                                                                                                                                                       <string key="NSString"/>
+                                                                                                                                               </object>
+                                                                                                                                               <object class="NSAttributedString" key="NS.nan">
+                                                                                                                                                       <string key="NSString">NaN</string>
+                                                                                                                                                       <reference key="NSAttributes" ref="383448102"/>
+                                                                                                                                               </object>
+                                                                                                                                               <real value="60" key="NS.min"/>
+                                                                                                                                               <reference key="NS.max" ref="139642944"/>
+                                                                                                                                               <object class="NSDecimalNumberHandler" key="NS.rounding">
+                                                                                                                                                       <int key="NS.roundingmode">3</int>
+                                                                                                                                                       <bool key="NS.raise.overflow">YES</bool>
+                                                                                                                                                       <bool key="NS.raise.underflow">YES</bool>
+                                                                                                                                                       <bool key="NS.raise.dividebyzero">YES</bool>
+                                                                                                                                               </object>
+                                                                                                                                               <string key="NS.decimal">.</string>
+                                                                                                                                               <string key="NS.thousand">,</string>
+                                                                                                                                               <bool key="NS.hasthousands">NO</bool>
+                                                                                                                                               <bool key="NS.localized">NO</bool>
+                                                                                                                                               <bool key="NS.allowsfloats">YES</bool>
+                                                                                                                                       </object>
+                                                                                                                                       <reference key="NSControlView" ref="40613678"/>
+                                                                                                                                       <bool key="NSDrawsBackground">YES</bool>
+                                                                                                                                       <reference key="NSBackgroundColor" ref="878835253"/>
+                                                                                                                                       <reference key="NSTextColor" ref="568125270"/>
+                                                                                                                               </object>
+                                                                                                                       </object>
+                                                                                                                       <object class="NSTextField" id="745195065">
+                                                                                                                               <reference key="NSNextResponder" ref="660074200"/>
+                                                                                                                               <int key="NSvFlags">268</int>
+                                                                                                                               <string key="NSFrame">{{15, 102}, {217, 17}}</string>
+                                                                                                                               <reference key="NSSuperview" ref="660074200"/>
+                                                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                                                               <object class="NSTextFieldCell" key="NSCell" id="27217273">
+                                                                                                                                       <int key="NSCellFlags">68288064</int>
+                                                                                                                                       <int key="NSCellFlags2">272630784</int>
+                                                                                                                                       <string key="NSContents">Seconds before expire to renew:</string>
+                                                                                                                                       <reference key="NSSupport" ref="275217208"/>
+                                                                                                                                       <reference key="NSControlView" ref="745195065"/>
+                                                                                                                                       <reference key="NSBackgroundColor" ref="568311573"/>
+                                                                                                                                       <reference key="NSTextColor" ref="276594776"/>
+                                                                                                                               </object>
+                                                                                                                       </object>
+                                                                                                                       <object class="NSButton" id="912875055">
+                                                                                                                               <reference key="NSNextResponder" ref="660074200"/>
+                                                                                                                               <int key="NSvFlags">265</int>
+                                                                                                                               <string key="NSFrame">{{363, 131}, {148, 18}}</string>
+                                                                                                                               <reference key="NSSuperview" ref="660074200"/>
+                                                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                                                               <object class="NSButtonCell" key="NSCell" id="488289338">
+                                                                                                                                       <int key="NSCellFlags">67239424</int>
+                                                                                                                                       <int key="NSCellFlags2">0</int>
+                                                                                                                                       <string key="NSContents">Enable auto-renew</string>
+                                                                                                                                       <reference key="NSSupport" ref="275217208"/>
+                                                                                                                                       <reference key="NSControlView" ref="912875055"/>
+                                                                                                                                       <int key="NSButtonFlags">1211912703</int>
+                                                                                                                                       <int key="NSButtonFlags2">2</int>
+                                                                                                                                       <reference key="NSNormalImage" ref="502435249"/>
+                                                                                                                                       <reference key="NSAlternateImage" ref="894136682"/>
+                                                                                                                                       <string key="NSAlternateContents"/>
+                                                                                                                                       <string key="NSKeyEquivalent"/>
+                                                                                                                                       <int key="NSPeriodicDelay">200</int>
+                                                                                                                                       <int key="NSPeriodicInterval">25</int>
+                                                                                                                               </object>
+                                                                                                                       </object>
+                                                                                                               </object>
+                                                                                                               <string key="NSFrame">{{1, 1}, {517, 162}}</string>
+                                                                                                               <reference key="NSSuperview" ref="731215349"/>
+                                                                                                       </object>
+                                                                                               </object>
+                                                                                               <string key="NSFrame">{{19, 179}, {519, 178}}</string>
+                                                                                               <reference key="NSSuperview" ref="626243774"/>
+                                                                                               <string key="NSOffsets">{0, 0}</string>
+                                                                                               <object class="NSTextFieldCell" key="NSTitleCell">
+                                                                                                       <int key="NSCellFlags">67239424</int>
+                                                                                                       <int key="NSCellFlags2">0</int>
+                                                                                                       <string key="NSContents">Kerberos Renew Ticket Option</string>
+                                                                                                       <reference key="NSSupport" ref="26"/>
+                                                                                                       <reference key="NSBackgroundColor" ref="878835253"/>
+                                                                                                       <object class="NSColor" key="NSTextColor">
+                                                                                                               <int key="NSColorSpace">3</int>
+                                                                                                               <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
+                                                                                                       </object>
+                                                                                               </object>
+                                                                                               <reference key="NSContentView" ref="660074200"/>
+                                                                                               <int key="NSBorderType">1</int>
+                                                                                               <int key="NSBoxType">0</int>
+                                                                                               <int key="NSTitlePosition">2</int>
+                                                                                               <bool key="NSTransparent">NO</bool>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <string key="NSFrame">{{10, 25}, {552, 363}}</string>
+                                                                       </object>
+                                                                       <string key="NSLabel">Option</string>
+                                                                       <reference key="NSColor" ref="568311573"/>
+                                                                       <reference key="NSTabView" ref="739317740"/>
+                                                               </object>
                                                        </object>
                                                        <reference key="NSSelectedTabViewItem" ref="269508902"/>
                                                        <reference key="NSFont" ref="26"/>
                                        </object>
                                        <int key="connectionID">2063</int>
                                </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">nsTextFieldKrb5RenewCheckIntervall</string>
+                                               <reference key="source" ref="773588579"/>
+                                               <reference key="destination" ref="716552409"/>
+                                       </object>
+                                       <int key="connectionID">2081</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">nsTextFieldKrb5RenewTime</string>
+                                               <reference key="source" ref="773588579"/>
+                                               <reference key="destination" ref="685654991"/>
+                                       </object>
+                                       <int key="connectionID">2082</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">nsTextFieldKrb5SecToExpireDateForRenew</string>
+                                               <reference key="source" ref="773588579"/>
+                                               <reference key="destination" ref="40613678"/>
+                                       </object>
+                                       <int key="connectionID">2083</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">nsButtonEnableDisableKrb5RenewCheck</string>
+                                               <reference key="source" ref="773588579"/>
+                                               <reference key="destination" ref="912875055"/>
+                                       </object>
+                                       <int key="connectionID">2089</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">krb5RenewParamChange:</string>
+                                               <reference key="source" ref="773588579"/>
+                                               <reference key="destination" ref="685654991"/>
+                                       </object>
+                                       <int key="connectionID">2090</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">krb5RenewParamChange:</string>
+                                               <reference key="source" ref="773588579"/>
+                                               <reference key="destination" ref="40613678"/>
+                                       </object>
+                                       <int key="connectionID">2091</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">krb5RenewParamChange:</string>
+                                               <reference key="source" ref="773588579"/>
+                                               <reference key="destination" ref="716552409"/>
+                                       </object>
+                                       <int key="connectionID">2092</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">enableDisableKrb5RenewCheck:</string>
+                                               <reference key="source" ref="773588579"/>
+                                               <reference key="destination" ref="912875055"/>
+                                       </object>
+                                       <int key="connectionID">2093</int>
+                               </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                <object class="NSArray" key="orderedObjects">
                                                        <reference ref="443722606"/>
                                                        <reference ref="584361947"/>
                                                        <reference ref="126070858"/>
+                                                       <reference ref="585584503"/>
                                                </object>
                                                <reference key="parent" ref="645279396"/>
                                        </object>
                                                <reference key="object" ref="855912809"/>
                                                <reference key="parent" ref="239701474"/>
                                        </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2064</int>
+                                               <reference key="object" ref="585584503"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="626243774"/>
+                                               </object>
+                                               <reference key="parent" ref="739317740"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2065</int>
+                                               <reference key="object" ref="626243774"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="731215349"/>
+                                               </object>
+                                               <reference key="parent" ref="585584503"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2086</int>
+                                               <reference key="object" ref="731215349"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="745195065"/>
+                                                       <reference ref="40613678"/>
+                                                       <reference ref="763432112"/>
+                                                       <reference ref="716552409"/>
+                                                       <reference ref="685654991"/>
+                                                       <reference ref="628152029"/>
+                                                       <reference ref="912875055"/>
+                                               </object>
+                                               <reference key="parent" ref="626243774"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2066</int>
+                                               <reference key="object" ref="628152029"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="733262466"/>
+                                               </object>
+                                               <reference key="parent" ref="731215349"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2067</int>
+                                               <reference key="object" ref="733262466"/>
+                                               <reference key="parent" ref="628152029"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2068</int>
+                                               <reference key="object" ref="685654991"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="675625754"/>
+                                               </object>
+                                               <reference key="parent" ref="731215349"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2069</int>
+                                               <reference key="object" ref="675625754"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="310647748"/>
+                                               </object>
+                                               <reference key="parent" ref="685654991"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2070</int>
+                                               <reference key="object" ref="310647748"/>
+                                               <reference key="parent" ref="675625754"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2073</int>
+                                               <reference key="object" ref="716552409"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="583586222"/>
+                                               </object>
+                                               <reference key="parent" ref="731215349"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2074</int>
+                                               <reference key="object" ref="583586222"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="786136385"/>
+                                               </object>
+                                               <reference key="parent" ref="716552409"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2075</int>
+                                               <reference key="object" ref="786136385"/>
+                                               <reference key="parent" ref="583586222"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2071</int>
+                                               <reference key="object" ref="763432112"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="449287045"/>
+                                               </object>
+                                               <reference key="parent" ref="731215349"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2072</int>
+                                               <reference key="object" ref="449287045"/>
+                                               <reference key="parent" ref="763432112"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2076</int>
+                                               <reference key="object" ref="40613678"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="131938172"/>
+                                               </object>
+                                               <reference key="parent" ref="731215349"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2079</int>
+                                               <reference key="object" ref="131938172"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="230053326"/>
+                                               </object>
+                                               <reference key="parent" ref="40613678"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2080</int>
+                                               <reference key="object" ref="230053326"/>
+                                               <reference key="parent" ref="131938172"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2077</int>
+                                               <reference key="object" ref="745195065"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="27217273"/>
+                                               </object>
+                                               <reference key="parent" ref="731215349"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2078</int>
+                                               <reference key="object" ref="27217273"/>
+                                               <reference key="parent" ref="745195065"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2087</int>
+                                               <reference key="object" ref="912875055"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="488289338"/>
+                                               </object>
+                                               <reference key="parent" ref="731215349"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2088</int>
+                                               <reference key="object" ref="488289338"/>
+                                               <reference key="parent" ref="912875055"/>
+                                       </object>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="flattenedProperties">
                                        <string>2050.IBPluginDependency</string>
                                        <string>2054.IBPluginDependency</string>
                                        <string>2055.IBPluginDependency</string>
+                                       <string>2064.IBPluginDependency</string>
+                                       <string>2065.IBPluginDependency</string>
+                                       <string>2066.IBPluginDependency</string>
+                                       <string>2067.IBPluginDependency</string>
+                                       <string>2068.IBAttributePlaceholdersKey</string>
+                                       <string>2068.IBPluginDependency</string>
+                                       <string>2069.IBPluginDependency</string>
                                        <string>207.IBPluginDependency</string>
                                        <string>207.ImportedFromIB2</string>
+                                       <string>2070.IBNumberFormatterBehaviorMetadataKey</string>
+                                       <string>2070.IBNumberFormatterLocalizesFormatMetadataKey</string>
+                                       <string>2070.IBPluginDependency</string>
+                                       <string>2071.IBPluginDependency</string>
+                                       <string>2072.IBPluginDependency</string>
+                                       <string>2073.IBAttributePlaceholdersKey</string>
+                                       <string>2073.IBPluginDependency</string>
+                                       <string>2074.IBPluginDependency</string>
+                                       <string>2075.IBNumberFormatterBehaviorMetadataKey</string>
+                                       <string>2075.IBNumberFormatterLocalizesFormatMetadataKey</string>
+                                       <string>2075.IBPluginDependency</string>
+                                       <string>2076.IBAttributePlaceholdersKey</string>
+                                       <string>2076.IBPluginDependency</string>
+                                       <string>2077.IBPluginDependency</string>
+                                       <string>2078.IBPluginDependency</string>
+                                       <string>2079.IBPluginDependency</string>
                                        <string>208.IBEditorWindowLastContentRect</string>
                                        <string>208.IBPluginDependency</string>
                                        <string>208.IBWindowTemplateEditedContentRect</string>
                                        <string>208.windowTemplate.hasMinSize</string>
                                        <string>208.windowTemplate.maxSize</string>
                                        <string>208.windowTemplate.minSize</string>
+                                       <string>2080.IBNumberFormatterBehaviorMetadataKey</string>
+                                       <string>2080.IBNumberFormatterLocalizesFormatMetadataKey</string>
+                                       <string>2080.IBPluginDependency</string>
+                                       <string>2086.IBPluginDependency</string>
+                                       <string>2087.IBAttributePlaceholdersKey</string>
+                                       <string>2087.IBPluginDependency</string>
+                                       <string>2088.IBPluginDependency</string>
                                        <string>209.IBPluginDependency</string>
                                        <string>209.ImportedFromIB2</string>
                                        <string>214.IBPluginDependency</string>
                                        <integer value="1"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <integer value="1"/>
-                                       <string>{{165, 432}, {595, 486}}</string>
+                                       <string>{{354, 320}, {595, 486}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <boolean value="NO"/>
                                        <boolean value="NO"/>
-                                       <string>{{165, 432}, {595, 486}}</string>
+                                       <string>{{354, 320}, {595, 486}}</string>
                                        <integer value="1"/>
                                        <boolean value="NO"/>
                                        <string>{3.40282e+38, 3.40282e+38}</string>
@@ -4109,7 +4708,51 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <object class="NSMutableDictionary">
+                                               <string key="NS.key.0">ToolTip</string>
+                                               <object class="IBToolTipAttribute" key="NS.object.0">
+                                                       <string key="name">ToolTip</string>
+                                                       <reference key="object" ref="685654991"/>
+                                                       <string key="toolTip">Desired lifetime for renewed Kerberos ticket, in seconds (min. 3600).</string>
+                                               </object>
+                                       </object>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <integer value="1"/>
+                                       <integer value="1040"/>
+                                       <boolean value="YES"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <object class="NSMutableDictionary">
+                                               <string key="NS.key.0">ToolTip</string>
+                                               <object class="IBToolTipAttribute" key="NS.object.0">
+                                                       <string key="name">ToolTip</string>
+                                                       <reference key="object" ref="716552409"/>
+                                                       <string key="toolTip">Interval to check whether tickets require renewal, in seconds (min. 3600)</string>
+                                               </object>
+                                       </object>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <integer value="1040"/>
+                                       <boolean value="YES"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <object class="NSMutableDictionary">
+                                               <string key="NS.key.0">ToolTip</string>
+                                               <object class="IBToolTipAttribute" key="NS.object.0">
+                                                       <string key="name">ToolTip</string>
+                                                       <reference key="object" ref="40613678"/>
+                                                       <string key="toolTip">Maximum remaining ticket lifetime before renewal is attempted, in seconds (min. 3600)</string>
+                                               </object>
+                                       </object>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>{{0, 510}, {715, 485}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>{{0, 510}, {715, 485}}</string>
@@ -4117,6 +4760,20 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                                        <boolean value="NO"/>
                                        <string>{3.40282e+38, 3.40282e+38}</string>
                                        <string>{0, 0}</string>
+                                       <integer value="1040"/>
+                                       <boolean value="YES"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <object class="NSMutableDictionary">
+                                               <string key="NS.key.0">ToolTip</string>
+                                               <object class="IBToolTipAttribute" key="NS.object.0">
+                                                       <string key="name">ToolTip</string>
+                                                       <reference key="object" ref="912875055"/>
+                                                       <string key="toolTip">Enable/Disable automatic Kerberos ticket renewal</string>
+                                               </object>
+                                       </object>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <integer value="1"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -4241,7 +4898,7 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                                </object>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">2063</int>
+                       <int key="maxID">2093</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -4259,10 +4916,12 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                                                        <string>afsStartupSwitchEvent:</string>
                                                        <string>aklogSwitchEvent:</string>
                                                        <string>credentialAtLoginTimeEvent:</string>
+                                                       <string>enableDisableKrb5RenewCheck:</string>
                                                        <string>enableLink:</string>
                                                        <string>getNewToken:</string>
                                                        <string>info:</string>
                                                        <string>krb5KredentialAtLoginTimeEvent:</string>
+                                                       <string>krb5RenewParamChange:</string>
                                                        <string>manageBackgrounderActivation:</string>
                                                        <string>refreshConfiguration:</string>
                                                        <string>removeLink:</string>
@@ -4298,6 +4957,8 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                                                        <string>id</string>
                                                        <string>id</string>
                                                        <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
                                                </object>
                                        </object>
                                        <object class="NSMutableDictionary" key="outlets">
@@ -4335,6 +4996,10 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                                                        <string>lyncCreationSheet</string>
                                                        <string>lynkCreationController</string>
                                                        <string>nVolEntry</string>
+                                                       <string>nsButtonEnableDisableKrb5RenewCheck</string>
+                                                       <string>nsTextFieldKrb5RenewCheckIntervall</string>
+                                                       <string>nsTextFieldKrb5RenewTime</string>
+                                                       <string>nsTextFieldKrb5SecToExpireDateForRenew</string>
                                                        <string>removeCellButton</string>
                                                        <string>saveConfigurationButton</string>
                                                        <string>startStopButton</string>
@@ -4381,6 +5046,10 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                                                        <string>id</string>
                                                        <string>LynkCreationController</string>
                                                        <string>NSTextField</string>
+                                                       <string>NSButton</string>
+                                                       <string>NSTextField</string>
+                                                       <string>NSTextField</string>
+                                                       <string>NSTextField</string>
                                                        <string>NSControl</string>
                                                        <string>NSControl</string>
                                                        <string>NSButton</string>
@@ -5078,6 +5747,7 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                        </object>
                </object>
                <int key="IBDocument.localizationMode">0</int>
+               <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
                        <integer value="1050" key="NS.object.0"/>
@@ -5089,5 +5759,9 @@ Zm9yIGRlYnVnZ2luZyBhcyBpdCBwcmludHMgYSBMT1Qgb2YgaW5mb3JtYXRpb24uCg</string>
                <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
                <string key="IBDocument.LastKnownRelativeProjectPath">../OpenAFS.xcodeproj</string>
                <int key="IBDocument.defaultPropertyAccessControl">3</int>
+               <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+                       <string key="NS.key.0">NSSwitch</string>
+                       <string key="NS.object.0">{15, 15}</string>
+               </object>
        </data>
 </archive>
diff --git a/src/platform/DARWIN/AFSPreference/Krb5Util.h b/src/platform/DARWIN/AFSPreference/Krb5Util.h
new file mode 100644 (file)
index 0000000..deed056
--- /dev/null
@@ -0,0 +1,17 @@
+//
+//  Krb5Util.h
+//  OpenAFS
+//
+//  Created by Claudio Bisegni on 20/03/10.
+//  Copyright 2010 INFN. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <Kerberos/Kerberos.h>
+
+@interface Krb5Util : NSObject {
+
+}
++(KLStatus) getNewTicketIfNotPresent;
++(KLStatus) renewTicket:(NSTimeInterval) secToExpire renewTime:(NSTimeInterval)renewTime;
+@end
diff --git a/src/platform/DARWIN/AFSPreference/Krb5Util.m b/src/platform/DARWIN/AFSPreference/Krb5Util.m
new file mode 100644 (file)
index 0000000..adeb9b6
--- /dev/null
@@ -0,0 +1,82 @@
+//
+//  Krb5Util.m
+//  OpenAFS
+//
+//  Created by Claudio Bisegni on 20/03/10.
+//  Copyright 2010 INFN. All rights reserved.
+//
+
+#import "Krb5Util.h"
+
+@implementation Krb5Util
++(KLStatus) getNewTicketIfNotPresent {
+
+       KLPrincipal             princ = nil;
+       KLStatus                kstatus = noErr;
+       char                    *princName = 0L;
+       KLBoolean       outFoundValidTickets = false;
+       @try{
+               kstatus = KLCacheHasValidTickets(nil, kerberosVersion_All, &outFoundValidTickets, nil, nil);
+               if(!outFoundValidTickets) {
+                       kstatus = KLAcquireNewInitialTickets(nil, nil, &princ, &princName);
+                       if(kstatus != noErr && kstatus != klUserCanceledErr) @throw [NSException exceptionWithName:@"Krb5Util"
+                                                                                                                                                                                               reason:@"getNewTicketIfNotPresent"
+                                                                                                                                                                                         userInfo:nil];
+               }
+       }
+       @catch (NSException * e) {
+               @throw e;
+       }
+       @finally {
+               KLDisposeString (princName);
+               KLDisposePrincipal (princ);
+       }
+       return kstatus;
+}
+
++(KLStatus) renewTicket:(NSTimeInterval)secToExpire
+                         renewTime:(NSTimeInterval)renewTime {
+       KLPrincipal             princ = nil;
+       KLStatus                kstatus = noErr;
+       char                    *princName = 0L;
+       KLTime          expireStartTime;
+       KLLoginOptions  inLoginOptions;
+       KLLifetime      inTicketLifetime = renewTime;
+       NSDate                  *expirationDate = nil;
+
+       @try {
+               //prepare the login option
+               kstatus = KLCreateLoginOptions(&inLoginOptions);
+               //set the lifetime of ticket
+               kstatus = KLLoginOptionsSetTicketLifetime (inLoginOptions,  inTicketLifetime);
+               kstatus = KLLoginOptionsSetRenewableLifetime (inLoginOptions, 0L);
+               kstatus = KLLoginOptionsSetTicketStartTime (inLoginOptions, 0);
+               //set the preference renewable time
+               //kstatus =  KLLoginOptionsSetRenewableLifetime (inLoginOptions, inTicketLifetime);
+               //check the start time
+               kstatus = KLTicketExpirationTime (nil, kerberosVersion_All, &expireStartTime);
+
+               expirationDate = [NSDate dateWithTimeIntervalSince1970:expireStartTime];
+               //NSLog(@"Ticket Expiration time: %@", [expirationDate description]);
+               NSTimeInterval secondToExpireTime = [expirationDate timeIntervalSinceNow];
+               if(secondToExpireTime <= secToExpire) {
+
+                       kstatus = KLRenewInitialTickets ( nil, inLoginOptions, nil, nil);
+
+                       kstatus = KLTicketExpirationTime (nil, kerberosVersion_All, &expireStartTime);
+
+                       expirationDate = [NSDate dateWithTimeIntervalSince1970:expireStartTime];
+                       //NSLog(@"Ticket Renewed Unitl %@", expirationDate);
+               }
+       }
+       @catch (NSException * e) {
+               @throw e;
+       }
+       @finally {
+               KLDisposeString (princName);
+               KLDisposePrincipal (princ);
+               KLDisposeLoginOptions(inLoginOptions);
+       }
+       return kstatus;
+}
+@end
index 6683962..c61d844 100644 (file)
                324D67FD0DA13194007E1561 /* OpenAFSPreference.xib in Resources */ = {isa = PBXBuildFile; fileRef = 324D67FB0DA13194007E1561 /* OpenAFSPreference.xib */; };
                324D683D0DA133A3007E1561 /* IpPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 324D683B0DA133A3007E1561 /* IpPanel.xib */; };
                324D684A0DA133CF007E1561 /* CredentialPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 324D68480DA133CF007E1561 /* CredentialPanel.xib */; };
+               324F490E115548E2001A763B /* Krb5Util.h in Headers */ = {isa = PBXBuildFile; fileRef = 324F490C115548E2001A763B /* Krb5Util.h */; };
+               324F490F115548E2001A763B /* Krb5Util.m in Sources */ = {isa = PBXBuildFile; fileRef = 324F490D115548E2001A763B /* Krb5Util.m */; };
+               324F4910115548ED001A763B /* Krb5Util.m in Sources */ = {isa = PBXBuildFile; fileRef = 324F490D115548E2001A763B /* Krb5Util.m */; };
+               324F492D11554AF2001A763B /* Krb5Util.m in Sources */ = {isa = PBXBuildFile; fileRef = 324F490D115548E2001A763B /* Krb5Util.m */; };
                325311D00C44F4B100FAF2F3 /* license.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 325311CF0C44F4B100FAF2F3 /* license.rtf */; };
                3273088D0C2A9B05008C322B /* FileUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 3273088B0C2A9B05008C322B /* FileUtil.h */; };
                3273088E0C2A9B05008C322B /* FileUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 3273088C0C2A9B05008C322B /* FileUtil.m */; };
                324D67FC0DA13194007E1561 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/OpenAFSPreference.xib; sourceTree = "<group>"; };
                324D683C0DA133A3007E1561 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/IpPanel.xib; sourceTree = "<group>"; };
                324D68490DA133CF007E1561 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/CredentialPanel.xib; sourceTree = "<group>"; };
+               324F490C115548E2001A763B /* Krb5Util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Krb5Util.h; sourceTree = "<group>"; };
+               324F490D115548E2001A763B /* Krb5Util.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Krb5Util.m; sourceTree = "<group>"; };
                325311CF0C44F4B100FAF2F3 /* license.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = license.rtf; sourceTree = "<group>"; };
                3273088B0C2A9B05008C322B /* FileUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileUtil.h; sourceTree = "<group>"; };
                3273088C0C2A9B05008C322B /* FileUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FileUtil.m; sourceTree = "<group>"; };
                                498DCB420DC2240B00D143C8 /* PListManager.m */,
                                49B766430DCA47A50014A80F /* DialogUtility.h */,
                                49B766440DCA47A50014A80F /* DialogUtility.m */,
+                               324F490C115548E2001A763B /* Krb5Util.h */,
+                               324F490D115548E2001A763B /* Krb5Util.m */,
                        );
                        name = Utility;
                        sourceTree = "<group>";
                                498DCB430DC2240B00D143C8 /* PListManager.h in Headers */,
                                49B766450DCA47A50014A80F /* DialogUtility.h in Headers */,
                                32DE818C0DF573200069A05C /* LynkCreationController.h in Headers */,
+                               324F490E115548E2001A763B /* Krb5Util.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                3231522010243E09005901AA /* AFSMenuCredentialContoller.m in Sources */,
                                3231522210243E09005901AA /* AFSMenuExtraView.m in Sources */,
                                3231522610243E10005901AA /* CredentialWindowController.m in Sources */,
+                               324F4910115548ED001A763B /* Krb5Util.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                49683F420C344CDA0093C7C8 /* AuthUtil.m in Sources */,
                                49683F430C344CDB0093C7C8 /* TaskUtil.m in Sources */,
                                4934D4170DC38958000511D2 /* PListManager.m in Sources */,
+                               324F492D11554AF2001A763B /* Krb5Util.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                498DCB440DC2240B00D143C8 /* PListManager.m in Sources */,
                                49B766460DCA47A50014A80F /* DialogUtility.m in Sources */,
                                32DE818D0DF573200069A05C /* LynkCreationController.m in Sources */,
+                               324F490F115548E2001A763B /* Krb5Util.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index 4e3fe51..8d97861 100644 (file)
 
 
 // PREFERENCE KEY
-#define PREFERENCE_AFS_SYS_PAT                         @"PREFERENCE_AFS_SYS_PAT"
-#define PREFERENCE_AFS_SYS_PAT_STATIC          @"/var/db/openafs"
-#define PREFERENCE_USE_AKLOG                           @"PREFERENCE_USE_AKLOG"
-#define PREFERENCE_START_AFS_AT_STARTUP                @"PREFERENCE_START_AFS_AT_STARTUP"
-#define PREFERENCE_SHOW_STATUS_MENU                    @"PREFERENCE_SHOW_STATUS_MENU"
-#define PREFERENCE_AKLOG_TOKEN_AT_LOGIN                @"PREFERENCE_AKLOG_TOKEN_AT_LOGIN"
-#define PREFERENCE_USE_LINK                                    @"PREFERENCE_USE_LINK"
-#define PREFERENCE_LINK_CONFIGURATION          @"PREFERENCE_LINK_CONFIGURATION"
+#define PREFERENCE_AFS_SYS_PAT                                                                         @"PREFERENCE_AFS_SYS_PAT"
+#define PREFERENCE_AFS_SYS_PAT_STATIC                                                          @"/var/db/openafs"
+#define PREFERENCE_USE_AKLOG                                                                           @"PREFERENCE_USE_AKLOG"
+#define PREFERENCE_START_AFS_AT_STARTUP                                                                @"PREFERENCE_START_AFS_AT_STARTUP"
+#define PREFERENCE_SHOW_STATUS_MENU                                                                    @"PREFERENCE_SHOW_STATUS_MENU"
+#define PREFERENCE_AKLOG_TOKEN_AT_LOGIN                                                                @"PREFERENCE_AKLOG_TOKEN_AT_LOGIN"
+#define PREFERENCE_USE_LINK                                                                                    @"PREFERENCE_USE_LINK"
+#define PREFERENCE_LINK_CONFIGURATION                                                          @"PREFERENCE_LINK_CONFIGURATION"
+#define PREFERENCE_KRB5_RENEW_TIME                                                                     @"PREFERENCE_KRB5_RENEW_TIME"
+#define PREFERENCE_KRB5_RENEW_TIME_DEFAULT_VALUE                                       3600
+#define PREFERENCE_KRB5_SEC_TO_EXPIRE_TIME_FOR_RENEW                           @"PREFERENCE_KRB5_SEC_TO_EXPIRE_TIME_FOR_RENEW"
+#define PREFERENCE_KRB5_SEC_TO_EXPIRE_TIME_FOR_RENEW_DEFAULT_VALUE     3600
+#define PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL                                     @"PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL"
+#define PREFERENCE_KRB5_RENEW_CHECK_TIME_INTERVALL_DEFAULT_VALUE       3600
+#define PREFERENCE_KRB5_CHECK_ENABLE                                                           @"PREFERENCE_KRB5_CHECK_ENABLE"
 
 // AFSMENUEXTRA INFO
 #define kAFSMenuExtra                  [NSURL fileURLWithPath:[[self bundle] pathForResource:@"AFSBackgrounder" ofType:@"app" inDirectory:@""]]