Moved DN cache to SOGoCache
parent
9885211a5b
commit
3950e9d4c3
1
NEWS
1
NEWS
|
@ -26,6 +26,7 @@ Enhancements
|
||||||
- visually identify users with no freebusy information in autocompletion widget of attendees editor (#2565)
|
- visually identify users with no freebusy information in autocompletion widget of attendees editor (#2565)
|
||||||
- respect occurences of recurrent events when deleting selected events (#1950)
|
- respect occurences of recurrent events when deleting selected events (#1950)
|
||||||
- improved confirmation dialog box when deleting events and tasks
|
- improved confirmation dialog box when deleting events and tasks
|
||||||
|
- moved the DN cache to SOGoCache - avoiding sogod restarts after RDN operations
|
||||||
|
|
||||||
Bug fixes
|
Bug fixes
|
||||||
- don't load 'background' attribute (#2437)
|
- don't load 'background' attribute (#2437)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* LDAPSource.h - this file is part of SOGo
|
/* LDAPSource.h - this file is part of SOGo
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2013 Inverse inc.
|
* Copyright (C) 2007-2014 Inverse inc.
|
||||||
*
|
*
|
||||||
* This file is free software; you can redistribute it and/or modify
|
* This file is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -79,8 +79,6 @@
|
||||||
|
|
||||||
BOOL passwordPolicy;
|
BOOL passwordPolicy;
|
||||||
|
|
||||||
NSMutableDictionary *_dnCache;
|
|
||||||
|
|
||||||
/* resources handling */
|
/* resources handling */
|
||||||
NSString *kindField;
|
NSString *kindField;
|
||||||
NSString *multipleBookingsField;
|
NSString *multipleBookingsField;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* LDAPSource.m - this file is part of SOGo
|
/* LDAPSource.m - this file is part of SOGo
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2013 Inverse inc.
|
* Copyright (C) 2007-2014 Inverse inc.
|
||||||
*
|
*
|
||||||
* This file is free software; you can redistribute it and/or modify
|
* This file is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -37,6 +37,7 @@
|
||||||
#import "NSArray+Utilities.h"
|
#import "NSArray+Utilities.h"
|
||||||
#import "NSString+Utilities.h"
|
#import "NSString+Utilities.h"
|
||||||
#import "NSString+Crypto.h"
|
#import "NSString+Crypto.h"
|
||||||
|
#import "SOGoCache.h"
|
||||||
#import "SOGoDomainDefaults.h"
|
#import "SOGoDomainDefaults.h"
|
||||||
#import "SOGoSystemDefaults.h"
|
#import "SOGoSystemDefaults.h"
|
||||||
|
|
||||||
|
@ -118,7 +119,6 @@ static Class NSStringK;
|
||||||
|
|
||||||
MSExchangeHostname = nil;
|
MSExchangeHostname = nil;
|
||||||
|
|
||||||
_dnCache = [[NSMutableDictionary alloc] init];
|
|
||||||
modifiers = nil;
|
modifiers = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +155,6 @@ static Class NSStringK;
|
||||||
[_scope release];
|
[_scope release];
|
||||||
[searchAttributes release];
|
[searchAttributes release];
|
||||||
[domain release];
|
[domain release];
|
||||||
[_dnCache release];
|
|
||||||
[kindField release];
|
[kindField release];
|
||||||
[multipleBookingsField release];
|
[multipleBookingsField release];
|
||||||
[MSExchangeHostname release];
|
[MSExchangeHostname release];
|
||||||
|
@ -528,7 +527,7 @@ static Class NSStringK;
|
||||||
if (queryTimeout > 0)
|
if (queryTimeout > 0)
|
||||||
[bindConnection setQueryTimeLimit: queryTimeout];
|
[bindConnection setQueryTimeLimit: queryTimeout];
|
||||||
|
|
||||||
userDN = [_dnCache objectForKey: _login];
|
userDN = [[SOGoCache sharedCache] distinguishedNameForLogin: _login];
|
||||||
|
|
||||||
if (!userDN)
|
if (!userDN)
|
||||||
{
|
{
|
||||||
|
@ -551,8 +550,9 @@ static Class NSStringK;
|
||||||
if (userDN)
|
if (userDN)
|
||||||
{
|
{
|
||||||
// We cache the _login <-> userDN entry to speed up things
|
// We cache the _login <-> userDN entry to speed up things
|
||||||
[_dnCache setObject: userDN forKey: _login];
|
[[SOGoCache sharedCache] setDistinguishedName: userDN
|
||||||
|
forLogin: _login];
|
||||||
|
|
||||||
if (!passwordPolicy)
|
if (!passwordPolicy)
|
||||||
didBind = [bindConnection bindWithMethod: @"simple"
|
didBind = [bindConnection bindWithMethod: @"simple"
|
||||||
binddn: userDN
|
binddn: userDN
|
||||||
|
@ -1238,7 +1238,7 @@ static Class NSStringK;
|
||||||
|
|
||||||
- (NSString *) lookupDNByLogin: (NSString *) theLogin
|
- (NSString *) lookupDNByLogin: (NSString *) theLogin
|
||||||
{
|
{
|
||||||
return [_dnCache objectForKey: theLogin];
|
return [[SOGoCache sharedCache] distinguishedNameForLogin: theLogin];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NGLdapEntry *) _lookupGroupEntryByAttributes: (NSArray *) theAttributes
|
- (NGLdapEntry *) _lookupGroupEntryByAttributes: (NSArray *) theAttributes
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
/* SOGoCache.h - this file is part of SOGo
|
/* SOGoCache.h - this file is part of SOGo
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2013 Inverse inc.
|
* Copyright (C) 2008-2014 Inverse inc.
|
||||||
*
|
|
||||||
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
||||||
* Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
||||||
*
|
*
|
||||||
* This file is free software; you can redistribute it and/or modify
|
* This file is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -109,6 +106,11 @@
|
||||||
|
|
||||||
- (NSDictionary *) messageSubmissionsCountForLogin: (NSString *) theLogin;
|
- (NSDictionary *) messageSubmissionsCountForLogin: (NSString *) theLogin;
|
||||||
|
|
||||||
|
- (NSString *) distinguishedNameForLogin: (NSString *) theLogin;
|
||||||
|
|
||||||
|
- (void) setDistinguishedName: (NSString *) theDN
|
||||||
|
forLogin: (NSString *) theLogin;
|
||||||
|
|
||||||
//
|
//
|
||||||
// CAS support
|
// CAS support
|
||||||
//
|
//
|
||||||
|
@ -124,7 +126,9 @@
|
||||||
|
|
||||||
- (void) removeCASSessionWithTicket: (NSString *) ticket;
|
- (void) removeCASSessionWithTicket: (NSString *) ticket;
|
||||||
|
|
||||||
|
//
|
||||||
// SAML2 support
|
// SAML2 support
|
||||||
|
//
|
||||||
- (NSDictionary *) saml2LoginDumpsForIdentifier: (NSString *) identifier;
|
- (NSDictionary *) saml2LoginDumpsForIdentifier: (NSString *) identifier;
|
||||||
- (void) setSaml2LoginDumps: (NSDictionary *) dump
|
- (void) setSaml2LoginDumps: (NSDictionary *) dump
|
||||||
forIdentifier: (NSString *) identifier;
|
forIdentifier: (NSString *) identifier;
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
/* SOGoCache.m - this file is part of SOGo
|
/* SOGoCache.m - this file is part of SOGo
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2013 Inverse inc.
|
* Copyright (C) 2008-2014 Inverse inc.
|
||||||
*
|
|
||||||
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
||||||
* Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
||||||
*
|
*
|
||||||
* This file is free software; you can redistribute it and/or modify
|
* This file is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -34,6 +31,9 @@
|
||||||
* <uid>+defaults value = NSDictionary instance > user's defaults
|
* <uid>+defaults value = NSDictionary instance > user's defaults
|
||||||
* <uid>+settings value = NSDictionary instance > user's settings
|
* <uid>+settings value = NSDictionary instance > user's settings
|
||||||
* <uid>+attributes value = NSMutableDictionary instance > user's LDAP attributes
|
* <uid>+attributes value = NSMutableDictionary instance > user's LDAP attributes
|
||||||
|
* <uid>+failedlogins value =
|
||||||
|
* <uid>+messagesubmissions value =
|
||||||
|
* <uid>+dn value = NSString instance > cached user's DN
|
||||||
* <object path>+acl value = NSDictionary instance > ACLs on an object at specified path
|
* <object path>+acl value = NSDictionary instance > ACLs on an object at specified path
|
||||||
* <groupname>+<domain> value = NSString instance (array components separated by ",") or group member logins for a specific group in domain
|
* <groupname>+<domain> value = NSString instance (array components separated by ",") or group member logins for a specific group in domain
|
||||||
* cas-id:< > value =
|
* cas-id:< > value =
|
||||||
|
@ -435,7 +435,9 @@ static memcached_st *handle = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
//
|
// Try to hit the local cache. If it misses, it'll
|
||||||
|
// then try memcached. If it hits memcached, it'll
|
||||||
|
// populate the local cache.
|
||||||
//
|
//
|
||||||
- (NSString *) _valuesOfType: (NSString *) theType
|
- (NSString *) _valuesOfType: (NSString *) theType
|
||||||
forKey: (NSString *) theKey
|
forKey: (NSString *) theKey
|
||||||
|
@ -604,6 +606,21 @@ static memcached_st *handle = NULL;
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// DN caching
|
||||||
|
//
|
||||||
|
- (NSString *) distinguishedNameForLogin: (NSString *) theLogin
|
||||||
|
{
|
||||||
|
return [self _valuesOfType: @"dn" forKey: theLogin];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) setDistinguishedName: (NSString *) theDN
|
||||||
|
forLogin: (NSString *) theLogin
|
||||||
|
{
|
||||||
|
[self _cacheValues: theDN
|
||||||
|
ofType: @"dn"
|
||||||
|
forKey: theLogin];
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// CAS session support
|
// CAS session support
|
||||||
|
|
Loading…
Reference in New Issue