From 4b973880c969673fbfd785f726f3d7f878ebdd6a Mon Sep 17 00:00:00 2001 From: MaxKey Date: Thu, 27 Jan 2022 11:18:30 +0800 Subject: [PATCH] synchronizer-activedirectory --- .../maxkey/entity/HistorySynchronizer.java | 33 ++++++++++++++++++- .../ActiveDirectoryOrganizationService.java | 29 ++++++++-------- .../ActiveDirectoryUsersService.java | 16 ++++----- .../ldap/LdapOrganizationService.java | 17 +++++----- .../synchronizer/ldap/LdapUsersService.java | 16 ++++----- 5 files changed, 68 insertions(+), 43 deletions(-) diff --git a/maxkey-core/src/main/java/org/maxkey/entity/HistorySynchronizer.java b/maxkey-core/src/main/java/org/maxkey/entity/HistorySynchronizer.java index fe2a330bd..a16f17979 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/HistorySynchronizer.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/HistorySynchronizer.java @@ -64,7 +64,38 @@ public class HistorySynchronizer extends JpaBaseEntity implements Serializable String startDate; String endDate; - public String getId() { + public HistorySynchronizer(String id, String syncId, String syncName, String objectId, + String objectType, String objectName, String syncTime, String result,String instId) { + super(); + this.id = id; + this.syncId = syncId; + this.syncName = syncName; + this.objectId = objectId; + this.objectType = objectType; + this.objectName = objectName; + this.syncTime = syncTime; + this.result = result; + this.instId = instId; + } + + + public HistorySynchronizer(String id, String syncId, String sessionId, String syncName, String objectId, + String objectType, String objectName, String syncTime, String result, String instId) { + super(); + this.id = id; + this.syncId = syncId; + this.sessionId = sessionId; + this.syncName = syncName; + this.objectId = objectId; + this.objectType = objectType; + this.objectName = objectName; + this.syncTime = syncTime; + this.result = result; + this.instId = instId; + } + + + public String getId() { return id; } public void setId(String id) { diff --git a/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryOrganizationService.java b/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryOrganizationService.java index 278dc505f..debff79e6 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryOrganizationService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryOrganizationService.java @@ -65,11 +65,11 @@ public class ActiveDirectoryOrganizationService extends AbstractSynchronizerSer Object obj = results.nextElement(); if (obj instanceof SearchResult) { SearchResult sr = (SearchResult) obj; - if(sr.getNameInNamespace().contains("OU=Domain Controllers")) { - _logger.info("Skip 'OU=Domain Controllers' ."); + if(sr.getNameInNamespace().contains("OU=Domain Controllers")||StringUtils.isEmpty(sr.getName())) { + _logger.info("Skip '' or 'OU=Domain Controllers' ."); continue; } - _logger.debug("Sync OrganizationalUnit {} , name {} , NameInNamespace {}" , + _logger.debug("Sync OrganizationalUnit {} , name [{}] , NameInNamespace [{}]" , (++recordCount),sr.getName(),sr.getNameInNamespace()); HashMap attributeMap = new HashMap(); @@ -114,15 +114,16 @@ public class ActiveDirectoryOrganizationService extends AbstractSynchronizerSer organizationsService.saveOrUpdate(organization); orgsNamePathMap.put(organization.getNamePath(), organization); - HistorySynchronizer historySynchronizer =new HistorySynchronizer(); - historySynchronizer.setId(historySynchronizer.generateId()); - historySynchronizer.setSyncId(this.synchronizer.getId()); - historySynchronizer.setSyncName(this.synchronizer.getName()); - historySynchronizer.setObjectId(organization.getId()); - historySynchronizer.setObjectName(organization.getName()); - historySynchronizer.setObjectType(Organizations.class.getSimpleName()); - historySynchronizer.setInstId(synchronizer.getInstId()); - historySynchronizer.setResult("success"); + HistorySynchronizer historySynchronizer + = new HistorySynchronizer(synchronizer.generateId(), + this.synchronizer.getId(), + this.synchronizer.getName(), + organization.getId(), + organization.getName(), + Organizations.class.getSimpleName(), + org.maxkey.util.DateUtils.getCurrentDateAsString(), + "success", + synchronizer.getInstId()); this.historySynchronizerService.insert(historySynchronizer); } } @@ -140,9 +141,7 @@ public class ActiveDirectoryOrganizationService extends AbstractSynchronizerSer try { Organizations org = new Organizations(); org.setLdapDn(nameInNamespace); - nameInNamespace = nameInNamespace.replaceAll(",OU=", "/").replaceAll("OU=", "/"); - nameInNamespace = nameInNamespace.substring(0, nameInNamespace.length() - ldapUtils.getBaseDN().length() - 1); - String []namePaths = nameInNamespace.split("/"); + String []namePaths = name.replaceAll(",OU=", "/").replaceAll("OU=", "/").split("/"); String namePah= "/"+rootOrganization.getName(); for(int i = namePaths.length -1 ; i >= 0 ; i --) { namePah = namePah + "/" + namePaths[i]; diff --git a/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java b/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java index b11071fc4..87b4fd7dc 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java @@ -65,7 +65,7 @@ public class ActiveDirectoryUsersService extends AbstractSynchronizerService _logger.trace("Skip 'CN=Users' or 'OU=Domain Controllers' . "); continue; } - _logger.debug("Sync User {} , name {} , NameInNamespace {}" , + _logger.debug("Sync User {} , name [{}] , NameInNamespace [{}]" , (++recordCount),sr.getName(),sr.getNameInNamespace()); HashMap attributeMap = new HashMap(); @@ -99,14 +99,12 @@ public class ActiveDirectoryUsersService extends AbstractSynchronizerService UserInfo userInfo = new UserInfo(); userInfo.setLdapDn(nameInNamespace); - nameInNamespace = nameInNamespace.replaceAll(",OU=", "/").replaceAll("OU=", "/").replaceAll("CN=", "/"); - nameInNamespace = nameInNamespace.substring(0, nameInNamespace.length() - ldapUtils.getBaseDN().length() - 1); - _logger.info("nameInNamespace " + nameInNamespace); - String []namePaths = nameInNamespace.split("/"); - String namePah= "/"+rootOrganization.getName(); - for(int i = namePaths.length -1 ; i>=1 ;i--) { - namePah = namePah + "/"+namePaths[i]; - } + String []namePaths = name.replaceAll(",OU=", "/").replaceAll("OU=", "/").split("/"); + String namePah= "/"+rootOrganization.getName(); + for(int i = namePaths.length -1 ; i >= 0 ; i --) { + namePah = namePah + "/" + namePaths[i]; + } + //namePah = namePah.substring(0, namePah.length()); String deptNamePath= namePah.substring(0, namePah.lastIndexOf("/")); _logger.info("deptNamePath " + deptNamePath); diff --git a/maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapOrganizationService.java b/maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapOrganizationService.java index 355552a98..2376706e5 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapOrganizationService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapOrganizationService.java @@ -64,7 +64,7 @@ public class LdapOrganizationService extends AbstractSynchronizerService implem Object obj = results.nextElement(); if (obj instanceof SearchResult) { SearchResult sr = (SearchResult) obj; - _logger.debug("Sync OrganizationalUnit {} , name {} , NameInNamespace {}" , + _logger.debug("Sync OrganizationalUnit {} , name [{}] , NameInNamespace [{}]" , (++recordCount),sr.getName(),sr.getNameInNamespace()); HashMap attributeMap = new HashMap(); @@ -133,14 +133,13 @@ public class LdapOrganizationService extends AbstractSynchronizerService implem try { Organizations org = new Organizations(); org.setLdapDn(nameInNamespace); - nameInNamespace = nameInNamespace.replaceAll(",ou=", "/").replaceAll("ou=", "/"); - nameInNamespace = nameInNamespace.substring(0, nameInNamespace.length() - ldapUtils.getBaseDN().length() - 1); - String []namePaths = nameInNamespace.split("/"); - String namePah= "/"+rootOrganization.getName(); - for(int i = namePaths.length -1 ; i>=0 ;i--) { - namePah = namePah + "/"+namePaths[i]; - } - namePah = namePah.substring(0, namePah.length() -1); + String []namePaths = name.replaceAll(",OU=", "/").replaceAll("OU=", "/").split("/"); + String namePah= "/"+rootOrganization.getName(); + for(int i = namePaths.length -1 ; i >= 0 ; i --) { + namePah = namePah + "/" + namePaths[i]; + } + + namePah = namePah.substring(0, namePah.length() - 1); org.setId(org.generateId()); org.setCode(org.getId()); diff --git a/maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapUsersService.java b/maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapUsersService.java index 825472080..192cd9c8f 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapUsersService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapUsersService.java @@ -58,7 +58,7 @@ public class LdapUsersService extends AbstractSynchronizerService implements IS Object obj = results.nextElement(); if (obj instanceof SearchResult) { SearchResult sr = (SearchResult) obj; - _logger.debug("Sync User {} , name {} , NameInNamespace {}" , + _logger.debug("Sync User {} , name [{}] , NameInNamespace [{}]" , (++recordCount),sr.getName(),sr.getNameInNamespace()); HashMap attributeMap = new HashMap(); @@ -93,14 +93,12 @@ public class LdapUsersService extends AbstractSynchronizerService implements IS public UserInfo buildUserInfo(HashMap attributeMap,String name,String nameInNamespace) { UserInfo userInfo = new UserInfo(); userInfo.setLdapDn(nameInNamespace); - nameInNamespace = nameInNamespace.replaceAll(",ou=", "/").replaceAll("ou=", "/").replaceAll("uid=", "/").replaceAll("cn=", "/"); - nameInNamespace = nameInNamespace.substring(0, nameInNamespace.length() - ldapUtils.getBaseDN().length() - 1); - _logger.info("nameInNamespace " + nameInNamespace); - String []namePaths = nameInNamespace.split("/"); - String namePah= "/"+rootOrganization.getName(); - for(int i = namePaths.length -1 ; i>=1 ;i--) { - namePah = namePah + "/"+namePaths[i]; - } + String []namePaths = name.replaceAll(",OU=", "/").replaceAll("OU=", "/").split("/"); + String namePah= "/"+rootOrganization.getName(); + for(int i = namePaths.length -1 ; i >= 0 ; i --) { + namePah = namePah + "/" + namePaths[i]; + } + //namePah = namePah.substring(0, namePah.length()); String deptNamePath= namePah.substring(0, namePah.lastIndexOf("/")); _logger.info("deptNamePath " + deptNamePath);