public void findLdapDnMemberOfList(LdapTemplate ldapTemplate, String ldapDn, List<String> resultDnList, List<String> dnIgnoreList){ if(dnIgnoreList.contains(ldapDn)){ return; } AndFilter filter = new AndFilter(); filter.and(new EqualsFilter(LdapUtil.getMemberKey(), ldapDn)); List<Object> groupList = ldapTemplate.search("", filter.toString(), new AbstractContextMapper<Object>() { @Override protected Object doMapFromContext(DirContextOperations ctx) { return ctx.getNameInNamespace(); } }); if(groupList.isEmpty()){ dnIgnoreList.add(ldapDn); return; } for(Object groupObj : groupList){ if(groupObj == null || !(groupObj instanceof String)){ continue; } String groupDn = (String)groupObj; if(resultDnList.contains(groupDn)){ continue; } resultDnList.add(groupDn); findLdapDnMemberOfList(ldapTemplate, groupDn, resultDnList, dnIgnoreList); } }
@Override public BinaryLogicalFilter constructFilter() { return new AndFilter(); } }, OR {
/** * {@inheritDoc} */ @Override public boolean verifyPassword(String uid, String currentPassword) { Name dn = this.sample.buildDn(uid); String personFilter = MappingHelper.getBasicFilter(this.sample).encode(); return this.authenticateLdapTemplate.authenticate(dn, personFilter, currentPassword); }
@Override public BinaryLogicalFilter constructFilter() { return new AndFilter(); } }, OR {
private ErrorCode testAddLdapServerConnection(LdapServerInventory inv) { Map<String, Object> properties = new HashMap<>(); String timeout = Integer.toString(LdapGlobalProperty.LDAP_ADD_SERVER_CONNECT_TIMEOUT); properties.put("com.sun.jndi.ldap.connect.timeout", timeout); LdapTemplateContextSource ldapTemplateContextSource = new LdapUtil().loadLdap(inv, properties); try { AndFilter filter = new AndFilter(); // Any search conditions filter.and(new EqualsFilter(LdapConstant.LDAP_UID_KEY, "")); ldapTemplateContextSource.getLdapTemplate().authenticate("", filter.toString(), ""); logger.info("LDAP connection was successful"); } catch (Exception e) { logger.debug("Cannot connect to LDAP server", e); return operr("Cannot connect to LDAP server, %s", e.toString()); } return null; }
/** * Read the first objectclass of an entity and generate a filter * @param odm object entity * @return filter */ public static AndFilter getBasicFilter(Object odm) { Entry entry = odm.getClass().getAnnotation(Entry.class); if (entry != null) { AndFilter filter = new AndFilter(); filter.and(new EqualsFilter("objectclass", entry.objectClasses()[0])); return filter; } else return null; }
@Override public BinaryLogicalFilter constructFilter() { return new AndFilter(); } }, OR {
private void update(LdapTemplate ldapTemplate, LdapAccountRefVO ref){ String uid = ref.getLdapUid(); AndFilter filter = new AndFilter(); filter.and(new EqualsFilter("uid", ref.getLdapUid())); List<Object> result = ldapTemplate.search("", filter.toString(), new AbstractContextMapper<Object>() { @Override protected Object doMapFromContext(DirContextOperations ctx) { return ctx.getNameInNamespace(); } }); if(result.size() == 0){ logger.error(String.format("Can not find ldapUid[%s] dn", uid)); return; } if(result.size() > 1){ logger.error(String.format("ldapUid[%s] More than one dn result", uid)); return; } String dn = result.get(0).toString(); ref.setLdapUid(dn); dbf.update(ref); logger.info(String.format("update ldapUid[%s] to ldapDn[%s] success", uid, dn)); }
@Test public void testEquals() { EqualsFilter filter = new EqualsFilter("a", "b"); AndFilter originalObject = new AndFilter().and(filter); AndFilter identicalObject = new AndFilter().and(filter); AndFilter differentObject = new AndFilter().and(new EqualsFilter("b", "b")); AndFilter subclassObject = new AndFilter() { }.and(filter); new EqualsTester(originalObject, identicalObject, differentObject, subclassObject); } }
@Override public BinaryLogicalFilter constructFilter() { return new AndFilter(); } }, OR {