import java.util.Hashtable;
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.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class GetDSE implements LDAPOIDs {
private int len = NamesAndOIDs.length;
public static void main(String[] args) {
if (args.length != 1) {
usage();
}
String hostURL = args[0];
GetDSE dse = new GetDSE();
String oid, value;
String searchBase = "";
String searchFilter = "(objectclass=*)";
SearchControls ctrl = new SearchControls();
ctrl.setSearchScope(SearchControls.OBJECT_SCOPE);
try {
Hashtable env = new Hashtable(5, 0.75f);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, hostURL);
DirContext ctx = new InitialDirContext (env);
NamingEnumeration results = ctx.search(searchBase,
searchFilter
ctrl);
SearchResult nextEntry = ( SearchResult )results.next();
Attributes attrSet = nextEntry.getAttributes();
if (attrSet != null) {
System.out.println("\n\tRoot DSE:\n---------------------------"
+ "-----------\n Attributes of Root DSE:");
NamingEnumeration attrs = attrSet.getAll();
while ( attrs.hasMoreElements() ) {
Attribute attr = (Attribute)attrs.next();
String attrID = attr.getID();
System.out.println(" " + attrID );
NamingEnumeration values = attr.getAll();
while ( values.hasMoreElements() ) {
if ( (attrID.equalsIgnoreCase("supportedExtension"))
||(attrID.equalsIgnoreCase("supportedControl"))) {
oid = (String) values.nextElement();
System.out.print(" " + oid);
dse.getOidInfo(oid);
}
else {
value = (String) values.nextElement();
System.out.println(" " + value);
}
}
}
}
System.out.println("\n\tGetDSE was completed.");
}
catch (NamingException e) {
System.err.println("\n\tGetDSE example failed.");
e.printStackTrace();
}
finally {
System.exit(0);
}
}
public static void usage() {
System.out.println("\n Usage: java GetDSE <host URL>");
System.out.println("\n Example: java GetDSE ldap://Acme.com:389");
System.exit(1);
}
public void getOidInfo( String value ) {
String descriptiveName="";
for ( int i = 0; i < len; i++ ) {
if ( value.equalsIgnoreCase(NamesAndOIDs[i][OIDValueIndex]) ) {
descriptiveName = NamesAndOIDs[i][OIDDescrIndex];
if (descriptiveName.length() != 0) {
System.out.print( " (" + descriptiveName + ")\n" );
break;
}
else
System.out.println("");
}
}
if (descriptiveName.length() == 0) {
System.out.print("\n");
}
}
}