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());
}
}
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);
}
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;
}
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;
}
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);
}
Aggregations