Search in sources :

Example 6 with FilterNode

use of net.sourceforge.myvd.types.FilterNode in project OpenUnison by TremoloSecurity.

the class ExternalGroupMembers method searchExternal.

private void searchExternal(FilterNode node) {
    String name;
    String newVal;
    HashMap<String, String> map;
    switch(node.getType()) {
        case EQUALS:
            name = node.getName().toLowerCase();
            if (name.equalsIgnoreCase(GlobalEntries.getGlobalEntries().getConfigManager().getCfg().getGroupMemberAttribute())) {
                String val = node.getValue();
                node.setType(FilterType.OR);
                ArrayList<FilterNode> nodes = new ArrayList<FilterNode>();
                FilterNode newnode = new FilterNode(FilterType.EQUALS, GlobalEntries.getGlobalEntries().getConfigManager().getCfg().getGroupMemberAttribute(), val);
                nodes.add(newnode);
                newnode = new FilterNode(FilterType.EQUALS, this.externalGroupAttrName, val);
                nodes.add(newnode);
                node.setChildren(nodes);
            }
            break;
        case SUBSTR:
        case GREATER_THEN:
        case LESS_THEN:
        case PRESENCE:
            break;
        case AND:
        case OR:
            Iterator<FilterNode> it = node.getChildren().iterator();
            while (it.hasNext()) {
                searchExternal(it.next());
            }
            break;
        case NOT:
            searchExternal(node.getNot());
    }
}
Also used : FilterNode(net.sourceforge.myvd.types.FilterNode) ArrayList(java.util.ArrayList)

Example 7 with FilterNode

use of net.sourceforge.myvd.types.FilterNode in project OpenUnison by TremoloSecurity.

the class ExternalGroupMembers method search.

@Override
public void search(SearchInterceptorChain chain, DistinguishedName base, Int scope, Filter filter, ArrayList<Attribute> attributes, Bool typesOnly, Results results, LDAPSearchConstraints constraints) throws LDAPException {
    boolean add = false;
    for (Attribute attr : attributes) {
        if (attr.getAttribute().getName().equalsIgnoreCase(GlobalEntries.getGlobalEntries().getConfigManager().getCfg().getGroupMemberAttribute())) {
            add = true;
        }
    }
    if (add) {
        ArrayList<Attribute> nattrs = new ArrayList<Attribute>();
        nattrs.addAll(attributes);
        Attribute attr = new Attribute(this.externalGroupAttrName);
        nattrs.add(attr);
        attributes = nattrs;
    }
    Filter nfilter = null;
    try {
        FilterNode nroot = (FilterNode) filter.getRoot().clone();
        nfilter = new Filter(nroot);
    } catch (CloneNotSupportedException e) {
        throw new LDAPException("Could not clone filter", LDAPException.OPERATIONS_ERROR, "Could not clone filter", e);
    }
    this.searchExternal(nfilter.getRoot());
    chain.nextSearch(base, scope, nfilter, attributes, typesOnly, results, constraints);
}
Also used : LDAPException(com.novell.ldap.LDAPException) LDAPAttribute(com.novell.ldap.LDAPAttribute) Attribute(net.sourceforge.myvd.types.Attribute) Filter(net.sourceforge.myvd.types.Filter) FilterNode(net.sourceforge.myvd.types.FilterNode) ArrayList(java.util.ArrayList)

Example 8 with FilterNode

use of net.sourceforge.myvd.types.FilterNode in project OpenUnison by TremoloSecurity.

the class AzSys method checkEntry.

