internal static void CreateOmaVDir(string metabasePath, VirtualDirectoryRole role) { MetabasePropertyTypes.AppPoolIdentityType appPoolIdentityType = MetabasePropertyTypes.AppPoolIdentityType.LocalSystem; if (IisUtility.WebDirObjectExists(metabasePath, "oma")) { string hostName = IisUtility.GetHostName(metabasePath); string appPoolRootPath = IisUtility.GetAppPoolRootPath(hostName); using (DirectoryEntry directoryEntry = IisUtility.FindWebObject(appPoolRootPath, "MSExchangeOWAAppPool", "IIsApplicationPool")) { IisUtility.SetProperty(directoryEntry, "AppPoolIdentityType", appPoolIdentityType, true); directoryEntry.CommitChanges(); } return; } CreateVirtualDirectory createVirtualDirectory = new CreateVirtualDirectory(); createVirtualDirectory.Name = "oma"; createVirtualDirectory.Parent = metabasePath; createVirtualDirectory.LocalPath = OwaVirtualDirectoryHelper.OwaCafePath; createVirtualDirectory.CustomizedVDirProperties = OwaVirtualDirectoryHelper.GetOmaVDirProperties(role); createVirtualDirectory.ApplicationPool = "MSExchangeOWAAppPool"; createVirtualDirectory.AppPoolIdentityType = appPoolIdentityType; createVirtualDirectory.AppPoolManagedPipelineMode = MetabasePropertyTypes.ManagedPipelineMode.Integrated; createVirtualDirectory.AppPoolQueueLength = 10; createVirtualDirectory.Initialize(); createVirtualDirectory.Execute(); }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); if (!this.Force) { foreach (ADPropertyDefinition adpropertyDefinition in NewWebServicesVirtualDirectory.HostProperties) { if (!NewWebServicesVirtualDirectory.IsValidHost(this.DataObject, adpropertyDefinition) && !base.ShouldContinue(Strings.ConfirmationMessageHostCannotBeResolved(adpropertyDefinition.Name))) { TaskLogger.LogExit(); return; } } } if (!(this.DataObject.WindowsAuthentication ?? true)) { if (base.ExchangeRunspaceConfig != null && base.ExchangeRunspaceConfig.ConfigurationSettings != null && (base.ExchangeRunspaceConfig.ConfigurationSettings.ClientApplication == ExchangeRunspaceConfigurationSettings.ExchangeApplication.ECP || base.ExchangeRunspaceConfig.ConfigurationSettings.ClientApplication == ExchangeRunspaceConfigurationSettings.ExchangeApplication.OSP)) { if (!this.Force && !base.ShouldContinue(new LocalizedString(string.Format("{0} {1}", Strings.WarningMessageSetWebServicesVirtualDirectoryWindowsAuthentication(this.Identity.ToString()), Strings.ConfirmationMessageWebServicesVirtualDirectoryContinue)))) { TaskLogger.LogExit(); return; } } else { this.WriteWarning(Strings.WarningMessageSetWebServicesVirtualDirectoryWindowsAuthentication(this.Identity.ToString())); if (!this.Force && !base.ShouldContinue(Strings.ConfirmationMessageWebServicesVirtualDirectoryContinue)) { TaskLogger.LogExit(); return; } } } this.DataObject.CertificateAuthentication = null; base.InternalProcessRecord(); base.InternalEnableLiveIdNegotiateAuxiliaryModule(); if (Datacenter.IsMicrosoftHostedOnly(true)) { string text = string.Format("{0}/{1}", this.DataObject.MetabasePath, "Nego2"); if (!IisUtility.Exists(text)) { DirectoryEntry directoryEntry = IisUtility.CreateWebDirObject(this.DataObject.MetabasePath, null, "Nego2"); IisUtility.SetProperty(directoryEntry, "AccessFlags", MetabasePropertyTypes.AccessFlags.Read | MetabasePropertyTypes.AccessFlags.Script, true); directoryEntry.CommitChanges(); } ExchangeServiceVDirHelper.SetSplitVirtualDirectoryAuthenticationMethods(this.DataObject, text, new Task.TaskErrorLoggingDelegate(base.WriteError), this.MetabaseSetPropertiesFailureMessage); ExchangeServiceVDirHelper.ForceAnonymous(text); } ExchangeServiceVDirHelper.ForceAnonymous(this.DataObject.MetabasePath); ExchangeServiceVDirHelper.EwsAutodiscMWA.OnSetManageWCFEndpoints(this, ExchangeServiceVDirHelper.EwsAutodiscMWA.EndpointProtocol.Ews, this.WSSecurityAuthentication, this.DataObject); this.UpdateCompressionSettings(); TaskLogger.LogExit(); }
internal static void SetVirtualDirectoryGzipLevel(string adsiVirtualDirectoryPath, GzipLevel gzipLevel) { using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(adsiVirtualDirectoryPath)) { bool flag = gzipLevel == GzipLevel.High; bool flag2 = gzipLevel == GzipLevel.Low || gzipLevel == GzipLevel.High; IisUtility.SetProperty(directoryEntry, "DoDynamicCompression", flag, true); IisUtility.SetProperty(directoryEntry, "DoStaticCompression", flag2, true); directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(IisUtility.WebSiteFromMetabasePath(directoryEntry.Path))); } }
protected override void InternalProcessComplete() { base.InternalProcessComplete(); if (Datacenter.IsMicrosoftHostedOnly(true)) { DirectoryEntry directoryEntry = IisUtility.CreateWebDirObject(this.DataObject.MetabasePath, null, "Nego2"); IisUtility.SetProperty(directoryEntry, "AccessFlags", MetabasePropertyTypes.AccessFlags.Read | MetabasePropertyTypes.AccessFlags.Script, true); directoryEntry.CommitChanges(); string nego2Path = string.Format("{0}/{1}", this.DataObject.MetabasePath, "Nego2"); ExchangeServiceVDirHelper.SetSplitVirtualDirectoryAuthenticationMethods(this.DataObject, nego2Path, new Task.TaskErrorLoggingDelegate(base.WriteError), this.MetabaseSetPropertiesFailureMessage); } else if (base.Role == VirtualDirectoryRole.ClientAccess) { ExchangeServiceVDirHelper.CheckAndUpdateLocalhostWebBindingsIfNecessary(this.DataObject); } ExchangeServiceVDirHelper.EwsAutodiscMWA.OnNewManageWCFEndpoints(this, ExchangeServiceVDirHelper.EwsAutodiscMWA.EndpointProtocol.Ews, this.DataObject.BasicAuthentication, this.DataObject.WindowsAuthentication, this.DataObject.WSSecurityAuthentication ?? false, this.DataObject.OAuthAuthentication ?? false, this.DataObject, base.Role); }
public void Execute() { DirectoryEntry directoryEntry = IisUtility.CreateWebDirObject(this.Parent, this.LocalPath, this.Name); if (this.CustomizedVDirProperties != null) { IisUtility.SetProperties(directoryEntry, this.CustomizedVDirProperties); } directoryEntry.CommitChanges(); string hostName = IisUtility.GetHostName(this.Parent); IisUtility.CommitMetabaseChanges(hostName); if (this.ApplicationPool != null && IisUtility.IsSupportedIisVersion(hostName)) { string appPoolRootPath = IisUtility.GetAppPoolRootPath(hostName); if (!IisUtility.Exists(appPoolRootPath, this.ApplicationPool, "IIsApplicationPool")) { using (DirectoryEntry directoryEntry2 = IisUtility.CreateApplicationPool(hostName, this.ApplicationPool)) { IisUtility.SetProperty(directoryEntry2, "AppPoolIdentityType", (int)this.AppPoolIdentityType, true); IisUtility.SetProperty(directoryEntry2, "managedPipelineMode", (int)this.AppPoolManagedPipelineMode, true); if (this.AppPoolQueueLength != 0) { IisUtility.SetProperty(directoryEntry2, "AppPoolQueueLength", this.AppPoolQueueLength, true); } directoryEntry2.CommitChanges(); IisUtility.CommitMetabaseChanges(hostName); using (ServerManager serverManager = new ServerManager()) { ApplicationPool applicationPool = serverManager.ApplicationPools[this.ApplicationPool]; applicationPool.ProcessModel.LoadUserProfile = true; if (this.MaximumMemory != 0L) { applicationPool.Recycling.PeriodicRestart.Memory = this.MaximumMemory; } if (this.MaximumPrivateMemory != 0L) { applicationPool.Recycling.PeriodicRestart.PrivateMemory = this.MaximumPrivateMemory; } serverManager.CommitChanges(); } } } IisUtility.AssignApplicationPool(directoryEntry, this.ApplicationPool); } }
private static void UpdateSubDirectory(ADMobileVirtualDirectory dataObject, string vdirPath, Task task) { if (IisUtility.Exists(vdirPath)) { using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(vdirPath)) { IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.None, false); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.WindowsIntegrated, true); IisUtility.SetProperty(directoryEntry, "AccessFlags", MetabasePropertyTypes.AccessFlags.Script, true); directoryEntry.CommitChanges(); } } if (dataObject.ProxyVirtualDirectoryObject != null) { MobileSyncVirtualDirectoryHelper.CopyProxyExtendedParameters(dataObject); ExtendedProtection.CommitToMetabase(dataObject.ProxyVirtualDirectoryObject, task); } }
public static void CopyDavVdirsToMetabase(string domainController, string exchangeServerName, string metabaseServerName) { ADSessionSettings sessionSettings = ADSessionSettings.FromRootOrgScopeSet(); ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(domainController, true, ConsistencyMode.PartiallyConsistent, null, sessionSettings, 154, "CopyDavVdirsToMetabase", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\VirtualDirectoryTasks\\OWAVirtualDirectoryHelper.cs"); Server server = topologyConfigurationSession.FindServerByName(exchangeServerName); IConfigDataProvider configDataProvider = topologyConfigurationSession; IEnumerable <ADOwaVirtualDirectory> enumerable = configDataProvider.FindPaged <ADOwaVirtualDirectory>(null, server.Id, true, null, 0); OwaVirtualDirectoryHelper.SetWebSvcExtRestrictionList(metabaseServerName); foreach (ADOwaVirtualDirectory adowaVirtualDirectory in enumerable) { if (!adowaVirtualDirectory.IsExchange2007OrLater) { string[] array = adowaVirtualDirectory.MetabasePath.Split(new char[] { '/' }); if (array.Length == 7) { array[2] = metabaseServerName; MultiValuedProperty <AuthenticationMethod> internalAuthenticationMethods = adowaVirtualDirectory.InternalAuthenticationMethods; adowaVirtualDirectory.WindowsAuthentication = true; string appPoolRootPath = IisUtility.GetAppPoolRootPath(metabaseServerName); string text = "MSExchangeOWAAppPool"; if (!IisUtility.Exists(appPoolRootPath, text, "IIsApplicationPool")) { using (DirectoryEntry directoryEntry = IisUtility.CreateApplicationPool(metabaseServerName, text)) { IisUtility.SetProperty(directoryEntry, "AppPoolIdentityType", 0, true); directoryEntry.CommitChanges(); } } if (!IisUtility.Exists(string.Join("/", array))) { DirectoryEntry directoryEntry2 = IisUtility.CreateWebDirObject(string.Join("/", array, 0, 6), adowaVirtualDirectory.FolderPathname, array[6]); ArrayList arrayList = new ArrayList(); arrayList.Add(new MetabaseProperty("LogonMethod", MetabasePropertyTypes.LogonMethod.ClearTextLogon)); arrayList.Add(new MetabaseProperty("AccessFlags", MetabasePropertyTypes.AccessFlags.Read | MetabasePropertyTypes.AccessFlags.Write | MetabasePropertyTypes.AccessFlags.Source | MetabasePropertyTypes.AccessFlags.Script)); arrayList.Add(new MetabaseProperty("DirBrowseFlags", (MetabasePropertyTypes.DirBrowseFlags) 3221225534U)); arrayList.Add(new MetabaseProperty("ScriptMaps", OwaVirtualDirectoryHelper.GetDavScriptMaps(), true)); if (adowaVirtualDirectory.VirtualDirectoryType == VirtualDirectoryTypes.Exchweb) { arrayList.Add(new MetabaseProperty("HttpExpires", "D, 0x278d00")); } if (adowaVirtualDirectory.DefaultDomain.Length > 0) { arrayList.Add(new MetabaseProperty("DefaultLogonDomain", adowaVirtualDirectory.DefaultDomain, true)); } OwaIsapiFilter.DisableFba(directoryEntry2); uint num = 0U; using (MultiValuedProperty <AuthenticationMethod> .Enumerator enumerator2 = adowaVirtualDirectory.InternalAuthenticationMethods.GetEnumerator()) { while (enumerator2.MoveNext()) { switch (enumerator2.Current) { case AuthenticationMethod.Basic: num |= 2U; break; case AuthenticationMethod.Digest: num |= 16U; break; case AuthenticationMethod.Ntlm: num |= 4U; break; case AuthenticationMethod.Fba: OwaIsapiFilter.EnableFba(directoryEntry2); break; } } } arrayList.Add(new MetabaseProperty("AuthFlags", num, true)); IisUtility.SetProperties(directoryEntry2, arrayList); IisUtility.AssignApplicationPool(directoryEntry2, text); } } } } }
internal static void SetIisGzipLevel(string site, GzipLevel gzipLevel) { if (gzipLevel == GzipLevel.Off) { return; } string str = site + "/W3SVC"; bool flag = gzipLevel == GzipLevel.High; bool flag2 = true; bool flag3 = true; string[] array = new string[] { "htm", "html", "txt", "htc", "css", "js", "xsl", "docx", "doc", "xlsx", "xls", "pptx", "ppt", "mdb" }; string[] array2 = new string[] { "owa", "aspx", "eas" }; string[] array3 = new string[] { "ashx" }; int num = 10; int num2 = 3; bool flag4 = false; bool flag5 = false; bool flag6 = false; using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(str + "/Filters/Compression/gzip")) { if (gzipLevel == GzipLevel.High) { IisUtility.SetProperty(directoryEntry, "HCDoDynamicCompression", flag, true); } IisUtility.SetProperty(directoryEntry, "HCDoStaticCompression", flag2, true); IisUtility.SetProperty(directoryEntry, "HCDoOnDemandCompression", flag3, true); for (int i = 0; i < array.Length; i++) { IisUtility.SetProperty(directoryEntry, "HCFileExtensions", array[i], i == 0); } IList list = null; if (directoryEntry.Properties.Contains("HCScriptFileExtensions")) { list = directoryEntry.Properties["HCScriptFileExtensions"]; } for (int j = 0; j < array2.Length; j++) { bool flag7 = false; if (list != null) { for (int k = 0; k < list.Count; k++) { if (list[k] is string && string.Equals(array2[j], (string)list[k], StringComparison.OrdinalIgnoreCase)) { flag7 = true; break; } } } if (!flag7) { IisUtility.SetProperty(directoryEntry, "HCScriptFileExtensions", array2[j], false); } } if (list != null) { for (int l = 0; l < array3.Length; l++) { for (int m = 0; m < list.Count; m++) { if (list[m] is string && string.Equals(array3[l], (string)list[m], StringComparison.OrdinalIgnoreCase)) { list.Remove((string)list[m]); m = -1; } } } } IisUtility.SetProperty(directoryEntry, "HCOnDemandCompLevel", num, true); if (gzipLevel == GzipLevel.High) { IisUtility.SetProperty(directoryEntry, "HCDynamicCompressionLevel", num2, true); } directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(site)); } using (DirectoryEntry directoryEntry2 = IisUtility.CreateIISDirectoryEntry(str + "/Filters/Compression/Parameters")) { IisUtility.SetProperty(directoryEntry2, "HCSendCacheHeaders", flag4, true); IisUtility.SetProperty(directoryEntry2, "HCNoCompressionForHTTP10", flag5, true); IisUtility.SetProperty(directoryEntry2, "HCNoCompressionForProxies", flag6, true); directoryEntry2.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(site)); } }