コード例 #1
0
        protected override void InternalProcessRecord()
        {
            base.InternalProcessRecord();
            QueryFilter filter = new ComparisonFilter(ComparisonOperator.Equal, PublicFolderTreeSchema.PublicFolderTreeType, PublicFolderTreeType.Mapi);

            PublicFolderTree[] array = ((IConfigurationSession)base.DataSession).Find <PublicFolderTree>(null, QueryScope.SubTree, filter, null, 0);
            if (array == null || array.Length == 0)
            {
                PublicFolderTreeContainer publicFolderTreeContainer = this.InstallConfigurationObject <PublicFolderTreeContainer>(this.DataObject.Id.GetChildId(PublicFolderTreeContainer.DefaultName), false);
                this.InstallConfigurationObject <PublicFolderTree>(publicFolderTreeContainer.Id.GetChildId(PublicFolderTree.DefaultName), true);
            }
            this.InstallConfigurationObject <ServersContainer>(this.DataObject.Id.GetChildId(ServersContainer.DefaultName), false);
            this.InstallConfigurationObject <Container>(ClientAccessArray.GetParentContainer((ITopologyConfigurationSession)base.DataSession), false);
            this.InstallConfigurationObject <DatabasesContainer>(this.DataObject.Id.GetChildId(DatabasesContainer.DefaultName), false);
            this.InstallConfigurationObject <DatabaseAvailabilityGroupContainer>(this.DataObject.Id.GetChildId(DatabaseAvailabilityGroupContainer.DefaultName), false);
            AdvancedSecurityContainer advancedSecurityContainer = this.InstallConfigurationObject <AdvancedSecurityContainer>(this.DataObject.Id.GetChildId("Advanced Security"), false);
            Encryption encryption = new Encryption();

            encryption[EncryptionSchema.LegacyExchangeDN] = string.Format("{0}/cn=Configuration/cn={1}", this.DataObject.LegacyExchangeDN, Encryption.DefaultName);
            this.InstallConfigurationObject <Encryption>(advancedSecurityContainer.Id.GetChildId(Encryption.DefaultName), false, encryption);
            this.InstallConfigurationObject <LegacyGwart>(this.DataObject.Id.GetChildId(LegacyGwart.DefaultName), false);
            this.InstallConfigurationObject <RoutingGroupsContainer>(this.DataObject.Id.GetChildId(RoutingGroupsContainer.DefaultName), false);
            this.InstallConfigurationObject <RoutingGroup>(this.DataObject.Id.GetChildId(RoutingGroupsContainer.DefaultName).GetChildId(RoutingGroup.DefaultName), false);
            this.InstallConfigurationObject <ConnectorsContainer>(this.DataObject.Id.GetChildId(RoutingGroupsContainer.DefaultName).GetChildId(RoutingGroup.DefaultName).GetChildId("Connections"), false);
        }
コード例 #2
0
 public static ADClientAccessArrayWrapper CreateWrapper(ClientAccessArray caArray)
 {
     if (caArray == null)
     {
         return(null);
     }
     return(new ADClientAccessArrayWrapper(caArray));
 }
コード例 #3
0
        internal static void UpdateHttpProxyPerArrayCounters()
        {
            ClientAccessArray localServerClientAccessArray = Server.GetLocalServerClientAccessArray();

            if (localServerClientAccessArray == null)
            {
                PerfCounters.ResetHttpProxyPerArrayCounters(null);
                return;
            }
            HttpProxyPerArrayCountersInstance instance = HttpProxyPerArrayCounters.GetInstance(localServerClientAccessArray.Name);

            if (instance != null)
            {
                PerfCounters.ResetHttpProxyPerArrayCounters(localServerClientAccessArray.Name);
                instance.TotalServersInArray.RawValue = (long)Math.Max(1, localServerClientAccessArray.ServerCount);
            }
        }
コード例 #4
0
        private ClientAccessArray GetClientAccessArrayFromIdParameter()
        {
            if (this.Array == null)
            {
                return(null);
            }
            IEnumerable <ClientAccessArray> objects = this.Array.GetObjects <ClientAccessArray>(null, base.DataSession);
            ClientAccessArray result;

            using (IEnumerator <ClientAccessArray> enumerator = objects.GetEnumerator())
            {
                if (!enumerator.MoveNext())
                {
                    throw new ManagementObjectNotFoundException(Strings.ErrorClientAccessArrayNotFound(this.Array.ToString()));
                }
                ClientAccessArray clientAccessArray = enumerator.Current;
                if (enumerator.MoveNext())
                {
                    throw new ManagementObjectAmbiguousException(Strings.ErrorClientAccessArrayNotUnique(this.Array.ToString()));
                }
                result = clientAccessArray;
            }
            return(result);
        }