public boolean checkEntry(FilterNode filter, AuthInfo authInfo) {
    Iterator<FilterNode> it;
    // LDAPAttributeSet attribs;
    Attribute attrib;
    Iterator<String> itAttr;
    switch(filter.getType()) {
        case PRESENCE:
            return authInfo.getAttribs().get(filter.getName()) != null;
        case SUBSTR:
            // attribs = entry.getAttributeSet();
            attrib = authInfo.getAttribs().get(filter.getName());
            if (attrib == null) {
                return false;
            }
            itAttr = attrib.getValues().iterator();
            String compval = filter.getValue().replaceAll("\\*", ".*");
            while (itAttr.hasNext()) {
                if (itAttr.next().matches(compval)) {
                    return true;
                }
            }
            return false;
        case EQUALS:
            attrib = authInfo.getAttribs().get(filter.getName());
            if (attrib == null) {
                return false;
            }
            for (String val : attrib.getValues()) {
                if (val.equalsIgnoreCase(filter.getValue())) {
                    return true;
                }
            }
            return false;
        case GREATER_THEN:
            attrib = authInfo.getAttribs().get(filter.getName());
            if (attrib == null) {
                return false;
            }
            itAttr = attrib.getValues().iterator();
            while (itAttr.hasNext()) {
                if (itAttr.next().compareToIgnoreCase(filter.getValue()) > 0) {
                    return true;
                }
            }
            return false;
        case LESS_THEN:
            attrib = authInfo.getAttribs().get(filter.getName());
            if (attrib == null) {
                return false;
            }
            itAttr = attrib.getValues().iterator();
            while (itAttr.hasNext()) {
                if (itAttr.next().compareToIgnoreCase(filter.getValue()) < 0) {
                    return true;
                }
            }
            return false;
        case AND:
            it = filter.getChildren().iterator();
            while (it.hasNext()) {
                if (!checkEntry(it.next(), authInfo)) {
                    return false;
                }
            }
            return true;
        case OR:
            it = filter.getChildren().iterator();
            while (it.hasNext()) {
                if (checkEntry(it.next(), authInfo)) {
                    return true;
                }
            }
            return false;
        case NOT:
            return !checkEntry(filter.getNot(), authInfo);
    }
    return false;
}
Also used : Attribute(com.tremolosecurity.saml.Attribute) FilterNode(net.sourceforge.myvd.types.FilterNode)

Example 9 with FilterNode

use of net.sourceforge.myvd.types.FilterNode in project OpenUnison by TremoloSecurity.

the class AmazonSimpleDB method addBaseToFilter.

private Filter addBaseToFilter(DistinguishedName base, Filter filter) {
    String rdnName, rdnVal;
    RDN rdn = (RDN) base.getDN().getRDNs().get(0);
    rdnName = rdn.getType();
    rdnVal = rdn.getValue();
    ArrayList<FilterNode> ands = new ArrayList<FilterNode>();
    ands.add(new FilterNode(FilterType.EQUALS, rdnName, rdnVal));
    try {
        ands.add((FilterNode) filter.getRoot().clone());
    } catch (CloneNotSupportedException e) {
    }
    FilterNode newroot = new FilterNode(FilterType.AND, ands);
    filter = new Filter(newroot);
    return filter;
}
Also used : Filter(net.sourceforge.myvd.types.Filter) FilterNode(net.sourceforge.myvd.types.FilterNode) ArrayList(java.util.ArrayList) RDN(com.novell.ldap.util.RDN)

Example 10 with FilterNode

use of net.sourceforge.myvd.types.FilterNode in project OpenUnison by TremoloSecurity.

the class AmazonSimpleDB method search.

