summaryrefslogtreecommitdiffstats
path: root/base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2014-05-01 18:37:05 -0400
committerEndi S. Dewata <edewata@redhat.com>2014-05-08 22:59:05 -0400
commit45c80df9cfcc26d251be2eb50d787dcecd40f388 (patch)
tree4ae1a9ec22048a5b13a9b3b3057b2c8b394db283 /base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java
parente03bff7807bf7043cf396bd0d383e13e46c211ed (diff)
downloadpki-45c80df9cfcc26d251be2eb50d787dcecd40f388.tar.gz
pki-45c80df9cfcc26d251be2eb50d787dcecd40f388.tar.xz
pki-45c80df9cfcc26d251be2eb50d787dcecd40f388.zip
Replace filter in UGSubsystem.listGroups().
The UGSubsystem.listGroups() has been modified to generate an LDAP filter from a keyword. The filter itself cannot contain wildcards. The wildcard will be added in listGroups(). In the future the filter will be made configurable to allow searching different attributes. Ticket #920
Diffstat (limited to 'base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java')
-rw-r--r--base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java33
1 files changed, 23 insertions, 10 deletions
diff --git a/base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java b/base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java
index ea6149d1a..5d7d773fd 100644
--- a/base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java
+++ b/base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java
@@ -1378,33 +1378,46 @@ public final class UGSubsystem implements IUGSubsystem {
* group names and description.
*/
public Enumeration<IGroup> listGroups(String filter) throws EUsrGrpException {
+
+ String ldapFilter;
+
if (filter == null) {
- return null;
+ ldapFilter = "(objectclass=groupofuniquenames)";
+
+ } else {
+ filter = LDAPUtil.escapeFilter(filter);
+ ldapFilter = "(&(objectclass=groupofuniquenames)(cn=*" + filter + "*))";
}
+ String attrs[] = new String[2];
+ attrs[0] = "cn";
+ attrs[1] = "description";
+
LDAPConnection ldapconn = null;
try {
- String attrs[] = new String[2];
-
- attrs[0] = "cn";
- attrs[1] = "description";
-
ldapconn = getConn();
- LDAPSearchResults res =
- ldapconn.search(getGroupBaseDN(), LDAPv2.SCOPE_SUB,
- "(&(objectclass=groupofuniquenames)(cn=" + filter + "))",
- attrs, false);
+ LDAPSearchResults res = ldapconn.search(
+ getGroupBaseDN(),
+ LDAPv2.SCOPE_ONE,
+ ldapFilter,
+ attrs,
+ false);
+ // doesn't throw exception if result is empty
return buildGroups(res);
+
} catch (LDAPException e) {
log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_USRGRP_LIST_GROUPS", e.toString()));
+
} catch (ELdapException e) {
log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_USRGRP_LIST_GROUPS", e.toString()));
+
} finally {
if (ldapconn != null)
returnConn(ldapconn);
}
+
return null;
}