📄 ldaputil.java
字号:
package com.gmdq.ldapuser;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.gmdq.user.UserManager;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPEntry;
import com.novell.ldap.LDAPException;
import com.novell.ldap.LDAPSearchConstraints;
import com.novell.ldap.LDAPSearchResults;
/**
* ldap杩炴帴涓庢祴璇?
* Created by IntelliJ IDEA.
* User: Alex
* Date: 2009-1-13
* Time: 10:30:41
*/
public class LdapUtil {
private UserManager userManager;
private LDAPConnection lc = null;
private LDAPSearchConstraints cons = null;
private List<String> dns = new ArrayList<String>();
private List<String> users = new ArrayList<String>();
private void init() {
try {
if (lc == null || !lc.isConnected()) {
lc = new LDAPConnection();
lc.connect("10.2.0.20", 389);
lc.bind(LDAPConnection.LDAP_V3, "aaa", "1234567");
System.out.println(lc);
cons = lc.getSearchConstraints();
cons.setMaxResults(10000);
cons.setServerTimeLimit(100000);
cons.setTimeLimit(100000);
}
} catch (Exception e) {
e.printStackTrace();
close();
}
}
private void close() {
if (lc != null) {
try {
lc.disconnect();
} catch (LDAPException e) {
e.printStackTrace();
}
}
}
private void getAll(String searchDn, String filter) {
StringBuffer sb = null;
LDAPEntry entry = null;
String dnName = null;
try {
LDAPSearchResults rs = lc.search(searchDn,
LDAPConnection.SCOPE_SUB, filter, null, false, cons);
while (rs != null && rs.hasMore()) {
entry = rs.next();
dnName = entry.getDN();
sb = new StringBuffer();
sb
.append(
entry.getAttribute("sAMAccountName")
.getStringValue()).append("*").append(
entry.getAttribute("displayName") == null ? ""
: entry.getAttribute("displayName")
.getStringValue()).append("*")
.append(
entry.getAttribute("department") == null ? ""
: entry.getDN());
users.add(sb.toString());
}
} catch (LDAPException e) {
System.out.println(dnName + e.getMessage());
e.printStackTrace();
}
}
private void getOU(String searchDn, String filter) {
LDAPEntry entry = null;
String dnName = null;
String[] str = null;
try {
LDAPSearchResults rs = lc.search(searchDn,
LDAPConnection.SCOPE_ONE, filter, null, false, cons);
while (rs.hasMore()) {
entry = rs.next();
dnName = entry.getDN();
str = dnName.split("[,]");
if (str.length == 5 && dnName.contains("国美总部")) {
dns.add(entry.getDN());
} else if (str.length == 6) {
if (!dnName.contains("国美总部") || !dnName.contains("北京大中")) {
dns.add(entry.getDN());
}
} else if (str.length == 7 && dnName.contains("北京大中")) {
dns.add(entry.getDN());
}
getOU(dnName, filter);
}
} catch (LDAPException e) {
System.err.print("连接异常!");
e.printStackTrace();
}
}
public List<String> getUser(String searchDn, String ouFilter,
String userFilter) {
this.init();
this.getOU(searchDn, ouFilter);
for (String ou : dns) {
this.getAll(ou, userFilter);
}
this.close();
return users;
}
/**
*
*
* @return
*/
/**
*
*/
private int saveNewUserToDb(List<LdapUserInfo> toSaveUserList) {
int result = 0;
for (int i = 0; i < toSaveUserList.size(); i++) {
// ADUser user = new ADUser();
// user.setLoginName(toSaveUserList.get(i).getLoginName());
System.out.println("loginName====="+toSaveUserList.get(i).getLoginName());
//user.setFullName(toSaveUserList.get(i).getFullName());
System.out.println("fullName====="+toSaveUserList.get(i).getFullName());
//userManager.saveUser(user);
result++;
}
return result;
}
private boolean notExistUser(LdapUserInfo ldapUserInfo, List userList) {
if (null == userList) return true;
for (int i = 0; i < userList.size(); i++) {
// if (((ADUser) userList.get(i)).getLoginName().equals(ldapUserInfo.getLoginName())) {
return false;
//}
}
return true;
}
public LdapUserInfo getUser(String s) {
return null;
}
public UserManager getUserManager() {
return userManager;
}
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
public static void main(String[] args)
{
LdapUtil test = new LdapUtil();
String searchDn = "OU=国美集团,DC=gome,DC=inc";
String ouFilter = "(objectClass=organizationalUnit)";
String userFilter = "(&(objectClass=user)(!(objectClass=computer)))";
List<String> all = test.getUser(searchDn, ouFilter, userFilter);
System.out.println(all.size());
FileWriter fw = null;
try {
File file = new File("c:/test.txt");
file.createNewFile();
fw = new FileWriter(file);
for (String y : all) {
fw.write(y);
fw.write("\n");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -