⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldaputil.java

📁 应用系统的权限管理
💻 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 + -