@Override
public void search(SearchInterceptorChain chain, DistinguishedName base, Int scope, Filter filter, ArrayList<Attribute> attributes, Bool typesOnly, Results results, LDAPSearchConstraints constraints) throws LDAPException {
    boolean addBase = false;
    boolean addUser = false;
    boolean addGroups = false;
    boolean searchUsers = false;
    boolean searchGroups = false;
    Filter filterToUser = null;
    Iterator<Item> userResults = null;
    Iterator<Item> groupResults = null;
    try {
        filterToUser = new Filter((FilterNode) filter.getRoot().clone());
    } catch (CloneNotSupportedException e) {
    }
    if (scope.getValue() == 0) {
        if (base.getDN().equals(this.baseDN)) {
            addBase = true;
        } else if (base.getDN().equals(this.userDN)) {
            addUser = true;
        } else if (base.getDN().equals(this.groupDN)) {
            addGroups = true;
        } else if (base.getDN().toString().endsWith(this.userDN.toString())) {
            searchUsers = true;
            filterToUser = this.addBaseToFilter(base, filterToUser);
        } else if (base.getDN().toString().endsWith(this.groupDN.toString())) {
            searchGroups = true;
            filterToUser = this.addBaseToFilter(base, filterToUser);
        } else {
            throw new LDAPException("Object not found", LDAPException.NO_SUCH_OBJECT, base.getDN().toString());
        }
    } else if (scope.getValue() == 1) {
        if (base.getDN().equals(this.baseDN)) {
            addUser = true;
            addGroups = true;
        } else if (base.getDN().equals(userDN)) {
            searchUsers = true;
        // filterToUser = this.addBaseToFilter(base, filterToUser);
        } else if (base.getDN().equals(groupDN)) {
            searchGroups = true;
        // filterToUser = this.addBaseToFilter(base, filterToUser);
        }
    } else if (scope.getValue() == 2) {
        if (base.getDN().equals(this.baseDN)) {
            addBase = true;
            addUser = true;
            addGroups = true;
            searchUsers = true;
            searchGroups = true;
        // filterToUser = this.addBaseToFilter(base, filterToUser);
        } else if (base.getDN().equals(userDN) || base.getDN().toString().endsWith(this.userDN.toString())) {
            searchUsers = true;
        // filterToUser = this.addBaseToFilter(base, filterToUser);
        } else if (base.getDN().equals(groupDN) || base.getDN().toString().endsWith(this.groupDN.toString())) {
            searchGroups = true;
        // filterToUser = this.addBaseToFilter(base, filterToUser);
        }
    }
    ArrayList<Entry> baseEntries = new ArrayList<Entry>();
    if (addBase) {
        baseEntries.add(new Entry(EntryUtil.createBaseEntry(this.baseDN)));
    }
    if (addUser) {
        baseEntries.add(new Entry(EntryUtil.createBaseEntry(this.userDN)));
    }
    if (addGroups) {
        baseEntries.add(new Entry(EntryUtil.createBaseEntry(this.groupDN)));
    }
    if (searchUsers) {
        userResults = this.searchAmazonSimpleDB(true, filterToUser, attributes);
    }
    if (searchGroups) {
        groupResults = this.searchAmazonSimpleDB(false, filterToUser, attributes);
    }
    chain.addResult(results, new AmazonSimpleDBEntrySet(this.baseDN.toString(), baseEntries.iterator(), userResults, groupResults, filterToUser), base, scope, filterToUser, attributes, typesOnly, constraints);
}
Also used : Item(com.amazonaws.services.simpledb.model.Item) Entry(net.sourceforge.myvd.types.Entry) LDAPException(com.novell.ldap.LDAPException) Filter(net.sourceforge.myvd.types.Filter) FilterNode(net.sourceforge.myvd.types.FilterNode) ArrayList(java.util.ArrayList)

Aggregations

FilterNode (net.sourceforge.myvd.types.FilterNode)11 ArrayList (java.util.ArrayList)10 Filter (net.sourceforge.myvd.types.Filter)6 LDAPException (com.novell.ldap.LDAPException)4 Entry (net.sourceforge.myvd.types.Entry)3 FilterType (net.sourceforge.myvd.types.FilterType)3 Item (com.amazonaws.services.simpledb.model.Item)2 LDAPAttribute (com.novell.ldap.LDAPAttribute)2 RDN (com.novell.ldap.util.RDN)2 HashMap (java.util.HashMap)2 Iterator (java.util.Iterator)2 Attribute (net.sourceforge.myvd.types.Attribute)2 LDAPEntry (com.novell.ldap.LDAPEntry)1 DN (com.novell.ldap.util.DN)1 Attribute (com.tremolosecurity.saml.Attribute)1 IteratorEntrySet (net.sourceforge.myvd.util.IteratorEntrySet)1 Document (org.bson.Document)1 Bson (org.bson.conversions.Bson)1