Exemple #1
0
 public ArbitrationConfigFromAD(SyncServiceInstance syncDaemonArbitrationConfig, RidMasterInfo ridMasterInfo)
 {
     this.SyncDaemonArbitrationConfig = syncDaemonArbitrationConfig;
     this.RidMasterInfo = ridMasterInfo;
     this.PassiveInstanceSleepInterval = TimeSpan.FromSeconds((double)this.SyncDaemonArbitrationConfig.PassiveInstanceSleepInterval);
     this.ActiveInstanceSleepInterval  = TimeSpan.FromSeconds((double)this.SyncDaemonArbitrationConfig.ActiveInstanceSleepInterval);
 }
        public static void ConvertE14MVtoE15MV(SyncServiceInstance serviceInstance, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval)
        {
            ITopologyConfigurationSession ridmasterSession = MsoCookieConverter.GetRIDMasterSession();

            ridmasterSession.UseConfigNC = true;
            ADObjectId orgContainerId = ridmasterSession.GetOrgContainerId();
            ADRawEntry adrawEntry     = ridmasterSession.ReadADRawEntry(orgContainerId.Parent, MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.CookieProperties);

            ridmasterSession.UseConfigNC = false;
            List <MsoMainStreamCookie>          ordredCookieList  = MsoCookieConverter.GetOrdredCookieList(serviceInstance.Name, adrawEntry.propertyBag[MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.MsoForwardSyncNonRecipientCookie] as IEnumerable <byte[]>);
            List <MsoMainStreamCookie>          ordredCookieList2 = MsoCookieConverter.GetOrdredCookieList(serviceInstance.Name, adrawEntry.propertyBag[MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.MsoForwardSyncRecipientCookie] as IEnumerable <byte[]>);
            MsoCompanyMainStreamCookieManager   msoCompanyMainStreamCookieManager   = new MsoCompanyMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval);
            MsoRecipientMainStreamCookieManager msoRecipientMainStreamCookieManager = new MsoRecipientMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval);

            if (ordredCookieList.Count > 0)
            {
                MsoMainStreamCookie msoMainStreamCookie = ordredCookieList.Last <MsoMainStreamCookie>();
                msoCompanyMainStreamCookieManager.WriteCookie(msoMainStreamCookie.RawCookie, null, msoMainStreamCookie.TimeStamp, msoMainStreamCookie.IsSyncPropertySetUpgrading, msoMainStreamCookie.SyncPropertySetVersion, true);
            }
            if (ordredCookieList2.Count > 0)
            {
                MsoMainStreamCookie msoMainStreamCookie2 = ordredCookieList2.Last <MsoMainStreamCookie>();
                msoRecipientMainStreamCookieManager.WriteCookie(msoMainStreamCookie2.RawCookie, null, msoMainStreamCookie2.TimeStamp, msoMainStreamCookie2.IsSyncPropertySetUpgrading, msoMainStreamCookie2.SyncPropertySetVersion, true);
            }
        }
