internal static bool CheckAuthModule(ADExchangeServiceVirtualDirectory advdir, bool isChildVDirApplication, string moduleName) { DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(advdir.MetabasePath); bool result; using (ServerManager serverManager = ServerManager.OpenRemote(IisUtility.GetHostName(advdir.MetabasePath))) { Configuration webConfiguration; if (isChildVDirApplication) { webConfiguration = serverManager.Sites[IisUtility.GetWebSiteName(directoryEntry.Parent.Parent.Path)].Applications[string.Format("/{0}/{1}", directoryEntry.Parent.Name, directoryEntry.Name)].GetWebConfiguration(); } else { webConfiguration = serverManager.Sites[IisUtility.GetWebSiteName(directoryEntry.Parent.Path)].Applications["/" + directoryEntry.Name].GetWebConfiguration(); } ConfigurationElementCollection collection = webConfiguration.GetSection("system.webServer/modules").GetCollection(); foreach (ConfigurationElement configurationElement in collection) { if (string.Equals(configurationElement.Attributes["name"].Value.ToString(), moduleName, StringComparison.Ordinal)) { return(true); } } result = false; } return(result); }
internal static void UpdateFromMetabase(ExchangeWebAppVirtualDirectory webAppVirtualDirectory) { try { DirectoryEntry directoryEntry2; DirectoryEntry directoryEntry = directoryEntry2 = IisUtility.CreateIISDirectoryEntry(webAppVirtualDirectory.MetabasePath); try { MetabaseProperty[] properties = IisUtility.GetProperties(directoryEntry); webAppVirtualDirectory.DefaultDomain = (string)IisUtility.GetIisPropertyValue("DefaultLogonDomain", properties); webAppVirtualDirectory[ExchangeWebAppVirtualDirectorySchema.FormsAuthentication] = IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Fba); webAppVirtualDirectory[ExchangeWebAppVirtualDirectorySchema.BasicAuthentication] = IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic); webAppVirtualDirectory[ExchangeWebAppVirtualDirectorySchema.DigestAuthentication] = IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Digest); webAppVirtualDirectory[ExchangeWebAppVirtualDirectorySchema.WindowsAuthentication] = IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Ntlm); if (!IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.None)) { webAppVirtualDirectory[ExchangeWebAppVirtualDirectorySchema.LiveIdAuthentication] = false; } webAppVirtualDirectory.DisplayName = directoryEntry.Name; webAppVirtualDirectory.WebSite = IisUtility.GetWebSiteName(directoryEntry.Parent.Path); } finally { if (directoryEntry2 != null) { ((IDisposable)directoryEntry2).Dispose(); } } webAppVirtualDirectory.GzipLevel = Gzip.GetGzipLevel(webAppVirtualDirectory.MetabasePath); } catch (IISGeneralCOMException ex) { if (ex.Code == -2147023174) { throw new IISNotReachableException(IisUtility.GetHostName(webAppVirtualDirectory.MetabasePath), ex.Message); } throw; } }
// Token: 0x06000D79 RID: 3449 RVA: 0x00059B04 File Offset: 0x00057D04 private static void InitializeConfigurationManager() { try { OwaConfigurationManager.session = Utilities.CreateADSystemConfigurationSessionScopedToFirstOrg(false, ConsistencyMode.FullyConsistent); Server server = OwaConfigurationManager.session.FindLocalServer(); OwaConfigurationManager.isPhoneticSupportEnabled = server.IsPhoneticSupportEnabled; OwaConfigurationManager.virtualDirectoryName = HttpRuntime.AppDomainAppVirtualPath.Replace("'", "''"); if (OwaConfigurationManager.virtualDirectoryName[0] == '/') { OwaConfigurationManager.virtualDirectoryName = OwaConfigurationManager.virtualDirectoryName.Substring(1); } OwaConfigurationManager.webSiteName = HttpRuntime.AppDomainAppId; if (OwaConfigurationManager.webSiteName[0] == '/') { OwaConfigurationManager.webSiteName = OwaConfigurationManager.webSiteName.Substring(1); } int num = OwaConfigurationManager.webSiteName.IndexOf('/'); OwaConfigurationManager.webSiteName = OwaConfigurationManager.webSiteName.Substring(num); OwaConfigurationManager.webSiteName = string.Format("IIS://{0}{1}", server.Fqdn, OwaConfigurationManager.webSiteName); num = OwaConfigurationManager.webSiteName.LastIndexOf('/'); OwaConfigurationManager.webSiteName = IisUtility.GetWebSiteName(OwaConfigurationManager.webSiteName.Substring(0, num)); OwaConfigurationManager.virtualDirectoryDN = new ADObjectId(server.DistinguishedName).GetDescendantId("Protocols", "HTTP", new string[] { string.Format("{0} ({1})", OwaConfigurationManager.virtualDirectoryName, OwaConfigurationManager.webSiteName) }); } catch (Exception ex) { ExTraceGlobals.ConfigurationManagerTracer.TraceDebug <string>(0L, "Unable to retrieve the AD session or the server object. {0}", ex.Message); OwaDiagnostics.LogEvent(ClientsEventLogConstants.Tuple_ADSystemConfigurationSession, string.Empty, new object[] { ex.Message }); throw; } }
private static bool GetServerWebSiteAndPath(string metabasePath, out string serverName, out string webSiteName, out string appPath) { serverName = IisUtility.GetHostName(metabasePath); int num = metabasePath.IndexOf("/ROOT/"); if (num > 0) { num = metabasePath.IndexOf("/", num + 1); } if (num > 0) { string text = metabasePath.Substring(0, num); if (!string.IsNullOrEmpty(text)) { webSiteName = IisUtility.GetWebSiteName(text); appPath = metabasePath.Substring(num); return(true); } } serverName = string.Empty; webSiteName = string.Empty; appPath = string.Empty; return(false); }
protected override void InternalValidate() { object[] array = new object[1]; object[] array2 = array; int num = 0; T dataObject = this.DataObject; array2[num] = dataObject.Identity; TaskLogger.LogEnter(array); base.InternalValidate(); if (base.HasErrors) { return; } string fqdn = base.OwningServer.Fqdn; string text = base.Name.ToString(); if (string.IsNullOrEmpty(this.WebSiteName)) { if (this.Role == VirtualDirectoryRole.ClientAccess) { this.WebSiteName = IisUtility.GetWebSiteName(IisUtility.CreateAbsolutePath(IisUtility.AbsolutePathType.WebSiteRoot, fqdn, "/W3SVC/1/ROOT", null)); this.ApplicationRoot = "/W3SVC/1/ROOT"; } else { this.WebSiteName = "Exchange Back End"; } } if (string.Empty.Equals(this.AppPoolId)) { Exception exception = new ArgumentException(Strings.ErrorAppPoolIdCannotBeEmpty, "AppPoolId"); ErrorCategory category = ErrorCategory.InvalidArgument; T dataObject2 = this.DataObject; base.WriteError(exception, category, dataObject2.Identity); } try { if (!new IisVersionValidCondition(fqdn).Verify()) { Exception exception2 = new ArgumentException(Strings.ErrorIisVersionIsInvalid(fqdn), "Server"); ErrorCategory category2 = ErrorCategory.InvalidArgument; T dataObject3 = this.DataObject; base.WriteError(exception2, category2, dataObject3.Identity); } } catch (IOException innerException) { Exception exception3 = new ArgumentException(Strings.ErrorCannotDetermineIisVersion(fqdn), "Server", innerException); ErrorCategory category3 = ErrorCategory.InvalidArgument; T dataObject4 = this.DataObject; base.WriteError(exception3, category3, dataObject4.Identity); } catch (InvalidOperationException innerException2) { Exception exception4 = new ArgumentException(Strings.ErrorCannotDetermineIisVersion(fqdn), "Server", innerException2); ErrorCategory category4 = ErrorCategory.InvalidArgument; T dataObject5 = this.DataObject; base.WriteError(exception4, category4, dataObject5.Identity); } try { if (!new WebSiteExistsCondition(fqdn, this.WebSiteName).Verify()) { Exception exception5 = new ArgumentException(Strings.ErrorWebSiteNotExists(this.WebSiteName, fqdn), "WebSiteName"); ErrorCategory category5 = ErrorCategory.InvalidArgument; T dataObject6 = this.DataObject; base.WriteError(exception5, category5, dataObject6.Identity); } if (string.IsNullOrEmpty(this.ApplicationRoot)) { this.ApplicationRoot = IisUtility.FindWebSiteRootPath(this.WebSiteName, fqdn); } } catch (IisUtilityCannotDisambiguateWebSiteException innerException3) { Exception exception6 = new ArgumentException(Strings.ErrorWebsiteAmbiguousInIIS(this.WebSiteName, fqdn), "WebSiteName", innerException3); ErrorCategory category6 = ErrorCategory.InvalidArgument; T dataObject7 = this.DataObject; base.WriteError(exception6, category6, dataObject7.Identity); } T dataObject8 = this.DataObject; T dataObject9 = this.DataObject; dataObject8.SetId(new ADObjectId(dataObject9.Server.DistinguishedName).GetDescendantId("Protocols", "HTTP", new string[] { string.Format("{0} ({1})", base.Name, this.WebSiteName) })); if (this.FailOnVirtualDirectoryADObjectAlreadyExists()) { IConfigDataProvider dataSession = base.DataSession; T dataObject10 = this.DataObject; if (dataSession.Read <T>(dataObject10.Identity) != null) { string virtualDirectoryName = text; T dataObject11 = this.DataObject; Exception exception7 = new ArgumentException(Strings.ErrorVirtualDirectoryADObjectAlreadyExists(virtualDirectoryName, dataObject11.DistinguishedName), "VirtualDirectoryName"); ErrorCategory category7 = ErrorCategory.InvalidArgument; T dataObject12 = this.DataObject; base.WriteError(exception7, category7, dataObject12.Identity); } } if (this.FailOnVirtualDirectoryAlreadyExists() && new VirtualDirectoryExistsCondition(fqdn, this.WebSiteName, text).Verify()) { Exception exception8 = new ArgumentException(Strings.ErrorVirtualDirectoryAlreadyExists(text, this.WebSiteName, fqdn), "VirtualDirectoryName"); ErrorCategory category8 = ErrorCategory.InvalidArgument; T dataObject13 = this.DataObject; base.WriteError(exception8, category8, dataObject13.Identity); } T dataObject14 = this.DataObject; dataObject14.MetabasePath = string.Format("IIS://{0}{1}/{2}", fqdn, IisUtility.FindWebSiteRootPath(this.WebSiteName, fqdn), text); ExtendedProtection.Validate(this, this.DataObject); TaskLogger.LogExit(); }
protected override IConfigurable PrepareDataObject() { TaskLogger.LogEnter(); ADOabVirtualDirectory adoabVirtualDirectory = (ADOabVirtualDirectory)base.PrepareDataObject(); adoabVirtualDirectory.RequireSSL = this.RequireSSL; this.serverFQDN = base.OwningServer.Fqdn; string text; if (string.IsNullOrEmpty(base.WebSiteName)) { if (base.Role == VirtualDirectoryRole.ClientAccess) { text = IisUtility.GetWebSiteName(IisUtility.CreateAbsolutePath(IisUtility.AbsolutePathType.WebSiteRoot, this.serverFQDN, "/W3SVC/1/ROOT", null)); } else { text = "Exchange Back End"; } } else { text = base.WebSiteName; } ADOabVirtualDirectory[] array = ((IConfigurationSession)base.DataSession).Find <ADOabVirtualDirectory>(base.OwningServer.Id, QueryScope.SubTree, null, null, 0); if (array != null && array.Length != 0) { ADOabVirtualDirectory[] array2 = array; int i = 0; while (i < array2.Length) { ADOabVirtualDirectory adoabVirtualDirectory2 = array2[i]; string webSiteRootPath = null; string text2 = null; try { IisUtility.ParseApplicationRootPath(adoabVirtualDirectory2.MetabasePath, ref webSiteRootPath, ref text2); } catch (IisUtilityInvalidApplicationRootPathException ex) { base.WriteWarning(ex.Message); goto IL_24E; } goto IL_D6; IL_24E: i++; continue; IL_D6: string webSiteName = IisUtility.GetWebSiteName(webSiteRootPath); if (string.Compare(webSiteName, text, false) == 0) { try { if (DirectoryEntry.Exists(adoabVirtualDirectory2.MetabasePath)) { if (!this.Recovery) { base.WriteError(new InvalidOperationException(Strings.ErrorOabVirtualDirectoryAlreadyExists(adoabVirtualDirectory2.Identity.ToString(), text, this.serverFQDN)), ErrorCategory.InvalidOperation, this.DataObject.Identity); } else { base.WriteError(new InvalidOperationException(Strings.ErrorOabVirtualDirectoryAlreadyExistsWithRecovery(adoabVirtualDirectory2.Identity.ToString(), text, this.serverFQDN)), ErrorCategory.InvalidOperation, this.DataObject.Identity); } } else if (!this.Recovery) { base.WriteError(new InvalidOperationException(Strings.ErrorOabVirtualDirectoryADObjectAlreadyExists(adoabVirtualDirectory2.Identity.ToString(), text, this.serverFQDN)), ErrorCategory.InvalidOperation, this.DataObject.Identity); } else { array[0].CopyChangesFrom(adoabVirtualDirectory); adoabVirtualDirectory = adoabVirtualDirectory2; adoabVirtualDirectory.SetId(new ADObjectId(adoabVirtualDirectory.Server.DistinguishedName).GetDescendantId("Protocols", "HTTP", new string[] { string.Format("{0} ({1})", this.Name, base.WebSiteName) })); adoabVirtualDirectory.MetabasePath = string.Format("IIS://{0}{1}/{2}", this.serverFQDN, IisUtility.FindWebSiteRootPath(base.WebSiteName, this.serverFQDN), this.Name); } } catch (COMException exception) { base.WriteError(exception, ErrorCategory.ReadError, null); } goto IL_24E; } goto IL_24E; } } if (new VirtualDirectoryExistsCondition(this.serverFQDN, text, this.Name).Verify()) { base.WriteError(new InvalidOperationException(Strings.ErrorOabVirtualDirectoryIISObjectAlreadyExists(string.Format("{0}\\{1}", text, this.Name), text, this.serverFQDN)), ErrorCategory.InvalidOperation, this.DataObject.Identity); } this.isExistingFolder = true; this.isLocalServer = this.IsLocalServer(); if (string.IsNullOrEmpty(base.Path)) { base.Path = System.IO.Path.Combine(base.OwningServer.InstallPath.PathName, (base.Role == VirtualDirectoryRole.ClientAccess) ? "FrontEnd\\HttpProxy\\OAB" : "ClientAccess\\OAB"); } else { LocalLongFullPath localLongFullPath = null; try { localLongFullPath = LocalLongFullPath.Parse(base.Path); } catch (ArgumentException ex2) { base.WriteError(new ArgumentException(new LocalizedString(ex2.Message.ToString()), "Path"), ErrorCategory.InvalidArgument, base.OwningServer.Identity); return(null); } base.Path = localLongFullPath.PathName; } if (base.Role == VirtualDirectoryRole.ClientAccess && adoabVirtualDirectory.InternalUrl == null) { if (this.isLocalServer) { adoabVirtualDirectory.InternalUrl = new Uri(string.Format("http://{0}/{1}", ComputerInformation.DnsFullyQualifiedDomainName, "OAB")); } else { base.WriteError(new ArgumentException(Strings.ErrorMissingInternalUrlInRemoteScenario, "InternalUrl"), ErrorCategory.InvalidArgument, base.OwningServer.Identity); } } TaskLogger.LogExit(); return(adoabVirtualDirectory); }