From 1e5f278d7dccff655f192e93ff767243de12de77 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 15 Oct 2014 11:57:47 +0200 Subject: LdapSearch: Add option to search for specific user to get their dn --- .../org/openslx/taskmanager/tasks/LdapSearch.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java b/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java index f861b6a..157b5e1 100644 --- a/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java +++ b/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java @@ -21,9 +21,13 @@ public class LdapSearch extends SystemCommandTask private String binddn = null; @Expose private String bindpw = null; + @Expose + private String username = null; private String fifo = null; + private boolean getDn = false; + private volatile int userCount = 0; private Output status = new Output(); @@ -57,7 +61,12 @@ public class LdapSearch extends SystemCommandTask status.messages = e.toString(); return null; } - status.addMessage( "Trying to find 4 random AD users to verify everything is all right..." ); + if ( this.username == null ) { + status.addMessage( "Trying to find 4 random AD users to verify everything is all right..." ); + this.username = "*"; + } else { + this.getDn = true; + } return new String[] { "ldapsearch", @@ -70,8 +79,9 @@ public class LdapSearch extends SystemCommandTask "-l", "4", // Time limit in seconds "-z", "4", // Max number of results "-o", "ldif-wrap=no", // Turn off retarded line wrapping done by ldapsearch - "(&(objectClass=user)(objectClass=person)(sAMAccountName=*))", - "sAMAccountName" // Only one attribute + "(&(objectClass=user)(objectClass=person)(sAMAccountName=" + this.username + "))", + "sAMAccountName", // Find account name + "dn" // And dn }; } @@ -91,10 +101,13 @@ public class LdapSearch extends SystemCommandTask @Override protected void processStdOut( String line ) { - if ( line.contains( "sAMAccountName: " ) ) { + if ( line.startsWith( "sAMAccountName: " ) ) { status.addMessage( "Found AD user " + line.substring( 16 ) + " :-)" ); this.userCount++; } + if ( this.getDn && line.startsWith( "dn: " ) ) { + status.dn = line.substring( 4 ); + } } @Override @@ -108,6 +121,7 @@ public class LdapSearch extends SystemCommandTask class Output { private String messages = null; + public String dn = null; private void addMessage( String str ) { -- cgit v1.2.3-55-g7522