Exemple #3
0
 internal static ObjectId GetRootId(FailedMSOSyncObjectIdParameter identityParameter)
 {
     if (identityParameter != null && identityParameter.IsServiceInstanceDefinied)
     {
         ADObjectId adobjectId = SyncServiceInstance.GetServiceInstanceObjectId(identityParameter.ServiceInstance.InstanceId);
         return(SyncServiceInstance.GetDivergenceContainerId(adobjectId));
     }
     return(SyncServiceInstance.GetMsoSyncRootContainer());
 }
        public void MigrateE15CookieToE14Cookie(string serviceInstanceName)
        {
            SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName);

            if (syncServiceInstance != null)
            {
                int      maxCookieHistoryCount = 100;
                TimeSpan cookieHistoryInterval = new TimeSpan(0, 30, 0);
                MsoCookieConverter.ConvertE15toE14MV(syncServiceInstance, maxCookieHistoryCount, cookieHistoryInterval);
                return;
            }
            throw new ArgumentException("serviceInstanceName could not be found");
        }
        public static void ConvertE15toE14MV(SyncServiceInstance serviceInstance, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval)
        {
            ITopologyConfigurationSession ridmasterSession = MsoCookieConverter.GetRIDMasterSession();
            MsoMainStreamCookie           cookieToAdd      = null;
            MsoMainStreamCookie           cookieToAdd2     = null;

            if (serviceInstance.IsMultiObjectCookieEnabled)
            {
                MsoMultiObjectCookieManager msoMultiObjectCookieManager  = new MsoMultiObjectCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.CompanyIncremental);
                MsoMultiObjectCookieManager msoMultiObjectCookieManager2 = new MsoMultiObjectCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.RecipientIncremental);
                ForwardSyncCookie           forwardSyncCookie            = msoMultiObjectCookieManager.ReadMostRecentCookie();
                ForwardSyncCookie           forwardSyncCookie2           = msoMultiObjectCookieManager2.ReadMostRecentCookie();
                if (forwardSyncCookie != null)
                {
                    cookieToAdd = new MsoMainStreamCookie(serviceInstance.Name, forwardSyncCookie.Data, forwardSyncCookie.Timestamp, new ServerVersion(forwardSyncCookie.SyncPropertySetVersion), forwardSyncCookie.IsUpgradingSyncPropertySet);
                }
                if (forwardSyncCookie2 != null)
                {
                    cookieToAdd2 = new MsoMainStreamCookie(serviceInstance.Name, forwardSyncCookie2.Data, forwardSyncCookie2.Timestamp, new ServerVersion(forwardSyncCookie2.SyncPropertySetVersion), forwardSyncCookie2.IsUpgradingSyncPropertySet);
                }
            }
            else
            {
                MsoCompanyMainStreamCookieManager   msoCompanyMainStreamCookieManager   = new MsoCompanyMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval);
                MsoRecipientMainStreamCookieManager msoRecipientMainStreamCookieManager = new MsoRecipientMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval);
                cookieToAdd  = msoCompanyMainStreamCookieManager.ReadMostRecentCookie();
                cookieToAdd2 = msoRecipientMainStreamCookieManager.ReadMostRecentCookie();
            }
            ridmasterSession.UseConfigNC = true;
            MsoCookieConverter.E14MsoMainStreamCookieContainer[] array = ridmasterSession.Find <MsoCookieConverter.E14MsoMainStreamCookieContainer>(ridmasterSession.GetOrgContainerId().Parent, QueryScope.SubTree, null, null, 1);
            if (array == null || array.Length == 0)
            {
                throw new ExchangeConfigurationContainerNotFoundException();
            }
            List <MsoMainStreamCookie> list  = MsoCookieConverter.GetOrderedE14CookieList(array[0].MsoForwardSyncNonRecipientCookie);
            List <MsoMainStreamCookie> list2 = MsoCookieConverter.GetOrderedE14CookieList(array[0].MsoForwardSyncRecipientCookie);

            list  = MsoCookieConverter.AddCookieToE14MVList(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, cookieToAdd, list);
            list2 = MsoCookieConverter.AddCookieToE14MVList(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, cookieToAdd2, list2);
            array[0].MsoForwardSyncNonRecipientCookie.Clear();
            foreach (MsoMainStreamCookie msoMainStreamCookie in list)
            {
                array[0].MsoForwardSyncNonRecipientCookie.Add(msoMainStreamCookie.ToStorageCookie());
            }
            array[0].MsoForwardSyncRecipientCookie.Clear();
            foreach (MsoMainStreamCookie msoMainStreamCookie2 in list2)
            {
                array[0].MsoForwardSyncRecipientCookie.Add(msoMainStreamCookie2.ToStorageCookie());
            }
            ridmasterSession.Save(array[0]);
        }
Exemple #6
0
        public static ForwardSyncCookieHeader[] LoadCookieHeaders(ITopologyConfigurationSession cookieSession, string serviceInstanceName, ForwardSyncCookieType cookieType)
        {
            ADObjectId serviceInstanceObjectId = SyncServiceInstance.GetServiceInstanceObjectId(serviceInstanceName);
            Container  container = cookieSession.Read <Container>(serviceInstanceObjectId.GetChildId("Cookies"));

            if (container != null)
            {
                ComparisonFilter          filter = new ComparisonFilter(ComparisonOperator.Equal, ForwardSyncCookieHeaderSchema.Type, cookieType);
                ForwardSyncCookieHeader[] array  = cookieSession.Find <ForwardSyncCookieHeader>(container.Id, QueryScope.OneLevel, filter, null, 0);
                Array.Sort <ForwardSyncCookieHeader>(array, (ForwardSyncCookieHeader x, ForwardSyncCookieHeader y) => DateTime.Compare(x.Timestamp, y.Timestamp));
                return(array);
            }
            return(new ForwardSyncCookieHeader[0]);
        }
