diff options
author | Endi S. Dewata <edewata@redhat.com> | 2014-05-01 18:37:05 -0400 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2014-05-08 22:59:05 -0400 |
commit | 45c80df9cfcc26d251be2eb50d787dcecd40f388 (patch) | |
tree | 4ae1a9ec22048a5b13a9b3b3057b2c8b394db283 /base/server/cmscore/src/com/netscape/cmscore/usrgrp/UGSubsystem.java | |
parent | e03bff7807bf7043cf396bd0d383e13e46c211ed (diff) | |
download | pki-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.java | 33 |
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; } |