private static bool IsChildrenModified(IOguObject oguObject, ADObjectWrapper targetObject) { ADHelper adHelper = SynchronizeContext.Current.ADHelper; SearchResult result = SynchronizeHelper.GetSearchResultByDN(adHelper, targetObject.DN, ADSchemaType.Groups); //当前肯定有改组存在 ResultPropertyValueCollection adMembers = result.Properties["member"]; IUser[] oguUsers = ((IGroup)oguObject).Members.Where(u => u.FullPath.StartsWith(SynchronizeContext.Current.StartPath) && u.IsSideline == false).ToArray(); if (adMembers.Count != oguUsers.Count()) { return(true); } foreach (var memberDN in adMembers) { bool exists = false; for (int i = oguUsers.Length - 1; i >= 0; i--) { if (SynchronizeHelper.AppendNamingContext(SynchronizeHelper.GetOguObjectDN(oguUsers[i])) == memberDN.ToString()) { exists = true; break; } } if (exists == false) { return(true); } } return(false); }
protected override bool ComparePropertyValue(IOguObject srcOguObject, string srcPropertyName, ADObjectWrapper adObject, string targetPropertyName, string context) { string targetPropertyValue = null; if (adObject.Properties[targetPropertyName] != null) { targetPropertyValue = adObject.Properties[targetPropertyName].ToString(); } return(SynchronizeHelper.AppendNamingContext(SynchronizeHelper.GetOguObjectDN(srcOguObject)) == targetPropertyValue); }
public static IOguObject Find(ADObjectWrapper childADObject, IEnumerable <IOguObject> oguObjects) { IOguObject result = null; //这里仅仅是查找所给集合里是不是存在相应的对象 foreach (var obj in oguObjects) { if (obj.ObjectType == SchemaType.Users) { if (((IUser)obj).IsSideline) { // continue; } } var guid = childADObject.NativeGuid; if (SynchronizeContext.Current.IDMapper.ADIDMappingDictionary.ContainsKey(guid)) //有映射 { if (obj.ID == SynchronizeContext.Current.IDMapper.ADIDMappingDictionary[guid].SCObjectID) { result = obj; } } else { switch (childADObject.ObjectType) { case ADSchemaType.Organizations: if (SynchronizeHelper.AppendNamingContext(childADObject.DN) == SynchronizeHelper.AppendNamingContext(SynchronizeHelper.GetOguObjectDN(obj))) { result = obj; } break; case ADSchemaType.Groups: case ADSchemaType.Users: if (childADObject.Properties["samAccountName"].ToString() == obj.Properties["LOGON_NAME"].ToString()) { result = obj; } break; } } } return(result); }
protected override bool ComparePropertyValue(OGUPermission.IOguObject srcOguObject, string srcPropertyName, ADObjectWrapper adObject, string targetPropertyName, string context) { if (srcOguObject.FullPath == SynchronizeContext.Current.SourceRootPath) { //名称以权限中心为准 return(adObject.DN == SynchronizeHelper.AppendNamingContext(SynchronizeContext.Current.TargetRootOU)); } else { string path = SynchronizeHelper.GetRelativePath(srcOguObject); if (path.IndexOf('\\') > 0) { return(base.ComparePropertyValue(srcOguObject, srcPropertyName, adObject, targetPropertyName, context)); } else { string dn = SynchronizeContext.Current.GetMappedName(srcOguObject.Name); return(adObject.DN == SynchronizeHelper.AppendNamingContext(dn)); } } }
public static bool AreParentPathEqaul(IOguObject oguObject, DirectoryEntry entry) { var localPathToDN = SynchronizeHelper.AppendNamingContext(SynchronizeHelper.GetParentObjectDN(oguObject)); return(localPathToDN == ADHelper.GetParentRdnSequence(entry.Properties["distinguishedName"].Value.ToString())); }
public static bool AreParentPathEqaul(IOguObject oguObject, ADObjectWrapper adObject) { var localPathToDN = SynchronizeHelper.AppendNamingContext(SynchronizeHelper.GetParentObjectDN(oguObject)); return(localPathToDN == ADHelper.GetParentRdnSequence(adObject.DN)); }