Exemple #7
0
 public void InitializeServiceInstanceADStructure()
 {
     if (this.configSession.Read <SyncServiceInstance>(this.serviceInstanceObjectId) == null)
     {
         SyncServiceInstance syncServiceInstance = new SyncServiceInstance();
         syncServiceInstance.SetId(this.serviceInstanceObjectId);
         this.configSession.Save(syncServiceInstance);
     }
     if (this.configSession.Read <ADContainer>(this.divergenceContainerObjectId) == null)
     {
         ADContainer adcontainer = new ADContainer();
         adcontainer.SetId(this.divergenceContainerObjectId);
         this.configSession.Save(adcontainer);
     }
 }
        public void MigrateE14CookieToE15Cookie(string serviceInstanceName)
        {
            SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName);

            if (syncServiceInstance == null)
            {
                throw new ArgumentException("serviceInstanceName could not be found");
            }
            int      maxCookieHistoryCount = 100;
            TimeSpan cookieHistoryInterval = new TimeSpan(0, 30, 0);

            if (syncServiceInstance.IsMultiObjectCookieEnabled)
            {
                MsoCookieConverter.PerformConversion(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval);
                return;
            }
            MsoCookieConverter.ConvertE14MVtoE15MV(syncServiceInstance, maxCookieHistoryCount, cookieHistoryInterval);
        }
Exemple #9
0
        private static ADObjectId CreateOrGetRootContainer(string serviceInstanceName, ITopologyConfigurationSession cookieSession)
        {
            ADObjectId serviceInstanceObjectId = SyncServiceInstance.GetServiceInstanceObjectId(serviceInstanceName);
            Container  container = cookieSession.Read <Container>(serviceInstanceObjectId.GetChildId("Cookies"));

            if (container == null)
            {
                container = new Container();
                container.SetId(serviceInstanceObjectId.GetChildId("Cookies"));
                try
                {
                    cookieSession.Save(container);
                }
                catch (ADObjectAlreadyExistsException)
                {
                }
            }
            return(container.Id);
        }
        public static void PerformConversion(string serviceInstanceName, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval)
        {
            SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName);

            if (syncServiceInstance != null && syncServiceInstance.IsMultiObjectCookieEnabled)
            {
                MsoMultiObjectCookieManager   msoMultiObjectCookieManager  = new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.RecipientIncremental);
                MsoMultiObjectCookieManager   msoMultiObjectCookieManager2 = new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.CompanyIncremental);
                ITopologyConfigurationSession ridmasterSession             = MsoCookieConverter.GetRIDMasterSession();
                MsoMainStreamCookieContainer  msoMainStreamCookieContainer = ridmasterSession.GetMsoMainStreamCookieContainer(serviceInstanceName);
                MsoCookieConverter.FromMultiValuedCookieToMultiObjectCookie(serviceInstanceName, msoMainStreamCookieContainer.MsoForwardSyncRecipientCookie, msoMultiObjectCookieManager);
                MsoCookieConverter.FromMultiValuedCookieToMultiObjectCookie(serviceInstanceName, msoMainStreamCookieContainer.MsoForwardSyncNonRecipientCookie, msoMultiObjectCookieManager2);
                ridmasterSession.UseConfigNC = true;
                ADObjectId orgContainerId = ridmasterSession.GetOrgContainerId();
                ADRawEntry adrawEntry     = ridmasterSession.ReadADRawEntry(orgContainerId.Parent, MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.CookieProperties);
                MsoCookieConverter.FromMultiValuedCookieToMultiObjectCookie(serviceInstanceName, adrawEntry.propertyBag[MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.MsoForwardSyncRecipientCookie] as IEnumerable <byte[]>, msoMultiObjectCookieManager);
                MsoCookieConverter.FromMultiValuedCookieToMultiObjectCookie(serviceInstanceName, adrawEntry.propertyBag[MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.MsoForwardSyncNonRecipientCookie] as IEnumerable <byte[]>, msoMultiObjectCookieManager2);
            }
        }
            public override CookieManager GetCookieManager(ForwardSyncCookieType cookieType, string serviceInstanceName, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval)
            {
                SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName);

                switch (cookieType)
                {
                case ForwardSyncCookieType.RecipientIncremental:
                    if (syncServiceInstance != null && syncServiceInstance.IsMultiObjectCookieEnabled)
                    {
                        return(new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, cookieType));
                    }
                    return(new MsoRecipientMainStreamCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval));

                case ForwardSyncCookieType.CompanyIncremental:
                    if (syncServiceInstance != null && syncServiceInstance.IsMultiObjectCookieEnabled)
                    {
                        return(new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, cookieType));
                    }
                    return(new MsoCompanyMainStreamCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval));

                default:
                    throw new InvalidOperationException("Cookie type not supported");
                }
            }
