public virtual object Create(Object parent, object configContextObj, XmlNode section) { // if called through client config don't even load HttpRuntime if (!HandlerBase.IsServerConfiguration(configContextObj)) { return(null); } bool bTemp = false; int iTemp = 0; uint uiTemp = 0; string sTemp = null; int maxWorkerThreads = 0; int maxIoThreads = 0; int minWorkerThreads = 0; int minIoThreads = 0; int responseDeadlockInterval = 0; HandlerBase.GetAndRemoveBooleanAttribute(section, "enable", ref bTemp); GetAndRemoveProcessModelTimeout(section, "timeout", ref iTemp); GetAndRemoveProcessModelTimeout(section, "idleTimeout", ref iTemp); GetAndRemoveProcessModelTimeout(section, "shutdownTimeout", ref iTemp); GetAndRemoveIntegerOrInfiniteAttribute(section, "requestLimit", ref iTemp); GetAndRemoveIntegerOrInfiniteAttribute(section, "requestQueueLimit", ref iTemp); GetAndRemoveIntegerOrInfiniteAttribute(section, "restartQueueLimit", ref iTemp); HandlerBase.GetAndRemoveIntegerAttribute(section, "memoryLimit", ref iTemp); GetAndRemoveUnsignedIntegerAttribute(section, "cpuMask", ref uiTemp); HandlerBase.GetAndRemoveEnumAttribute(section, "logLevel", typeof(LogLevelEnum), ref iTemp); HandlerBase.GetAndRemoveStringAttribute(section, "userName", ref sTemp); HandlerBase.GetAndRemoveStringAttribute(section, "password", ref sTemp); HandlerBase.GetAndRemoveBooleanAttribute(section, "webGarden", ref bTemp); GetAndRemoveProcessModelTimeout(section, "clientConnectedCheck", ref iTemp); HandlerBase.GetAndRemoveStringAttribute(section, "comImpersonationLevel", ref sTemp); HandlerBase.GetAndRemoveStringAttribute(section, "comAuthenticationLevel", ref sTemp); GetAndRemoveProcessModelTimeout(section, "responseDeadlockInterval", ref responseDeadlockInterval); GetAndRemoveProcessModelTimeout(section, "responseRestartDeadlockInterval", ref iTemp); HandlerBase.GetAndRemovePositiveIntegerAttribute(section, "maxWorkerThreads", ref maxWorkerThreads); HandlerBase.GetAndRemovePositiveIntegerAttribute(section, "maxIoThreads", ref maxIoThreads); HandlerBase.GetAndRemovePositiveIntegerAttribute(section, "minWorkerThreads", ref minWorkerThreads); HandlerBase.GetAndRemovePositiveIntegerAttribute(section, "minIoThreads", ref minIoThreads); HandlerBase.GetAndRemoveStringAttribute(section, "serverErrorMessageFile", ref sTemp); GetAndRemoveIntegerOrInfiniteAttribute(section, "requestAcks", ref iTemp); GetAndRemoveProcessModelTimeout(section, "pingFrequency", ref iTemp); GetAndRemoveProcessModelTimeout(section, "pingTimeout", ref iTemp); GetAndRemoveIntegerOrInfiniteAttribute(section, "asyncOption", ref iTemp); HandlerBase.CheckForUnrecognizedAttributes(section); HandlerBase.CheckForChildNodes(section); return(new ProcessModelConfig(maxWorkerThreads, maxIoThreads, minWorkerThreads, minIoThreads, responseDeadlockInterval)); }
internal void LoadValuesFromConfigurationXml(XmlNode section) { HandlerBase.GetAndRemoveBooleanAttribute(section, "enabled", ref _isEnabled); HandlerBase.GetAndRemoveNonNegativeIntegerAttribute(section, "requestLimit", ref _requestLimit); HandlerBase.GetAndRemoveBooleanAttribute(section, "pageOutput", ref _pageOutput); HandlerBase.GetAndRemoveBooleanAttribute(section, "localOnly", ref _localOnly); string [] values = { "SortByTime", "SortByCategory" }; // TraceMode is in another file in a different namespace ... so lets have some protection if they change Debug.Assert(TraceMode.SortByTime == (TraceMode)0); Debug.Assert(TraceMode.SortByCategory == (TraceMode)1); int iMode = 0; XmlNode attribute = HandlerBase.GetAndRemoveEnumAttribute(section, "traceMode", values, ref iMode); if (attribute != null) { _outputMode = (TraceMode)iMode; } HandlerBase.CheckForUnrecognizedAttributes(section); // section can have no content HandlerBase.CheckForChildNodes(section); }
private void ReadFormsSettings(XmlNode node) { XmlNode tempAttr = HandlerBase.GetAndRemoveNonEmptyStringAttribute(node, "name", ref _CookieName); //Trace("FormsAuthConfigSettings::ReadSettings cookie name " + _CookieName); tempAttr = HandlerBase.GetAndRemoveNonEmptyStringAttribute(node, "loginUrl", ref _LoginUrl); if (tempAttr != null) { if (_LoginUrl.StartsWith("\\\\") || (_LoginUrl.Length > 1 && _LoginUrl[1] == ':')) { throw new ConfigurationException( HttpRuntime.FormatResourceString(SR.Auth_bad_url), tempAttr); } } //Trace("FormsAuthConfigSettings::ReadSettings login url " + _LoginUrl); int iTemp = 0; tempAttr = HandlerBase.GetAndRemoveEnumAttribute(node, "protection", typeof(FormsProtectionEnum), ref iTemp); if (tempAttr != null) { _Protection = (FormsProtectionEnum)iTemp; } tempAttr = HandlerBase.GetAndRemovePositiveIntegerAttribute(node, "timeout", ref _Timeout); tempAttr = HandlerBase.GetAndRemoveNonEmptyStringAttribute(node, "path", ref _FormsCookiePath); HandlerBase.GetAndRemoveBooleanAttribute(node, "requireSSL", ref _RequireSSL); HandlerBase.GetAndRemoveBooleanAttribute(node, "slidingExpiration", ref _SlidingExpiration); HandlerBase.CheckForUnrecognizedAttributes(node); foreach (XmlNode child in node.ChildNodes) { if (child.NodeType != XmlNodeType.Element) { continue; } if (child.Name != "credentials") { HandlerBase.ThrowUnrecognizedElement(child); } tempAttr = HandlerBase.GetAndRemoveEnumAttribute(child, "passwordFormat", typeof(FormsAuthPasswordFormat), ref iTemp); if (tempAttr != null) { _PasswordFormat = (FormsAuthPasswordFormat)iTemp; //Trace("FormsAuthConfigSettings::ReadSettings password format " + strTemp); } HandlerBase.CheckForUnrecognizedAttributes(child); foreach (XmlNode child2 in child.ChildNodes) { if (child2.NodeType != XmlNodeType.Element) { continue; } if (child2.Name != "user") { HandlerBase.ThrowUnrecognizedElement(child2); } string strUser = null; string strPass = null; tempAttr = HandlerBase.GetAndRemoveRequiredStringAttribute(child2, "name", ref strUser); HandlerBase.GetAndRemoveRequiredStringAttribute(child2, "password", ref strPass); HandlerBase.CheckForUnrecognizedAttributes(child2); HandlerBase.CheckForChildNodes(child2); //Trace("FormsAuthConfigSettings::ReadSettings adding user " + strUser + " " + strPass); strUser = strUser.ToLower(CultureInfo.InvariantCulture); String strPassInTable = (String)_Credentials[strUser]; if (strPassInTable == null) { _Credentials.Add(strUser, strPass); } else { if (String.Compare(strPassInTable, strPass, false, CultureInfo.InvariantCulture) != 0) { throw new ConfigurationException( HttpRuntime.FormatResourceString(SR.User_Already_Specified, strUser), tempAttr); } } } } }
internal AuthenticationConfig(AuthenticationConfig parent, XmlNode section) { if (parent != null) { _CookieName = parent.CookieName; _LoginUrl = parent.LoginUrl; _PasswordFormat = parent.PasswordFormat; _Credentials = (Hashtable)parent.Credentials.Clone(); _Mode = parent.Mode; _PassportUrl = parent.PassportUrl; _Protection = parent.Protection; _FormsCookiePath = parent.FormsCookiePath; _Timeout = parent.Timeout; _RequireSSL = parent.RequireSSL; _SlidingExpiration = parent.SlidingExpiration; } else { _Credentials = new Hashtable(); } //////////////////////////////////////////////////////////// // Step 1: Read the mode int iMode = 0; XmlNode attribute = HandlerBase.GetAndRemoveEnumAttribute(section, "mode", typeof(AuthenticationMode), ref iMode); if (attribute != null) { _Mode = (AuthenticationMode)iMode; if (_Mode == AuthenticationMode.Passport && UnsafeNativeMethods.PassportVersion() < 0) { throw new ConfigurationException( HttpRuntime.FormatResourceString(SR.Passport_not_installed), attribute); } } HandlerBase.CheckForUnrecognizedAttributes(section); //////////////////////////////////////////////////////////// // Step 2: Read children nodes foreach (XmlNode child in section.ChildNodes) { if (child.NodeType != XmlNodeType.Element) { continue; } if (child.Name == "forms") { ReadFormsSettings(child); } else if (child.Name == "passport") { attribute = child.Attributes.RemoveNamedItem("redirectUrl"); if (attribute != null) { _PassportUrl = attribute.Value; if (_PassportUrl.StartsWith("\\\\") || (_PassportUrl.Length > 1 && _PassportUrl[1] == ':')) { throw new ConfigurationException( HttpRuntime.FormatResourceString(SR.Auth_bad_url), attribute); } } HandlerBase.CheckForUnrecognizedAttributes(child); HandlerBase.CheckForChildNodes(child); } else { throw new ConfigurationException( HttpRuntime.FormatResourceString(SR.Auth_unrecognized_tag, child.Name), child); } } }
// CTor internal MachineKeyConfig(object parentObject, object contextObject, XmlNode node) { MachineKeyConfig parent = (MachineKeyConfig)parentObject; HttpConfigurationContext configContext = contextObject as HttpConfigurationContext; if (HandlerBase.IsPathAtAppLevel(configContext.VirtualPath) == PathLevel.BelowApp) { throw new ConfigurationException( HttpRuntime.FormatResourceString(SR.No_MachineKey_Config_In_subdir), node); } if (parent != null) { _ValidationKey = parent.ValidationKey; _DecryptionKey = parent.DecryptionKey; _ValidationMode = parent.ValidationMode; _AutogenKey = parent.AutogenKey; } XmlNode vNode = node.Attributes.RemoveNamedItem("validationKey"); XmlNode dNode = node.Attributes.RemoveNamedItem("decryptionKey"); int iMode = 0; string [] modeStrings = { "SHA1", "MD5", "3DES" }; XmlNode mNode = HandlerBase.GetAndRemoveEnumAttribute(node, "validation", modeStrings, ref iMode); if (mNode != null) { _ValidationMode = (MachineKeyValidationMode)iMode; } HandlerBase.CheckForUnrecognizedAttributes(node); HandlerBase.CheckForChildNodes(node); if (vNode != null && vNode.Value != null) { String strKey = vNode.Value; bool fAppSpecific = strKey.EndsWith(",IsolateApps"); if (fAppSpecific) { strKey = strKey.Substring(0, strKey.Length - ",IsolateApps".Length); } if (strKey == "AutoGenerate") // case sensitive { _ValidationKey = new byte[64]; Buffer.BlockCopy(HttpRuntime.s_autogenKeys, 0, _ValidationKey, 0, 64); } else { if (strKey.Length > 128 || strKey.Length < 40) { throw new ConfigurationException( HttpRuntime.FormatResourceString( SR.Unable_to_get_cookie_authentication_validation_key, strKey.Length.ToString()), vNode); } _ValidationKey = HexStringToByteArray(strKey); if (_ValidationKey == null) { throw new ConfigurationException( HttpRuntime.FormatResourceString( SR.Invalid_validation_key), vNode); } } if (fAppSpecific) { int dwCode = SymbolHashCodeProvider.Default.GetHashCode(HttpContext.Current.Request.ApplicationPath); _ValidationKey[0] = (byte)(dwCode & 0xff); _ValidationKey[1] = (byte)((dwCode & 0xff00) >> 8); _ValidationKey[2] = (byte)((dwCode & 0xff0000) >> 16); _ValidationKey[3] = (byte)((dwCode & 0xff000000) >> 24); } } if (dNode != null) { String strKey = dNode.Value; bool fAppSpecific = strKey.EndsWith(",IsolateApps"); if (fAppSpecific) { strKey = strKey.Substring(0, strKey.Length - ",IsolateApps".Length); } if (strKey == "AutoGenerate") // case sensitive { _DecryptionKey = new byte[24]; Buffer.BlockCopy(HttpRuntime.s_autogenKeys, 64, _DecryptionKey, 0, 24); _AutogenKey = true; } else { _AutogenKey = false; if (strKey.Length == 48) // Make sure Triple DES is installed { TripleDESCryptoServiceProvider oTemp = null; try { oTemp = new TripleDESCryptoServiceProvider(); } catch (Exception) { } if (oTemp == null) { throw new ConfigurationException( HttpRuntime.FormatResourceString( SR.cannot_use_Triple_DES), dNode); } } if (strKey.Length != 48 && strKey.Length != 16) { throw new ConfigurationException( HttpRuntime.FormatResourceString( SR.Unable_to_get_cookie_authentication_decryption_key, strKey.Length.ToString()), dNode); } _DecryptionKey = HexStringToByteArray(strKey); if (_DecryptionKey == null) { throw new ConfigurationException( HttpRuntime.FormatResourceString( SR.Invalid_decryption_key), dNode); } } if (fAppSpecific) { int dwCode = SymbolHashCodeProvider.Default.GetHashCode(HttpContext.Current.Request.ApplicationPath); _DecryptionKey[0] = (byte)(dwCode & 0xff); _DecryptionKey[1] = (byte)((dwCode & 0xff00) >> 8); _DecryptionKey[2] = (byte)((dwCode & 0xff0000) >> 16); _DecryptionKey[3] = (byte)((dwCode & 0xff000000) >> 24); } } }