コード例 #5
0
 internal void VerifyArrayUniqueness(IConfigDataProvider session, ClientAccessArray array)
 {
     this.CheckUnique(session, array.Id, new Func <IConfigDataProvider, QueryFilter, bool>(this.ServerOrArrayExists), ADObjectSchema.Name, array.Name, Strings.ErrorCasArrayOrServerAlreadyExists(array.Name));
 }
コード例 #6
0
 // Token: 0x060008BB RID: 2235 RVA: 0x0001EBC9 File Offset: 0x0001CDC9
 public ClientAccessArrayIdParameter(ClientAccessArray clientAccessArray) : this(clientAccessArray.Id)
 {
 }
コード例 #7
0
 public ClientAccessServerOrArrayIdParameter(ClientAccessArray caArray) : this(caArray.Id)
 {
 }
コード例 #8
0
 private ADClientAccessArrayWrapper(ClientAccessArray caArray) : base(caArray)
 {
     this.ExchangeLegacyDN = (string)caArray[ClientAccessArraySchema.ExchangeLegacyDN];
 }
コード例 #9
0
        protected sealed override void InternalProcessRecord()
        {
            TaskLogger.LogEnter(new object[]
            {
                this.DataObject
            });
            if (this.DataObject.MajorVersion != LocalServer.GetServer().MajorVersion)
            {
                base.WriteError(new CannotModifyCrossVersionObjectException(this.DataObject.Id.DistinguishedName), ErrorCategory.InvalidOperation, null);
                return;
            }
            ClientAccessServer clientAccessServer = new ClientAccessServer(this.DataObject);

            if (base.Fields.IsModified("ClientAccessArray"))
            {
                ClientAccessArray clientAccessArrayFromIdParameter = this.GetClientAccessArrayFromIdParameter();
                if (clientAccessArrayFromIdParameter == null)
                {
                    clientAccessServer.ClientAccessArray = null;
                }
                else
                {
                    if (clientAccessArrayFromIdParameter.IsPriorTo15ExchangeObjectVersion)
                    {
                        base.WriteError(new InvalidOperationException(Strings.ErrorCannotSetToOldClientAccessArray(clientAccessArrayFromIdParameter.ExchangeVersion.ToString(), ClientAccessArray.MinimumSupportedExchangeObjectVersion.ToString())), ErrorCategory.InvalidOperation, this.Identity);
                        return;
                    }
                    clientAccessServer.ClientAccessArray = (ADObjectId)clientAccessArrayFromIdParameter.Identity;
                }
            }
            bool flag = false;
            ADServiceConnectionPoint adserviceConnectionPoint = null;
            ADObjectId childId = clientAccessServer.Id.GetChildId("Protocols").GetChildId("Autodiscover").GetChildId(clientAccessServer.Name);

            if (base.Fields.IsModified("AutoDiscoverServiceInternalUri") && this.AutoDiscoverServiceInternalUri == null && base.Fields.IsModified("AutoDiscoverSiteScope") && this.AutoDiscoverSiteScope == null)
            {
                adserviceConnectionPoint = new ADServiceConnectionPoint();
                adserviceConnectionPoint.SetId(childId);
                base.DataSession.Delete(adserviceConnectionPoint);
                ADObjectId  parent      = adserviceConnectionPoint.Id.Parent;
                ADContainer adcontainer = new ADContainer();
                adcontainer.SetId(parent);
                base.DataSession.Delete(adcontainer);
                flag = true;
            }
            else
            {
                adserviceConnectionPoint = ((IConfigurationSession)base.DataSession).Read <ADServiceConnectionPoint>(childId);
                if (adserviceConnectionPoint == null)
                {
                    adserviceConnectionPoint = new ADServiceConnectionPoint();
                    adserviceConnectionPoint.SetId(childId);
                    if (!base.Fields.IsModified("AutoDiscoverServiceInternalUri"))
                    {
                        string text = ComputerInformation.DnsFullyQualifiedDomainName;
                        if (string.IsNullOrEmpty(text))
                        {
                            text = ComputerInformation.DnsPhysicalHostName;
                        }
                        adserviceConnectionPoint.ServiceBindingInformation.Add("https://" + text + "/Autodiscover/Autodiscover.xml");
                    }
                    if (!base.Fields.IsModified("AutoDiscoverSiteScope"))
                    {
                        adserviceConnectionPoint.Keywords.Add("77378F46-2C66-4aa9-A6A6-3E7A48B19596");
                        string siteName = NativeHelpers.GetSiteName(false);
                        if (!string.IsNullOrEmpty(siteName))
                        {
                            adserviceConnectionPoint.Keywords.Add("Site=" + siteName);
                        }
                    }
                    adserviceConnectionPoint.ServiceDnsName   = ComputerInformation.DnsPhysicalHostName;
                    adserviceConnectionPoint.ServiceClassName = "ms-Exchange-AutoDiscover-Service";
                    flag = true;
                }
                if (base.Fields.IsModified("AutoDiscoverServiceInternalUri"))
                {
                    adserviceConnectionPoint.ServiceBindingInformation.Clear();
                    if (this.AutoDiscoverServiceInternalUri != null)
                    {
                        adserviceConnectionPoint.ServiceBindingInformation.Add(this.AutoDiscoverServiceInternalUri.ToString());
                    }
                    flag = true;
                }
                if (base.Fields.IsModified("AutoDiscoverSiteScope"))
                {
                    adserviceConnectionPoint.Keywords.Clear();
                    adserviceConnectionPoint.Keywords.Add("77378F46-2C66-4aa9-A6A6-3E7A48B19596");
                    if (this.AutoDiscoverSiteScope != null)
                    {
                        foreach (string str in this.AutoDiscoverSiteScope)
                        {
                            adserviceConnectionPoint.Keywords.Add("Site=" + str);
                        }
                    }
                    flag = true;
                }
                if (flag)
                {
                    ADObjectId parent2 = adserviceConnectionPoint.Id.Parent;
                    if (((IConfigurationSession)base.DataSession).Read <ADContainer>(parent2) == null)
                    {
                        ADContainer adcontainer2 = new ADContainer();
                        adcontainer2.SetId(parent2);
                        base.DataSession.Save(adcontainer2);
                    }
                    base.DataSession.Save(adserviceConnectionPoint);
                }
            }
            bool flag2 = false;

            if (this.CleanUpInvalidAlternateServiceAccountCredentials.ToBool() && this.alternateServiceAccountCredentialsToRemove.Count > 0)
            {
                foreach (AlternateServiceAccountCredential credential in this.alternateServiceAccountCredentialsToRemove)
                {
                    this.alternateServiceAccountConfiguration.RemoveCredential(credential);
                }
                flag2 = true;
            }
            if (this.RemoveAlternateServiceAccountCredentials.ToBool())
            {
                flag2 = this.alternateServiceAccountConfiguration.RemoveAllCredentials();
                flag2 = true;
            }
            if (this.AlternateServiceAccountCredential != null)
            {
                for (int i = this.AlternateServiceAccountCredential.Length - 1; i >= 0; i--)
                {
                    this.alternateServiceAccountConfiguration.AddCredential(this.AlternateServiceAccountCredential[i]);
                    flag2 = true;
                }
            }
            if (this.DataObject.ObjectState != ObjectState.Unchanged)
            {
                base.InternalProcessRecord();
            }
            else if (!flag && !flag2)
            {
                this.WriteWarning(Strings.WarningForceMessage);
            }
            TaskLogger.LogExit();
        }
