示例#1
0
        public static SmtpX509Identifier FopeCertificateName(int instance)
        {
            string[] defaultTable = new string[]
            {
                "CN=MSIT Machine Auth CA 2, DC=redmond, DC=corp, DC=microsoft, DC=com",
                "CN=CNNIC SSL, O=CNNIC SSL, C=CN",
                "CN=MS Passport Test Sub CA, DC=redmond, DC=corp, DC=microsoft, DC=com"
            };
            string[] defaultTable2 = new string[]
            {
                "CN=mail.protection.outlook.com, OU=Forefront Online Protection for Exchange, O=Microsoft, L=Redmond, S=WA, C=US",
                "CN=*.mail.protection.partner.outlook.cn, OU=Office365, O=Shanghai Blue Cloud Technology Co. Ltd, L=Shanghai, S=Shanghai, C=CN",
                "CN=*.mail.o365filtering-int.com, OU=Forefront Online Protection for Exchange, O=Microsoft, L=Redmond, S=Washington, C=US"
            };
            string[] defaultTable3 = new string[]
            {
                "AcceptCloudServicesMail",
                "AcceptCloudServicesMail",
                "AcceptCloudServicesMail"
            };
            string value  = Configuration.GetValue <string>("FopeCertificateIssuer", defaultTable, instance);
            string value2 = Configuration.GetValue <string>("FopeCertificateSubject", defaultTable2, instance);
            string value3 = Configuration.GetValue <string>("FopeCertificatePermissions", defaultTable3, instance);

            return(SmtpX509Identifier.Parse(string.Format("<I>{0}<S>{1}:{2}", value, value2, value3)));
        }
        public static IConfigurable PrepareDataObject(PropertyBag fields, HybridConfiguration dataObject, IConfigDataProvider dataSession, HybridConfigurationTaskUtility.GetUniqueObject getDataObjectFunc, Task.TaskErrorLoggingDelegate writeErrorFunc)
        {
            MultiValuedProperty <ADObjectId> clientAccessServers = dataObject.ClientAccessServers;

            if (fields.IsModified("ClientAccessServers"))
            {
                ADPropertyDefinition clientAccessServers2 = HybridConfigurationSchema.ClientAccessServers;
                HybridConfigurationTaskUtility.ServerCriterion[] array = new HybridConfigurationTaskUtility.ServerCriterion[2];
                array[0] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsClientAccessServer, new Func <string, LocalizedString>(HybridStrings.HybridErrorServerNotCAS));
                array[1] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsE14OrLater, new Func <string, LocalizedString>(HybridStrings.HybridErrorServerNotE14CAS));
                dataObject.ClientAccessServers = HybridConfigurationTaskUtility.ValidateServers(clientAccessServers2, dataSession, fields, getDataObjectFunc, writeErrorFunc, array);
            }
            if (fields.IsModified("SendingTransportServers"))
            {
                ADPropertyDefinition sendingTransportServers            = HybridConfigurationSchema.SendingTransportServers;
                HybridConfigurationTaskUtility.ServerCriterion[] array2 = new HybridConfigurationTaskUtility.ServerCriterion[2];
                array2[0] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsHubTransportServer, new Func <string, LocalizedString>(HybridStrings.HybridErrorSendingTransportServerNotHub));
                array2[1] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsE15OrLater, new Func <string, LocalizedString>(HybridStrings.HybridErrorSendingTransportServerNotE15Hub));
                dataObject.SendingTransportServers = HybridConfigurationTaskUtility.ValidateServers(sendingTransportServers, dataSession, fields, getDataObjectFunc, writeErrorFunc, array2);
            }
            if (fields.IsModified("ReceivingTransportServers"))
            {
                ADPropertyDefinition receivingTransportServers          = HybridConfigurationSchema.ReceivingTransportServers;
                HybridConfigurationTaskUtility.ServerCriterion[] array3 = new HybridConfigurationTaskUtility.ServerCriterion[2];
                array3[0] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsFrontendTransportServer, new Func <string, LocalizedString>(HybridStrings.HybridErrorReceivingTransportServerNotFrontEnd));
                array3[1] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsE15OrLater, new Func <string, LocalizedString>(HybridStrings.HybridErrorReceivingTransportServerNotE15FrontEnd));
                dataObject.ReceivingTransportServers = HybridConfigurationTaskUtility.ValidateServers(receivingTransportServers, dataSession, fields, getDataObjectFunc, writeErrorFunc, array3);
            }
            if (fields.IsModified("EdgeTransportServers"))
            {
                ADPropertyDefinition edgeTransportServers = HybridConfigurationSchema.EdgeTransportServers;
                HybridConfigurationTaskUtility.ServerCriterion[] array4 = new HybridConfigurationTaskUtility.ServerCriterion[2];
                array4[0] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsEdgeServer, new Func <string, LocalizedString>(HybridStrings.HybridErrorServerNotEdge));
                array4[1] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsE14Sp1OrLater, new Func <string, LocalizedString>(HybridStrings.HybridErrorServerNotE14Edge));
                dataObject.EdgeTransportServers = HybridConfigurationTaskUtility.ValidateServers(edgeTransportServers, dataSession, fields, getDataObjectFunc, writeErrorFunc, array4);
            }
            if (fields.IsModified("TlsCertificateName"))
            {
                string text = fields["TlsCertificateName"] as string;
                dataObject.TlsCertificateName = ((text == null) ? null : SmtpX509Identifier.Parse(text));
            }
            if (fields.IsModified("OnPremisesSmartHost"))
            {
                dataObject.OnPremisesSmartHost = (SmtpDomain)fields["OnPremisesSmartHost"];
            }
            if (fields.IsModified("Domains"))
            {
                dataObject.Domains = (MultiValuedProperty <AutoDiscoverSmtpDomain>)fields["Domains"];
            }
            if (fields.IsModified("Features"))
            {
                dataObject.Features = (MultiValuedProperty <HybridFeature>)fields["Features"];
            }
            if (fields.IsModified("ExternalIPAddresses"))
            {
                dataObject.ExternalIPAddresses = HybridConfigurationTaskUtility.ValidateExternalIPAddresses((MultiValuedProperty <IPRange>)fields["ExternalIPAddresses"], writeErrorFunc);
            }
            if (fields.IsModified("ServiceInstance"))
            {
                dataObject.ServiceInstance = (int)fields["ServiceInstance"];
            }
            return(dataObject);
        }