Exemple #12
0
 private IEnumerable <SyncServiceInstance> GetAllServiceInstances()
 {
     return(this.configurationSession.FindPaged <SyncServiceInstance>(SyncServiceInstance.GetMsoSyncRootContainer(), QueryScope.OneLevel, null, null, 0));
 }
 public override void FeatureActivated(SPFeatureReceiverProperties properties)
 {
     try
     {
         Logger.WriteInfo("Activating SPC Synchronization feature");
         var profileManager = new ProfileManager();
         var config         = profileManager.Configuration;
         profileManager.CreateUIDProperty();
         var         farm        = SPFarm.Local;
         SyncService syncService = null;
         foreach (var service in farm.Services)
         {
             if (String.Compare(service.Name, SyncService.ServiceName, true) == 0)
             {
                 syncService = service as SyncService;
                 break;
             }
         }
         if (syncService == null)
         {
             Logger.WriteInfo(String.Format("Creating service '{0}' on SPFarm", SyncService.ServiceName));
             syncService = new SyncService(farm);
             syncService.Update();
         }
         foreach (var server in farm.Servers)
         {
             SyncServiceInstance syncInstance = null;
             foreach (var instance in server.ServiceInstances)
             {
                 if (String.Compare(instance.Name, SyncServiceInstance.ServiceInstanceName, true) == 0)
                 {
                     syncInstance = (SyncServiceInstance)instance;
                     break;
                 }
             }
             if (syncInstance == null)
             {
                 Logger.WriteInfo(String.Format("Adding service instance '{0}' to server '{1}'", SyncServiceInstance.ServiceInstanceName, server.Name));
                 syncInstance = new SyncServiceInstance(server, syncService);
                 syncInstance.Update();
             }
         }
         var schedule = new SPDailySchedule();
         schedule.BeginHour = 1;
         schedule.EndHour   = 4;
         ProfileSyncJob job = null;
         foreach (var definition in syncService.JobDefinitions)
         {
             if (String.Compare(definition.Name, ProfileSyncJob.JobName, true) == 0)
             {
                 job = (ProfileSyncJob)definition;
             }
         }
         if (job == null)
         {
             Logger.WriteInfo("Adding job definition");
             job          = new ProfileSyncJob(syncService, null, SPJobLockType.Job);
             job.Schedule = schedule;
             job.Update();
             syncService.JobDefinitions.Add(job);
         }
         syncService.Update();
         Logger.WriteInfo("Feature activating complete");
     }
     catch (Exception ex)
     {
         Logger.WriteError(ex.ToString());
         throw;
     }
 }
 // Token: 0x06000BB5 RID: 2997 RVA: 0x00025090 File Offset: 0x00023290
 public ServiceInstanceIdParameter(SyncServiceInstance syncServiceInstance) : base(syncServiceInstance.Name)
 {
 }
        internal static ArbitrationConfigFromAD GetArbitrationConfigFromAD(string serviceInstanceName)
        {
            IConfigurationSession configurationSession = ForwardSyncDataAccessHelper.CreateSession(true);
            RidMasterInfo         ridMasterInfo        = SyncDaemonArbitrationConfigHelper.GetRidMasterInfo(configurationSession);

            SyncServiceInstance[] array = configurationSession.Find <SyncServiceInstance>(SyncServiceInstance.GetMsoSyncRootContainer(), QueryScope.SubTree, new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Name, serviceInstanceName), null, 1);
            if (array == null || array.Length != 1)
            {
                throw new SyncDaemonArbitrationConfigException(Strings.ErrorCannotRetrieveSyncDaemonArbitrationConfigContainer((array == null) ? "0" : array.Length.ToString()));
            }
            return(new ArbitrationConfigFromAD(array[0], ridMasterInfo));
        }
Exemple #16
0
 public ForwardSyncDataAccessHelper(string serviceInstanceName)
 {
     this.InitializeSession();
     this.serviceInstanceObjectId     = SyncServiceInstance.GetServiceInstanceObjectId(serviceInstanceName);
     this.divergenceContainerObjectId = SyncServiceInstance.GetDivergenceContainerId(this.serviceInstanceObjectId);
 }