// 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) dealloc
{
- if(installationPath){ [installationPath release]; NSLog(@"Released installationPath"); }
- if(cellList) { NSLog(@"Released cellList");[cellList removeAllObjects];[cellList release];}
- if(cellName) { NSLog(@"Released cellName");[cellName release];}
+ if(installationPath){ [installationPath release];}
+ if(cellList) {[cellList removeAllObjects];[cellList release];}
+ if(cellName) {[cellName release];}
if(futil) {
[futil endAutorization];
[futil release];
// read thiscell config file
[filePath setString:installationPath];
[filePath appendString: @"/etc/ThisCell"];
- NSLog(@"Search for cell name.");
+
[self readCellInfo:filePath];
if(!cellName){
@throw [NSException exceptionWithName:@"readCellInfo"
reason:kThisCellFOError
userInfo:nil];
}
- NSLog(@"Cell found: %@", cellName);
-
//read TheseCell file
[filePath setString: installationPath];
[filePath appendString: @"/etc/TheseCells"];
userDefaultCellArray = [self readTheseCell:filePath];
//read cell serv db
- NSLog(@"Scan for cell db");
[filePath setString: installationPath];
[filePath appendString: @"/etc/CellServDB"];
[self readCellDB:filePath];
- NSLog(@"Server found: %d", [cellList count]);
-
-
//Read cacheinfo
- NSLog(@"Scan cacheinfo file");
[filePath setString: installationPath];
[filePath appendString: @"/etc/cacheinfo"];
[self readCacheInfo:filePath];
- NSLog(@"End scan cacheinfo file");
//Read config/afsd.options
[filePath setString: installationPath];
[filePath appendString: useAfsdConfVersion?AFSD_NEW_PREFERENCE_FILE:AFSD_OLD_PREFERENCE_FILE];
[self readAfsdOption:filePath];
-
} @catch(NSException * e){
@throw e;
} @finally {
NSString *afsdOptionStrData = [[NSString alloc] initWithData:fileHData
encoding:NSASCIIStringEncoding];*/
if(!filePath) return;
- [self readAFSDParamLineContent:[[NSString stringWithContentsOfFile:filePath] stringByStandardizingPath]];
+ [self readAFSDParamLineContent:[[NSString stringWithContentsOfFile:filePath
+ encoding:NSUTF8StringEncoding
+ error:nil] stringByStandardizingPath]];
}
// -------------------------------------------------------------------------------
do{
[afsdOptionS scanUpToCharactersFromSet:space intoString:&tmpString];
if(!tmpString) continue;
-
- NSLog(tmpString);
//check parameter type
if([tmpString isEqualToString:@AFSD_OPTION_DAEMONS_KEY])
{
NSScanner *lineScanner = nil;
//Get file content
- NSString *newAFSDConfContent = [NSString stringWithContentsOfFile:filePath];
+ NSString *newAFSDConfContent = [NSString stringWithContentsOfFile:filePath
+ encoding:NSUTF8StringEncoding
+ error:nil];
//get lines in array
NSArray *confLines = [newAFSDConfContent componentsSeparatedByString:@"\n"];
//scann the line
- [lineScanner scanUpToString:@"\"" intoString:¶mValue]; NSLog(paramValue);[lineScanner scanUpToString:@"-" intoString:¶mValue];
- [lineScanner scanUpToString:@"\"" intoString:¶mValue]; NSLog(paramValue);
+ [lineScanner scanUpToString:@"\"" intoString:¶mValue];[lineScanner scanUpToString:@"-" intoString:¶mValue];
+ [lineScanner scanUpToString:@"\"" intoString:¶mValue];
// read the asfd option param line
[self readAFSDParamLineContent:paramValue];
{
NSString *tmpString = nil;
NSString *result = [TaskUtil executeTaskSearchingPath:@"fs" args:[NSArray arrayWithObjects:@"-version", nil]];
- if(result) NSLog(@"fs -version return: %@", result);
-
-
NSCharacterSet *endVersionCS = [NSCharacterSet characterSetWithCharactersInString:@"qwertyuiopasdfghjklzxcvbnmMNBVCXZLKJHGFDSAPOIUYTREWQ"];
-
NSCharacterSet *spaceCS = [NSCharacterSet characterSetWithCharactersInString:@" "];
NSScanner *versionS = [NSScanner scannerWithString:result];
//go to start of version
// readCellInfo:
// -------------------------------------------------------------------------------
-(void) readCellInfo:(NSString*) configFile {
-
-
NSError *error = nil;
NSString *tmpStr = nil;
- NSLog(@"Try to opening file: %@",configFile);
NSString * result = [NSString stringWithContentsOfFile:configFile
encoding:NSASCIIStringEncoding
error:&error];
userInfo:nil];
}
NSScanner *scanner = [NSScanner scannerWithString:result];
-
[scanner scanUpToString:@"\n"
intoString:&tmpStr];
if(line >= 2){
- NSLog(@"Token found %s", [tokenLine UTF8String]);
// add enteir row to result
[tokenList addObject:tokenLine];
// create the line scanner for all the row that contains token info
// +(void) aklog
// -------------------------------------------------------------------------------
-(void) aklog:(NSString*)theCell noKerberosCall:(BOOL)krb5CallEnable {
- KLPrincipal princ = nil;
- KLStatus kstatus = noErr;
- char *princName = malloc(255);
+ KLStatus kstatus = noErr;
@try {
// trying to ket kerberos ticket
if(krb5CallEnable) {
- kstatus = KLAcquireInitialTickets (0L, 0L, &princ, &princName);
- if(kstatus != noErr && kstatus != klUserCanceledErr) @throw [NSException exceptionWithName:@"aklog"
- reason:kPathNotEmpty
- userInfo:nil];
+ kstatus = [Krb5Util getNewTicketIfNotPresent];
} else kstatus = klNoErr;
- //ok to launch aklog
+ //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(princName && princ != nil)
- KLDisposeString(princName);
- else if(princName) free(princName);
+
}
}
// -------------------------------------------------------------------------------
-(void) shutdown
{
- NSMutableString *filePath = [[NSMutableString alloc] initWithCapacity:256];
@try {
- if([[AuthUtil shared] autorize] != noErr)
- return;
-
- /*const char *args0[] = {"stop", 0L};
- [[AuthUtil shared] execUnixCommand:"/Library/StartupItems/OpenAFS/OpenAFS_stop"
- args:args0
- output:0L];*/
-
- // unmount afs
- const char *args1[] = {"-f", "/afs", 0L};
- [[AuthUtil shared] execUnixCommand:"/sbin/umount"
- args:args1
- output:0L];
-
- const char *args2[] = {"-shutdown", 0L};
- [[AuthUtil shared] execUnixCommand:"/usr/sbin/afsd"
- args:args2
- output:0L];
-
- const char *args3[] = {[filePath UTF8String], 0L};
- [[AuthUtil shared] execUnixCommand:"/sbin/kextunload"
- args:args3
- output:0L];
-
+ const char *stopArgs[] = {"stop", 0L};
+ if([[AuthUtil shared] autorize] == noErr) {
+ [[AuthUtil shared] execUnixCommand:AFS_DAEMON_STARTUPSCRIPT
+ args:stopArgs
+ output:nil];
+ }
+
}
@catch (NSException * e) {
@throw e;
}
+
+// -------------------------------------------------------------------------------
+// -(void) shutdown
+// -------------------------------------------------------------------------------
+-(void) startup
+{
+ @try {
+ const char *startArgs[] = {"start", 0L};
+ if([[AuthUtil shared] autorize] == noErr) {
+ [[AuthUtil shared] execUnixCommand:AFS_DAEMON_STARTUPSCRIPT
+ args:startArgs
+ output:nil];
+ }
+
+ }
+ @catch (NSException * e) {
+ @throw e;
+ }
+ @finally {
+
+ }
+
+
+}
// -------------------------------------------------------------------------------
// -(void) saveConfigurationFiles
// -------------------------------------------------------------------------------
if(filePath) [filePath release];
}
}
+
// -------------------------------------------------------------------------------
// checkAfsStatus:[NSArray arrayWithObjects:@"checkserver", nil];
// -------------------------------------------------------------------------------
-(BOOL) checkAfsStatus
{
BOOL result = NO;
- NSString *fsResult = [TaskUtil executeTaskSearchingPath:@"fs" args:[NSArray arrayWithObjects:@"checkserver", nil]];
- result = (fsResult?([fsResult rangeOfString:@"All servers are running."].location != NSNotFound):NO);
+ NSString *dfResult = [TaskUtil executeTaskSearchingPath:@"/bin/df" args:[NSArray arrayWithObjects:nil]];
+ result = (dfResult?([dfResult rangeOfString:@AFS_FS_MOUNT].location != NSNotFound):NO);
return result;
}
// -------------------------------------------------------------------------------
+// checkAfsStatus:[NSArray arrayWithObjects:@"checkserver", nil];
+// -------------------------------------------------------------------------------
+-(BOOL) checkAfsStatusForStartup {
+ BOOL result = NO;
+ //NSString *fsResult = [TaskUtil executeTaskSearchingPath:@"launchctl" args:[NSArray arrayWithObjects: @"list", nil]];
+ //result = (fsResult?([fsResult rangeOfString:@AFS_LAUNCHCTL_GREP_STR].location != NSNotFound):NO);
+ return result;
+}
+
+// -------------------------------------------------------------------------------
// makeChaceParamString
// -------------------------------------------------------------------------------
-(NSString*) makeChaceParamString