Added the ability to read the SOGo configuration from a property list file in /etc/SOGo/.

This commit is contained in:
Wolfgang Sourdeau
2012-10-23 11:33:47 -04:00
2 changed files with 57 additions and 12 deletions
+50 -11
View File
@@ -1,6 +1,7 @@
/* SOGoSystemDefaults.m - this file is part of SOGo /* SOGoSystemDefaults.m - this file is part of SOGo
* *
* Copyright (C) 2009-2011 Inverse inc. * Copyright (C) 2009-2011 Inverse inc.
* Copyright (C) 2012 Jeroen Dekkers <jeroen@dekkers.ch>
* *
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca> * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Francis Lachapelle <flachapelle@inverse.ca> * Francis Lachapelle <flachapelle@inverse.ca>
@@ -95,27 +96,65 @@ BootstrapNSUserDefaults ()
+ (void) prepareUserDefaults + (void) prepareUserDefaults
{ {
NSString *redirectURL; NSString *redirectURL;
NSDictionary *domain;
NSUserDefaults *ud; NSUserDefaults *ud;
SOGoStartupLogger *logger; SOGoStartupLogger *logger;
logger = [SOGoStartupLogger sharedLogger]; logger = [SOGoStartupLogger sharedLogger];
ud = [NSUserDefaults standardUserDefaults]; ud = [NSUserDefaults standardUserDefaults];
domain = [ud persistentDomainForName: @"sogod"]; if ([[NSFileManager defaultManager] fileExistsAtPath: @"/etc/sogo/sogo.conf"])
if (![domain count])
{ {
domain = [ud persistentDomainForName: @"sogod-0.9"]; NSMutableDictionary *domain;
if ([domain count])
domain = [[NSMutableDictionary alloc] initWithContentsOfFile: @"/etc/sogo/sogo.conf"];
if (domain)
{ {
[logger logWithFormat: @"migrating user defaults from sogod-0.9"]; if ([[NSFileManager defaultManager] fileExistsAtPath: @"/etc/sogo/debconf.conf"])
[ud setPersistentDomain: domain forName: @"sogod"]; {
[ud removePersistentDomainForName: @"sogod-0.9"]; NSMutableDictionary *dbconfig;
[ud synchronize];
dbconfig = [[NSMutableDictionary alloc] initWithContentsOfFile: @"/etc/sogo/debconf.conf"];
if (dbconfig)
{
[domain addEntriesFromDictionary: dbconfig];
[dbconfig autorelease];
}
else
{
[logger warnWithFormat: @"Can't deserialize /etc/sogo/debconf.conf, exiting."];
exit(1);
}
}
[ud removePersistentDomainForName: @"sogod"];
[ud setVolatileDomain: domain forName: @"sogod"];
[domain autorelease];
} }
else else
[logger warnWithFormat: @"No configuration found." {
@" SOGo will not work properly."]; [logger errorWithFormat: @"Can't deserialize /etc/sogo/sogo.conf, exiting."];
exit(1);
}
}
else
{
NSDictionary *domain;
domain = [ud persistentDomainForName: @"sogod"];
if (![domain count])
{
domain = [ud persistentDomainForName: @"sogod-0.9"];
if ([domain count])
{
[logger logWithFormat: @"migrating user defaults from sogod-0.9"];
[ud setPersistentDomain: domain forName: @"sogod"];
[ud removePersistentDomainForName: @"sogod-0.9"];
[ud synchronize];
}
else
{
[logger warnWithFormat: @"No configuration found, exiting."];
exit(1);
}
}
} }
[self injectSOGoDefaults: ud]; [self injectSOGoDefaults: ud];
+7 -1
View File
@@ -221,8 +221,14 @@ static void
setupUserDefaults (NSUserDefaults *ud) setupUserDefaults (NSUserDefaults *ud)
{ {
NSMutableDictionary *defaultsOverrides; NSMutableDictionary *defaultsOverrides;
NSDictionary *domain;
[ud registerDefaults: [ud persistentDomainForName: @"sogod"]]; domain = [ud persistentDomainForName: @"sogod"];
if (![domain count])
{
domain = [ud volatileDomainForName: @"sogod"];
}
[ud registerDefaults: domain];
defaultsOverrides = [NSMutableDictionary new]; defaultsOverrides = [NSMutableDictionary new];
[defaultsOverrides setObject: [NSNumber numberWithInt: 0] [defaultsOverrides setObject: [NSNumber numberWithInt: 0]
forKey: @"SOGoLDAPQueryLimit"]; forKey: @"SOGoLDAPQueryLimit"];