コード例 #10
0
 public static ADClientAccessArrayWrapper CreateWrapper(ClientAccessArray caArray)
 {
     return(ADClientAccessArrayWrapper.CreateWrapper(caArray));
 }
コード例 #11
0
        protected override void InternalBeginProcessing()
        {
            TaskLogger.LogEnter();
            base.InternalBeginProcessing();
            if (Datacenter.IsMultiTenancyEnabled())
            {
                this.isMultiTenancy = true;
            }
            else
            {
                this.isMultiTenancy = false;
            }
            this.exs = base.ResolveExchangeGroupGuid <ADGroup>(WellKnownGuid.ExSWkGuid);
            if (this.exs == null)
            {
                base.ThrowTerminatingError(new ExSGroupNotFoundException(WellKnownGuid.ExSWkGuid), ErrorCategory.InvalidData, null);
            }
            base.LogReadObject(this.exs);
            this.eoa = base.ResolveExchangeGroupGuid <ADGroup>(WellKnownGuid.EoaWkGuid);
            if (this.eoa == null)
            {
                base.ThrowTerminatingError(new ExOrgAdminSGroupNotFoundException(WellKnownGuid.EoaWkGuid), ErrorCategory.InvalidData, null);
            }
            base.LogReadObject(this.eoa);
            this.era = base.ResolveExchangeGroupGuid <ADGroup>(WellKnownGuid.EraWkGuid);
            if (this.era == null)
            {
                base.ThrowTerminatingError(new ExOrgReadAdminSGroupNotFoundException(WellKnownGuid.EraWkGuid), ErrorCategory.InvalidData, null);
            }
            base.LogReadObject(this.eoa);
            this.mas = base.ResolveExchangeGroupGuid <ADGroup>(WellKnownGuid.MaSWkGuid);
            if (this.mas == null)
            {
                base.ThrowTerminatingError(new ExOrgReadAdminSGroupNotFoundException(WellKnownGuid.MaSWkGuid), ErrorCategory.InvalidData, null);
            }
            base.LogReadObject(this.mas);
            this.epa = base.ResolveExchangeGroupGuid <ADGroup>(WellKnownGuid.EpaWkGuid);
            if (this.epa != null)
            {
                base.LogReadObject(this.epa);
            }
            this.ets = base.ResolveExchangeGroupGuid <ADGroup>(WellKnownGuid.EtsWkGuid);
            if (this.ets == null)
            {
                base.ThrowTerminatingError(new ExTrustedSubsystemGroupNotFoundException(WellKnownGuid.EtsWkGuid), ErrorCategory.InvalidData, null);
            }
            base.LogReadObject(this.ets);
            this.delegatedSetupRG = base.ResolveExchangeGroupGuid <ADGroup>(WellKnownGuid.RgDelegatedSetupWkGuid);
            DelegatedSetupRoleGroupValueEnum delegatedSetupRoleGroupValue = VariantConfiguration.InvariantNoFlightingSnapshot.AD.DelegatedSetupRoleGroupValue.DelegatedSetupRoleGroupValue;

            if (delegatedSetupRoleGroupValue == DelegatedSetupRoleGroupValueEnum.NotExists || Datacenter.IsForefrontForOfficeDatacenter())
            {
                if (this.delegatedSetupRG != null)
                {
                    base.ThrowTerminatingError(new ExRbacRoleGroupInMultiTenantException(WellKnownGuid.RgDelegatedSetupWkGuid, "Delegated Setup"), ErrorCategory.InvalidData, null);
                }
            }
            else if (delegatedSetupRoleGroupValue == DelegatedSetupRoleGroupValueEnum.Exists)
            {
                if (this.delegatedSetupRG == null)
                {
                    base.ThrowTerminatingError(new ExRbacRoleGroupNotFoundException(WellKnownGuid.RgDelegatedSetupWkGuid, "Delegated Setup"), ErrorCategory.InvalidData, null);
                }
                base.LogReadObject(this.delegatedSetupRG);
            }
            this.autodiscoverContainer = this.ReadCriticalObjectFromRootOrg <ADContainer>(((ITopologyConfigurationSession)this.configurationSession).GetAutoDiscoverGlobalContainerId());
            this.orgContainer          = this.configurationSession.GetOrgContainer();
            base.LogReadObject(this.orgContainer);
            if (Datacenter.IsMultiTenancyEnabled())
            {
                ADObjectId configurationUnitsRootForLocalForest        = ADSession.GetConfigurationUnitsRootForLocalForest();
                ITenantConfigurationSession tenantConfigurationSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(false, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromAllTenantsObjectId(configurationUnitsRootForLocalForest), 1413, "InternalBeginProcessing", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\DirectorySetup\\InitializeExchangeConfigContainer.cs");
                this.confUnitsContainer = tenantConfigurationSession.Read <Container>(configurationUnitsRootForLocalForest);
                if (this.confUnitsContainer != null)
                {
                    base.LogReadObject(this.confUnitsContainer);
                }
            }
            this.addressingContainer = this.ReadCriticalObject <Container>(this.orgContainer.Id.GetChildId("Addressing"));
            this.meServicesContainer = this.configurationSession.GetExchangeConfigurationContainer();
            base.LogReadObject(this.meServicesContainer);
            ADObjectId childId = this.orgContainer.Id.GetChildId("Address Lists Container");

            this.addressListsContainer        = this.ReadCriticalObject <Container>(childId);
            this.offlineAddressListsContainer = this.ReadCriticalObject <Container>(childId.GetChildId("Offline Address Lists"));
            this.recipPoliciesContainer       = this.ReadCriticalObject <RecipientPoliciesContainer>(this.orgContainer.Id.GetChildId("Recipient Policies"));
            this.sitesContainer      = this.ReadCriticalObject <SitesContainer>(this.configurationSession.ConfigurationNamingContext.GetChildId("Sites"));
            this.administrativeGroup = ((ITopologyConfigurationSession)this.configurationSession).GetAdministrativeGroup();
            base.LogReadObject(this.administrativeGroup);
            this.arraysContainer = this.ReadCriticalObject <Container>(ClientAccessArray.GetParentContainer((ITopologyConfigurationSession)this.configurationSession));
            TaskLogger.LogExit();
        }