From b65ae175c3253b6df756c63deea664bba692e525 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 16 Mar 2009 21:13:01 +0000 Subject: [PATCH] See ChangeLog Monotone-Parent: e32cb5a49f7eb94c778c878808a9abcb69576a80 Monotone-Revision: 89b88978ce7a84af4dd6e2e230ede1c3ef700068 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2009-03-16T21:13:01 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 8 ++++ Documentation/SOGo Installation Guide.odt | Bin 31093 -> 31223 bytes SoObjects/SOGo/LDAPSource.h | 3 +- SoObjects/SOGo/LDAPSource.m | 49 +++++++++++++++------- sogo.spec | 3 ++ 5 files changed, 46 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2c0a73997..510b855e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-03-16 Ludovic Marcotte + + * SoObjects/SOGo/LDAPSource.m: We now support + the specification of a filter. Also updated + the installation guide to document this new parameter + * sogo.spec: Modified so that we use our tmpwatch + script from /etc/cron.daily + 2009-03-16 Francis Lachapelle * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt index d32108fc12687da9328a6b542db32b65c88e2116..e7174aa70983388204d66c1c49811fe0db177ff3 100644 GIT binary patch delta 22794 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 delta 22807 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 diff --git a/SoObjects/SOGo/LDAPSource.h b/SoObjects/SOGo/LDAPSource.h index e1db2396f..77532b722 100644 --- a/SoObjects/SOGo/LDAPSource.h +++ b/SoObjects/SOGo/LDAPSource.h @@ -1,6 +1,6 @@ /* LDAPSource.h - this file is part of SOGo * - * Copyright (C) 2007 Inverse inc. + * Copyright (C) 2007-2009 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -36,6 +36,7 @@ NSString *hostname; unsigned int port; NSString *password; + NSString *_filter; NSString *baseDN; NSString *IDField; /* the first part of a user DN */ diff --git a/SoObjects/SOGo/LDAPSource.m b/SoObjects/SOGo/LDAPSource.m index 97c185c79..53037c525 100644 --- a/SoObjects/SOGo/LDAPSource.m +++ b/SoObjects/SOGo/LDAPSource.m @@ -1,6 +1,6 @@ /* LDAPSource.m - this file is part of SOGo * - * Copyright (C) 2007-2008 Inverse inc. + * Copyright (C) 2007-2009 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -165,6 +165,7 @@ static NSLock *lock; mailFields = [NSArray arrayWithObject: @"mail"]; [mailFields retain]; bindFields = nil; + _filter = nil; ldapConnection = nil; searchAttributes = nil; @@ -184,6 +185,7 @@ static NSLock *lock; [UIDField release]; [mailFields release]; [bindFields release]; + [_filter release]; [ldapConnection release]; [sourceID release]; [modulesConstraints release]; @@ -206,7 +208,8 @@ static NSLock *lock; UIDField: [udSource objectForKey: @"UIDFieldName"] mailFields: [udSource objectForKey: @"MailFieldNames"] andBindFields: [udSource objectForKey: @"bindFields"]]; - ASSIGN (modulesConstraints, [udSource objectForKey: @"ModulesConstraints"]); + ASSIGN(modulesConstraints, [udSource objectForKey: @"ModulesConstraints"]); + ASSIGN(_filter, [udSource objectForKey: @"filter"]); return self; } @@ -282,7 +285,11 @@ static NSLock *lock; fields = [[bindFields componentsSeparatedByString: @","] objectEnumerator]; while ((currentField = [fields nextObject])) [qs appendFormat: @" OR (%@='%@')", currentField, uid]; - [qs deleteCharactersInRange: NSMakeRange (0, 4)]; + + if (_filter && [_filter length]) + [qs appendFormat: @" AND %@", _filter]; + + [qs deleteCharactersInRange: NSMakeRange(0, 4)]; return [EOQualifier qualifierWithQualifierFormat: qs]; } @@ -360,25 +367,30 @@ static NSLock *lock; /* contact management */ - (EOQualifier *) _qualifierForFilter: (NSString *) filter { - NSString *qs, *mailFormat, *fieldFormat; + NSString *mailFormat, *fieldFormat; EOQualifier *qualifier; - + NSMutableString *qs; + fieldFormat = [NSString stringWithFormat: @"(%%@='%@*')", filter]; mailFormat = [[mailFields stringsWithFormat: fieldFormat] componentsJoinedByString: @" OR "]; + qs = [NSMutableString string]; if ([filter length] > 0) { if ([filter isEqualToString: @"."]) - qs = @"(cn='*')"; + [qs appendFormat: @"(%@='*')", CNField]; else - qs = [NSString stringWithFormat: - @"(cn='%@*')" - @"OR (sn='%@*')" - @"OR (displayName='%@*')" - @"OR %@" - @"OR (telephoneNumber='*%@*')", - filter, filter, filter, mailFormat, filter]; + [qs appendFormat: @"(%@='%@*')" + @"OR (sn='%@*')" + @"OR (displayName='%@*')" + @"OR %@" + @"OR (telephoneNumber='*%@*')", + CNField, filter, filter, filter, mailFormat, filter]; + + if (_filter && [_filter length]) + [qs appendFormat: @" AND %@", _filter]; + qualifier = [EOQualifier qualifierWithQualifierFormat: qs]; } else @@ -389,13 +401,18 @@ static NSLock *lock; - (EOQualifier *) _qualifierForUIDFilter: (NSString *) uid { - NSString *qs, *mailFormat, *fieldFormat; + NSString *mailFormat, *fieldFormat; + NSMutableString *qs; fieldFormat = [NSString stringWithFormat: @"(%%@='%@')", uid]; mailFormat = [[mailFields stringsWithFormat: fieldFormat] componentsJoinedByString: @" OR "]; - qs = [NSString stringWithFormat: (@"(%@='%@') OR %@"), - UIDField, uid, mailFormat]; + qs = [NSMutableString string]; + + [qs appendFormat: (@"(%@='%@') OR %@"), UIDField, uid, mailFormat]; + + if (_filter && [_filter length]) + [qs appendFormat: @" AND %@", _filter]; return [EOQualifier qualifierWithQualifierFormat: qs]; } diff --git a/sogo.spec b/sogo.spec index 6d181c9b7..e19e87c3d 100644 --- a/sogo.spec +++ b/sogo.spec @@ -129,12 +129,14 @@ make DESTDIR=${RPM_BUILD_ROOT} \ CC="$cc" LDFLAGS="$ldflags" \ install mkdir -p ${RPM_BUILD_ROOT}/etc/init.d +mkdir -p ${RPM_BUILD_ROOT}/etc/cron.daily mkdir -p ${RPM_BUILD_ROOT}/etc/httpd/conf.d mkdir -p ${RPM_BUILD_ROOT}/usr/sbin mkdir -p ${RPM_BUILD_ROOT}/var/run/sogo mkdir -p ${RPM_BUILD_ROOT}/var/log/sogo mkdir -p ${RPM_BUILD_ROOT}/var/spool/sogo cp Apache/SOGo.conf ${RPM_BUILD_ROOT}/etc/httpd/conf.d/ +cp Scripts/tmpwatch ${RPM_BUILD_ROOT}/etc/cron.daily/sogo-tmpwatch cp Scripts/sogo-init.d-redhat ${RPM_BUILD_ROOT}/etc/init.d/sogod cp Scripts/sogod-wrapper ${RPM_BUILD_ROOT}/usr/sbin/sogod rm -rf ${RPM_BUILD_ROOT}%{prefix}/Tools/test_quick_extract @@ -148,6 +150,7 @@ rm -fr ${RPM_BUILD_ROOT} %defattr(-,root,root,-) /etc/init.d/sogod +/etc/cron.daily/sogo-tmpwatch /usr/sbin/sogod /var/run/sogo /var/log/sogo