/*
* (c) Copyright 2001 MyCorporation.
* All Rights Reserved.
*/
package com.idega.core.ldap.server.util;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.naming.Binding;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
/**
* @version 1.0
* @author
*/
public class LDAPConnection {
Hashtable environment = new Hashtable();
public LDAPConnection() {
this.environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
this.environment.put("com.sun.jndi.ldap.connect.pool", "true");
}
private Ldap ldap;
public void loadConfiguration(Ldap newldap) throws IOException {
this.ldap = newldap;
}
InitialDirContext initDirContext = null;
public void connect() throws NamingException {
this.environment.put(
Context.PROVIDER_URL,
"ldap://" + this.ldap.getServer() + ":" + this.ldap.getPort() + "/" + this.ldap.getBaseDN());
if(this.ldap.getUser() != null) {
this.environment.put(Context.SECURITY_PRINCIPAL, this.ldap.getUser());
}
if(this.ldap.getPassword() != null) {
this.environment.put(Context.SECURITY_CREDENTIALS, this.ldap.getPassword());
}
Enumeration keys = this.environment.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
System.out.println("Environment[" + key + "] = " + this.environment.get(key));
}
System.out.println("Connecting...");
this.initDirContext = new InitialDirContext(this.environment);
}
public InitialDirContext getDirContext() {
return this.initDirContext;
}
/*private void dumpDirContext(DirContext dctx, String indent)
throws NamingException {
NamingEnumeration bindings = dctx.listBindings("");
while (bindings.hasMore()) {
Binding bd = (Binding) bindings.next();
DirContext sctx = (DirContext) bd.getObject();
System.out.println(indent + "<B>" + bd.getName() + "</B>");
Attributes a = sctx.getAttributes("");
NamingEnumeration attrlist = a.getAll();
while (attrlist.hasMore()) {
Attribute att = (Attribute) attrlist.next();
System.out.println(indent + " " + att.toString());
}
dumpDirContext(sctx, indent + " ");
}
}*/
public void findZFD() throws NamingException {
SearchControls cons = new SearchControls();
cons.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration searchResults = this.initDirContext.search("", "(ou=zfd)", cons);
while (searchResults.hasMore()) {
Binding bd = (Binding) searchResults.next();
//DirContext sctx = (DirContext) bd.getObject();
System.out.println("bd:" + bd.getName());
//System.out.println("Binding : " + bd.getClassName());
// System.out.println(" " + bd.getName() + " ");
Attributes a = this.initDirContext.getAttributes(bd.getName());
if (a != null) {
NamingEnumeration attrlist = a.getAll();
while (attrlist.hasMore()) {
Attribute att = (Attribute) attrlist.next();
System.out.println("Attribute: " + att.toString());
}
}
}
}
public void dump() throws NamingException {
dump(this.initDirContext, "");
}
public static void dumpNamingEnumeration(NamingEnumeration enumer) throws NamingException {
while (enumer.hasMore()) {
Binding bd = (Binding) enumer.next();
//DirContext sctx = (DirContext) bd.getObject();
System.out.println(" " + bd.getName() + " ");
}
}
public static void dump(InitialDirContext dctx, String indent) throws NamingException {
NamingEnumeration bindings = dctx.listBindings("");
while (bindings.hasMore()) {
Binding bd = (Binding) bindings.next();
//DirContext sctx = (DirContext) bd.getObject();
System.out.println(indent + "<B>" + bd.getName() + "</B>");
//Attributes a = sctx.getAttributes("");
//NamingEnumeration attrlist = a.getAll();
//while (attrlist.hasMore()) {
//Attribute att = (Attribute) attrlist.next();
//System.out.println(indent + att.toString());
//}
//dumpDirContext(sctx, indent + " ");
}
}
}