From 45c80df9cfcc26d251be2eb50d787dcecd40f388 Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Thu, 1 May 2014 18:37:05 -0400 Subject: 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 --- .../com/netscape/cmscore/usrgrp/UGSubsystem.java | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'base/server/cmscore') 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 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; } -- cgit