/// <summary> /// 得到ServerInfo的配置信息 /// </summary> /// <returns></returns> protected virtual ServerInfo GetServerInfo() { ExceptionHelper.FalseThrow(ServerInfoConfigSettings.GetConfig().ServerInfos.ContainsKey("userInfo"), "没有在serverInfoConfigSettings/serverInfos配置userInfo项"); return(ServerInfoConfigSettings.GetConfig().ServerInfos["userInfo"].ToServerInfo()); }
private static ADHelper CreateADHelper() { //初始化域控制器的配置信息 ServerInfoConfigureElement serverSetting = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"]; ServerInfo serverInfo = serverSetting == null ? null : serverSetting.ToServerInfo(); PermissionCenterToADSynchronizeSettings config = PermissionCenterToADSynchronizeSettings.GetConfig(); return(ADHelper.GetInstance(serverInfo)); }
public void DoConvert() { ServerInfo serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo(); for (int i = 0; i < ADSyncGroupSettings.GetConfig().GroupConfigurations.Count; i++) { GroupConfigurationElement element = ADSyncGroupSettings.GetConfig().GroupConfigurations[i]; AccreditHelper.SyncGroupMembers(element.SourceDN, element.DestinationPath, serverInfo); } }
public static AD2DBInitialParams GetParams() { AD2DBInitialParams result = new AD2DBInitialParams(); ExceptionHelper.FalseThrow(ServerInfoConfigSettings.GetConfig().ServerInfos.ContainsKey("dc"), "不能在配制节serverInfoConfigSettings中找到名称为dc的配置项"); result.serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo(); result.adHelper = ADHelper.GetInstance(result.serverInfo); result.userInfoExtend = ADToDBConfigSettings.GetConfig().UserInfoExtendConnectionName; return(result); }
public SmtpParameters ToSmtpParameters() { ServerInfoConfigSettings.GetConfig().ServerInfos.ContainsKey(ServerInfoName).FalseThrow("生成Smtp信息时,不能找到'{0}'对应的ServerInfo信息", ServerInfoName); SmtpParameters result = new SmtpParameters(); result.ServerInfo = ServerInfoConfigSettings.GetConfig().ServerInfos[ServerInfoName].ToServerInfo(); result.AfterSentOP = this.AfterSentOP; result.UseDefaultCredentials = this.UseDefaultCredentials; result.DefaultSender = EmailAddress.FromDescription(this.DefaultSender); return(result); }
//从配置信息中初始化同步上下文 private void InitContext(string startPath) { SynchronizeContext context = SynchronizeContext.Current; context.SynchronizeResult = ADSynchronizeResult.Correct; //初始化域控制器的配置信息 ServerInfoConfigureElement serverSetting = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"]; ServerInfo serverInfo = serverSetting == null ? null : serverSetting.ToServerInfo(); PermissionCenterToADSynchronizeSettings config = PermissionCenterToADSynchronizeSettings.GetConfig(); context.SourceRootPath = config.SourceRoot; //初始化(权限中心)开始同步的路径和回收站路径 string path = startPath.IsNullOrEmpty() ? config.DefaultStartPath : startPath; if (string.IsNullOrEmpty(path)) { path = context.SourceRootPath; } if (path != context.SourceRootPath && path.StartsWith(context.SourceRootPath + "\\", StringComparison.Ordinal) == false) { throw new System.Configuration.ConfigurationErrorsException("开始同步路径必须位于同步根范围内"); } context.StartPath = path; context.RecycleBinOU = config.RecycleBinOU; //默认用户口令 context.DefaultPassword = config.DefaultPassword; context.TargetRootOU = config.TargetRootOU; context.ADHelper = ADHelper.GetInstance(serverInfo); //初始化权限中心和AD的ID映射关系 context.ExtendLockTime(); context.IDMapper.Initialize(); context.ClearIncludeMappings(); foreach (ObjectMappingElement elem in config.ObjectMappings) { context.AddIncludeMapping(elem.SCObjectName, elem.ADObjectName); } }
public void Run() { FileInfo logfile = new FileInfo(Environment.CurrentDirectory.ToString() + "/log.txt"); StreamWriter write = null; if (logfile.Exists) { write = logfile.AppendText(); write.WriteLine("---------------------------------------------------------------------------------------"); } else { write = logfile.CreateText(); } write.WriteLine("用户名,导入结果,操作时间,失败原因"); List <Picture> pictures = new List <Picture>(); List <Picture> deletedPictures = new List <Picture>(); Database database = null; try { #region 读取新加用户的图片的数据库信息 database = DbHelper.GetDBDatabase("HB2008"); string sql = @"select top 1000 c.LOGIN_NAME, a.FILE_NAME, a.CONTENT_DATA from WF.MATERIAL_CONTENT a join wf.IMAGE b " + "on a.CONTENT_ID = b.ID join wf.INITIALIZATION_USER_AD_IMAGE c on b.RESOURCE_ID = c.PICTURE_ID where a.CLASS = 'HR_PHOTO' and c.UpdateStatus = 0 and c.VALIDSTATUS = 1 "; DbDataReader dr = database.ExecuteReader(CommandType.Text, sql); while (dr.Read()) { Picture pic = new Picture(); pic.LOGIN_NAME = dr["LOGIN_NAME"].ToString(); pic.FILE_NAME = dr["FILE_NAME"] != null ? dr["FILE_NAME"].ToString() : string.Empty; pic.CONTENT_DATA = (byte[])dr["CONTENT_DATA"]; pictures.Add(pic); } dr.Close(); #endregion #region 读取删除用户的图片的数据库信息 sql = @"select LOGIN_NAME from WF.INITIALIZATION_USER_AD_IMAGE where VALIDSTATUS = 0 and UpdateStatus = 0 "; dr = database.ExecuteReader(CommandType.Text, sql); while (dr.Read()) { Picture pic = new Picture(); pic.LOGIN_NAME = dr["LOGIN_NAME"].ToString(); deletedPictures.Add(pic); } dr.Close(); #endregion } catch { lblResult.Text = "失败"; pictures.Clear(); deletedPictures.Clear(); write.WriteLine("SQL Server 服务器异常"); return; } #region 向AD中写入图片信息 foreach (Picture pic in pictures) { DirectoryEntry entity = null; List <SearchResult> result = null; try { var exFilter = new ExtraFilter(); exFilter.UserFilter = "samAccountName=" + pic.LOGIN_NAME; string filter = ADSearchConditions.GetFilterByMask(ADSchemaType.Users, exFilter); ADSearchConditions conditons = new ADSearchConditions(); conditons.Scope = SearchScope.Subtree; ServerInfo serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo(); MCS.Library.ADHelper adHelper = ADHelper.GetInstance(serverInfo); result = adHelper.ExecuteSearch(adHelper.GetRootEntry(), filter, conditons, "distinguishedName"); if (result.Count < 1) { write.WriteLine(pic.LOGIN_NAME + ",失败," + DateTime.Now + ",AD中找不到该账号"); } else { #region 处理逻辑 entity = adHelper.NewEntry(result[0].Properties["distinguishedName"][0].ToString()); if (pic.CONTENT_DATA.Length < 102400) { if (entity.Properties.Contains("thumbnailPhoto")) { entity.Properties["thumbnailPhoto"][0] = pic.CONTENT_DATA; } else { entity.Properties["thumbnailPhoto"].Add(pic.CONTENT_DATA); } } else { ImageHelper imgHelp = new ImageHelper(pic.CONTENT_DATA); double percent = 80000.00 / pic.CONTENT_DATA.Length; if (pic.FILE_NAME != string.Empty && pic.FILE_NAME != null) { if (pic.FILE_NAME.Split('.').Length > 1) { if (pic.FILE_NAME.Split('.')[1].ToLower() == "jpg" || pic.FILE_NAME.Split('.')[1].ToLower() == "gif" || pic.FILE_NAME.Split('.')[1].ToLower() == "png" || pic.FILE_NAME.Split('.')[1].ToLower() == "bmp") { if (entity.Properties.Contains("thumbnailPhoto")) { entity.Properties["thumbnailPhoto"][0] = imgHelp.GetThumbnailImage(pic.FILE_NAME.Split('.')[1].ToLower(), percent); } else { entity.Properties["thumbnailPhoto"].Add(imgHelp.GetThumbnailImage(pic.FILE_NAME.Split('.')[1].ToLower(), percent)); } } else { if (entity.Properties.Contains("thumbnailPhoto")) { entity.Properties["thumbnailPhoto"][0] = imgHelp.GetThumbnailImage("jpg", percent); } else { entity.Properties["thumbnailPhoto"].Add(imgHelp.GetThumbnailImage("jpg", percent)); } } } else { if (entity.Properties.Contains("thumbnailPhoto")) { entity.Properties["thumbnailPhoto"][0] = imgHelp.GetThumbnailImage("jpg", percent); } else { entity.Properties["thumbnailPhoto"].Add(imgHelp.GetThumbnailImage("jpg", percent)); } } } else { if (entity.Properties.Contains("thumbnailPhoto")) { entity.Properties["thumbnailPhoto"][0] = imgHelp.GetThumbnailImage("jpg", percent); } else { entity.Properties["thumbnailPhoto"].Add(imgHelp.GetThumbnailImage("jpg", percent)); } } } #endregion entity.CommitChanges(); entity.Close(); string sql = @"update WF.INITIALIZATION_USER_AD_IMAGE set UPDATESTATUS = 1 , UPDATETIME = GETDATE() where LOGIN_NAME = '" + pic.LOGIN_NAME + "' "; database.ExecuteNonQuery(CommandType.Text, sql); write.WriteLine(pic.LOGIN_NAME + ",成功," + DateTime.Now + ","); } } catch (Exception ex) { if (entity != null) { entity.Close(); } lblResult.Text = "失败"; write.WriteLine(pic.LOGIN_NAME + ",失败," + DateTime.Now + "," + ex.Message); } } foreach (Picture pic in deletedPictures) { DirectoryEntry entity = null; List <SearchResult> result = null; try { var exFilter = new ExtraFilter(); exFilter.UserFilter = "samAccountName=" + pic.LOGIN_NAME; string filter = ADSearchConditions.GetFilterByMask(ADSchemaType.Users, exFilter); ADSearchConditions conditons = new ADSearchConditions(); conditons.Scope = SearchScope.Subtree; ServerInfo serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo(); MCS.Library.ADHelper adHelper = ADHelper.GetInstance(serverInfo); result = adHelper.ExecuteSearch(adHelper.GetRootEntry(), filter, conditons, "distinguishedName"); if (result.Count < 1) { write.WriteLine(pic.LOGIN_NAME + ",失败," + DateTime.Now + ",AD中找不到该账号"); } else { entity = adHelper.NewEntry(result[0].Properties["distinguishedName"][0].ToString()); if (entity.Properties.Contains("thumbnailPhoto")) { entity.Properties["thumbnailPhoto"].Clear(); } entity.CommitChanges(); entity.Close(); string sql = @"update WF.INITIALIZATION_USER_AD_IMAGE set UPDATESTATUS = 1, UPDATETIME = GETDATE() where LOGIN_NAME = '" + pic.LOGIN_NAME + "' "; database.ExecuteNonQuery(CommandType.Text, sql); write.WriteLine(pic.LOGIN_NAME + ",成功," + DateTime.Now + ","); } } catch (Exception ex) { if (entity != null) { entity.Close(); } lblResult.Text = "失败"; write.WriteLine(pic.LOGIN_NAME + ",失败," + DateTime.Now + "," + ex.Message); } } write.Close(); #endregion pictures.Clear(); deletedPictures.Clear(); if (lblResult.Text == "失败") { lblResult.Text = "失败,请查看日志记录"; } else { lblResult.Text = "成功"; } }
private static ADHelper GetADHelper() { ServerInfo serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo(); return(ADHelper.GetInstance(serverInfo)); }