Imported Upstream version 4.0.0~alpha1

Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
This commit is contained in:
Jo Shields
2015-04-07 09:35:12 +01:00
parent 283343f570
commit 3c1f479b9d
22469 changed files with 2931443 additions and 869343 deletions

View File

@@ -0,0 +1,28 @@
//------------------------------------------------------------------------------
// <copyright file="AdapterDictionary.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Security.Permissions;
[Serializable]
public class AdapterDictionary : OrderedDictionary {
public AdapterDictionary() {
}
public string this[string key] {
get {
return (string)base[key];
}
set {
base[key] = value;
}
}
}
}

View File

@@ -0,0 +1,203 @@
//------------------------------------------------------------------------------
// <copyright file="AnonymousIdentificationSection.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.Web.Security;
using System.ComponentModel;
using System.Security.Permissions;
// <!--
// anonymousIdentification configuration:
// enabled="[true|false]" Feature is enabled?
// cookieName=".ASPXANONYMOUS" Cookie Name
// cookieTimeout="100000" Cookie Timeout in minutes
// cookiePath="/" Cookie Path
// cookieRequireSSL="[true|false]" Set Secure bit in Cookie
// cookieSlidingExpiration="[true|false]" Reissue expiring cookies?
// cookieProtection="[None|Validation|Encryption|All]" How to protect cookies from being read/tampered
// cookieless="[UseCookies|UseUri|AutoDetect|UseDeviceProfile]" - Use Cookies or the URL path to store the id
// domain="[domain]" Enables output of the "domain" cookie attribute set to the specified value
// -->
//
// <anonymousIdentification enabled="false" cookieName=".ASPXANONYMOUS" cookieTimeout="100000"
// cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true"
// cookieProtection="None" cookieless="UseDeviceProfile" domain="" />
// [SectionComment(
// " anonymousIdentification configuration:" + "\r\n" +
// " enabled=\"[true|false]\" Feature is enabled?" + "\r\n" +
// " cookieName=\".ASPXANONYMOUS\" Cookie Name" + "\r\n" +
// " cookieTimeout=\"100000\" Cookie Timeout in minutes" + "\r\n" +
// " cookiePath=\"/\" Cookie Path" + "\r\n" +
// " cookieRequireSSL=\"[true|false]\" Set Secure bit in Cookie" + "\r\n" +
// " cookieSlidingExpiration=\"[true|false]\" Reissue expiring cookies?" + "\r\n" +
// " cookieProtection=\"[None|Validation|Encryption|All]\" How to protect cookies from being read/tampered" + "\r\n" +
// " cookieless=\"[UseCookies|UseUri|AutoDetect|UseDeviceProfile]\" - Use Cookies or the URL path to store the id" + "\r\n" +
// " domain=\"[domain]\" Enables output of the "domain" cookie attribute set to the specified value" + "\r\n" +
// " -->" + "\r\n" +
// )]
public sealed class AnonymousIdentificationSection : ConfigurationSection {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propEnabled =
new ConfigurationProperty("enabled", typeof(bool), false, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieName =
new ConfigurationProperty("cookieName",
typeof(string),
".ASPXANONYMOUS",
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieTimeout =
new ConfigurationProperty("cookieTimeout",
typeof(TimeSpan),
TimeSpan.FromMinutes(100000.0),
StdValidatorsAndConverters.TimeSpanMinutesOrInfiniteConverter,
StdValidatorsAndConverters.PositiveTimeSpanValidator,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookiePath =
new ConfigurationProperty("cookiePath",
typeof(string),
"/",
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieRequireSSL =
new ConfigurationProperty("cookieRequireSSL", typeof(bool), false, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieSlidingExpiration =
new ConfigurationProperty("cookieSlidingExpiration", typeof(bool), true, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieProtection =
new ConfigurationProperty("cookieProtection", typeof(CookieProtection), CookieProtection.Validation, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieless =
new ConfigurationProperty("cookieless", typeof(HttpCookieMode), HttpCookieMode.UseCookies, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propDomain =
new ConfigurationProperty("domain", typeof(string), null, ConfigurationPropertyOptions.None);
static AnonymousIdentificationSection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propEnabled);
_properties.Add(_propCookieName);
_properties.Add(_propCookieTimeout);
_properties.Add(_propCookiePath);
_properties.Add(_propCookieRequireSSL);
_properties.Add(_propCookieSlidingExpiration);
_properties.Add(_propCookieProtection);
_properties.Add(_propCookieless);
_properties.Add(_propDomain);
}
public AnonymousIdentificationSection() {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("enabled", DefaultValue = false)]
public bool Enabled {
get {
return (bool)base[_propEnabled];
}
set {
base[_propEnabled] = value;
}
}
[ConfigurationProperty("cookieName", DefaultValue = ".ASPXANONYMOUS")]
[StringValidator(MinLength = 1)]
public string CookieName {
get {
return (string)base[_propCookieName];
}
set {
base[_propCookieName] = value;
}
}
[ConfigurationProperty("cookieTimeout", DefaultValue = "69.10:40:00")]
[TimeSpanValidator(MinValueString="00:00:00", MaxValueString=TimeSpanValidatorAttribute.TimeSpanMaxValue)]
[TypeConverter(typeof(TimeSpanMinutesOrInfiniteConverter))]
public TimeSpan CookieTimeout {
get {
return (TimeSpan)base[_propCookieTimeout];
}
set {
base[_propCookieTimeout] = value;
}
}
[ConfigurationProperty("cookiePath", DefaultValue = "/")]
[StringValidator(MinLength = 1)]
public string CookiePath {
get {
return (string)base[_propCookiePath];
}
set {
base[_propCookiePath] = value;
}
}
[ConfigurationProperty("cookieRequireSSL", DefaultValue = false)]
public bool CookieRequireSSL {
get {
return (bool)base[_propCookieRequireSSL];
}
set {
base[_propCookieRequireSSL] = value;
}
}
[ConfigurationProperty("cookieSlidingExpiration", DefaultValue = true)]
public bool CookieSlidingExpiration {
get {
return (bool)base[_propCookieSlidingExpiration];
}
set {
base[_propCookieSlidingExpiration] = value;
}
}
[ConfigurationProperty("cookieProtection", DefaultValue = CookieProtection.Validation)]
public CookieProtection CookieProtection {
get {
return (CookieProtection)base[_propCookieProtection];
}
set {
base[_propCookieProtection] = value;
}
}
[ConfigurationProperty("cookieless", DefaultValue = HttpCookieMode.UseCookies)]
public HttpCookieMode Cookieless {
get {
return (HttpCookieMode)base[_propCookieless];
}
set {
base[_propCookieless] = value;
}
}
[ConfigurationProperty("domain")]
public string Domain {
get {
return (string)base[_propDomain];
}
set {
base[_propDomain] = value;
}
}
}
}

View File

@@ -0,0 +1,86 @@
//------------------------------------------------------------------------------
// <copyright file="AssemblyCollection.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.Web.Compilation;
using System.Reflection;
using System.Web.Hosting;
using System.Web.UI;
using System.CodeDom.Compiler;
using System.Web.Util;
using System.ComponentModel;
using System.Security.Permissions;
[ConfigurationCollection(typeof(AssemblyInfo))]
public sealed class AssemblyCollection : ConfigurationElementCollection {
private static ConfigurationPropertyCollection _properties;
static AssemblyCollection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
public AssemblyInfo this[int index] {
get {
return (AssemblyInfo)BaseGet(index);
}
set {
if (BaseGet(index) != null) {
BaseRemoveAt(index);
}
BaseAdd(index, value);
}
}
public new AssemblyInfo this[String assemblyName] {
get {
return (AssemblyInfo)BaseGet(assemblyName);
}
}
public void Add(AssemblyInfo assemblyInformation) {
BaseAdd(assemblyInformation);
}
public void Remove(String key) {
BaseRemove(key);
}
public void RemoveAt(int index) {
BaseRemoveAt(index);
}
protected override ConfigurationElement CreateNewElement() {
return new AssemblyInfo();
}
protected override Object GetElementKey(ConfigurationElement element) {
return ((AssemblyInfo)element).Assembly;
}
public void Clear() {
BaseClear();
}
internal bool IsRemoved(string key) {
return BaseIsRemoved(key);
}
}
}

View File

@@ -0,0 +1,87 @@
//------------------------------------------------------------------------------
// <copyright file="AssemblyInfo.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.Web.Compilation;
using System.Reflection;
using System.Web.Hosting;
using System.Web.UI;
using System.CodeDom.Compiler;
using System.Web.Util;
using System.ComponentModel;
using System.Security.Permissions;
public sealed class AssemblyInfo : ConfigurationElement {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propAssembly =
new ConfigurationProperty("assembly",
typeof(string),
null,
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey | ConfigurationPropertyOptions.IsAssemblyStringTransformationRequired);
private Assembly[] _assembly;
private CompilationSection _compilationSection;
internal void SetCompilationReference(CompilationSection compSection) {
_compilationSection = compSection;
}
static AssemblyInfo() {
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propAssembly);
}
internal AssemblyInfo() {
}
public AssemblyInfo(string assemblyName) {
Assembly = assemblyName;
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("assembly", IsRequired = true, IsKey = true, DefaultValue = "")]
[StringValidator(MinLength = 1)]
public string Assembly {
get {
return (string)base[_propAssembly];
}
set {
base[_propAssembly] = value;
}
}
internal Assembly[] AssemblyInternal {
get {
Debug.Trace("AssemblyInternal", "Loading assembly: " + Assembly);
if (_assembly == null) {
Debug.Assert(_compilationSection != null);
_assembly = _compilationSection.LoadAssembly(this);
}
return _assembly;
}
set {
Debug.Trace("AssemblyInternal", "Set assembly: " + Assembly);
_assembly = value;
}
}
}
}

View File

@@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <copyright file="AsyncPreloadModeFlags.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
/*
* AsyncPreloadModeFlags preloads the request entity for form posts.
*
* Copyright (c) 2010 Microsoft Corporation
*/
namespace System.Web.Configuration {
using System;
[Flags]
public enum AsyncPreloadModeFlags {
None = 0x00,
Form = 0x01,
FormMultiPart = 0x02,
NonForm = 0x04,
AllFormTypes = Form | FormMultiPart,
All = AllFormTypes | NonForm
}
}

View File

@@ -0,0 +1,100 @@
//------------------------------------------------------------------------------
// <copyright file="AuthenticationConfig.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
/*
* AuthenticationConfigHandler class
*
* Copyright (c) 1999 Microsoft Corporation
*/
namespace System.Web.Configuration {
using System.Runtime.Serialization;
using System.Web.Util;
using System.Collections;
using System.IO;
using System.Security.Principal;
using System.Xml;
using System.Security.Cryptography;
using System.Configuration;
using System.Globalization;
using System.Web.Hosting;
using System.Web.Compilation;
static internal class AuthenticationConfig {
private static AuthenticationMode? s_explicitMode;
internal static AuthenticationMode Mode {
get {
if (s_explicitMode.HasValue) {
return s_explicitMode.Value;
}
else {
AuthenticationSection settings = RuntimeConfig.GetAppConfig().Authentication;
settings.ValidateAuthenticationMode();
return settings.Mode;
}
}
set {
Debug.Assert(BuildManager.PreStartInitStage == PreStartInitStage.DuringPreStartInit);
Debug.Assert(value == AuthenticationMode.Forms, "Only Forms mode can be set to override config");
s_explicitMode = value;
}
}
internal static String GetCompleteLoginUrl(HttpContext context, String loginUrl) {
if (String.IsNullOrEmpty(loginUrl)) {
return String.Empty;
}
if (UrlPath.IsRelativeUrl(loginUrl)) {
loginUrl = UrlPath.Combine(HttpRuntime.AppDomainAppVirtualPathString, loginUrl);
}
return loginUrl;
}
internal static bool AccessingLoginPage(HttpContext context, String loginUrl) {
if (String.IsNullOrEmpty(loginUrl)) {
return false;
}
loginUrl = GetCompleteLoginUrl(context, loginUrl);
if (String.IsNullOrEmpty(loginUrl)) {
return false;
}
// Ignore query string
int iqs = loginUrl.IndexOf('?');
if (iqs >= 0) {
loginUrl = loginUrl.Substring(0, iqs);
}
String requestPath = context.Request.Path;
if (StringUtil.EqualsIgnoreCase(requestPath, loginUrl)) {
return true;
}
// It could be that loginUrl in config was UrlEncoded (ASURT 98932)
if (loginUrl.IndexOf('%') >= 0) {
String decodedLoginUrl;
// encoding is unknown try UTF-8 first, then request encoding
decodedLoginUrl = HttpUtility.UrlDecode(loginUrl);
if (StringUtil.EqualsIgnoreCase(requestPath, decodedLoginUrl)) {
return true;
}
decodedLoginUrl = HttpUtility.UrlDecode(loginUrl, context.Request.ContentEncoding);
if (StringUtil.EqualsIgnoreCase(requestPath, decodedLoginUrl)) {
return true;
}
}
return false;
}
}
}

View File

@@ -0,0 +1,16 @@
//------------------------------------------------------------------------------
// <copyright file="AuthenticationMode.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
public enum AuthenticationMode {
None,
Windows,
[Obsolete("This field is obsolete. The Passport authentication product is no longer supported and has been superseded by Live ID.")]
Passport,
Forms
}
}

View File

@@ -0,0 +1,171 @@
//------------------------------------------------------------------------------
// <copyright file="AuthenticationSection.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
/*****************************************************************************
From machine.config
<!--
authentication Attributes:
mode="[Windows|Forms|Passport|None]"
-->
<authentication mode="Windows">
<!--
forms Attributes:
name="[cookie name]" - Name of the cookie used for Forms Authentication
loginUrl="[url]" - Url to redirect client to for Authentication
protection="[All|None|Encryption|Validation]" - Protection mode for data in cookie
timeout="[minutes]" - Duration of time for cookie to be valid (reset on each request)
path="/" - Sets the path for the cookie
requireSSL="[true|false]" - Should the forms-authentication cookie be sent only over SSL
slidingExpiration="[true|false]" - Should the forms-authentication-cookie and ticket be re-issued if they are about to expire
defaultUrl="string" - Page to redirect to after login, if none has been specified
cookieless="[UseCookies|UseUri|AutoDetect|UseDeviceProfile]" - Use Cookies or the URL path to store the forms authentication ticket
domain="string" - Domain of the cookie
-->
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="default.aspx"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false" >
<!--
credentials Attributes:
passwordFormat="[Clear|SHA1|MD5]" - format of user password value stored in <user>
-->
<credentials passwordFormat="SHA1">
<!-- <user name="UserName" password="password" /> -->
</credentials>
</forms>
<!--
passport Attributes:
redirectUrl=["url"] - Specifies the page to redirect to, if the page requires authentication, and the user has not signed on with passport
-->
<passport redirectUrl="internal" />
</authentication>
<authentication mode="Windows">
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="default.aspx"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false" >
<credentials passwordFormat="SHA1">
</credentials>
</forms>
<passport redirectUrl="internal" />
</authentication>
******************************************************************************/
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.Web.Util;
using System.ComponentModel;
using System.Security.Permissions;
public sealed class AuthenticationSection : ConfigurationSection {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propForms =
new ConfigurationProperty("forms", typeof(FormsAuthenticationConfiguration), null, ConfigurationPropertyOptions.None);
#pragma warning disable 618
// Dev10 570002: This property is obsolete. The Passport authentication product is no longer supported and has been superseded by Live ID.
private static readonly ConfigurationProperty _propPassport =
new ConfigurationProperty("passport", typeof(PassportAuthentication), null, ConfigurationPropertyOptions.None);
#pragma warning restore 618
private static readonly ConfigurationProperty _propMode =
new ConfigurationProperty("mode", typeof(AuthenticationMode), AuthenticationMode.Windows, ConfigurationPropertyOptions.None);
static AuthenticationSection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propForms);
_properties.Add(_propPassport);
_properties.Add(_propMode);
}
private bool authenticationModeCached = false;
private AuthenticationMode authenticationModeCache;
public AuthenticationSection() {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("forms")]
public FormsAuthenticationConfiguration Forms {
get {
return (FormsAuthenticationConfiguration)base[_propForms];
}
}
[ConfigurationProperty("passport")]
[Obsolete("This property is obsolete. The Passport authentication product is no longer supported and has been superseded by Live ID.")]
public PassportAuthentication Passport {
get {
#pragma warning disable 618
return (PassportAuthentication)base[_propPassport];
#pragma warning restore 618
}
}
[ConfigurationProperty("mode", DefaultValue = AuthenticationMode.Windows)]
public AuthenticationMode Mode {
get {
if (authenticationModeCached == false) {
authenticationModeCache = (AuthenticationMode)base[_propMode];
authenticationModeCached = true;
}
return authenticationModeCache;
}
set {
base[_propMode] = value;
authenticationModeCache = value;
}
}
protected override void Reset(ConfigurationElement parentElement) {
base.Reset(parentElement);
authenticationModeCached = false;
}
// this should only happen at runtime since the design time machine does not
// need Passport installed to configure the server.
internal void ValidateAuthenticationMode() {
#pragma warning disable 618
if (Mode == AuthenticationMode.Passport && UnsafeNativeMethods.PassportVersion() < 0) {
#pragma warning restore 618
throw new ConfigurationErrorsException(SR.GetString(SR.Passport_not_installed));
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,13 @@
//------------------------------------------------------------------------------
// <copyright file="AuthorizationRuleAction.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
public enum AuthorizationRuleAction {
Deny = 0,
Allow = 1,
}
}

View File

@@ -0,0 +1,198 @@
//------------------------------------------------------------------------------
// <copyright file="AuthorizationRuleCollection.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.Security.Principal;
using System.Web.Util;
using System.ComponentModel;
using System.Security.Permissions;
[ConfigurationCollection(typeof(AuthorizationRule), AddItemName = "allow,deny",
CollectionType = ConfigurationElementCollectionType.BasicMapAlternate)]
public sealed class AuthorizationRuleCollection : ConfigurationElementCollection {
private static ConfigurationPropertyCollection _properties;
static AuthorizationRuleCollection() {
_properties = new ConfigurationPropertyCollection();
}
public AuthorizationRuleCollection() {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
// public properties
public AuthorizationRule this[int index] {
get {
return (AuthorizationRule)BaseGet(index);
}
set {
if (BaseGet(index) != null) {
BaseRemoveAt(index);
}
BaseAdd(index, value);
}
}
// Protected Overrides
protected override ConfigurationElement CreateNewElement() {
return new AuthorizationRule();
}
protected override ConfigurationElement CreateNewElement(string elementName) {
AuthorizationRule newElement = new AuthorizationRule();
switch (elementName.ToLower(CultureInfo.InvariantCulture)) {
case "allow":
newElement.Action = AuthorizationRuleAction.Allow;
break;
case "deny":
newElement.Action = AuthorizationRuleAction.Deny;
break;
}
return newElement;
}
protected override Object GetElementKey(ConfigurationElement element) {
AuthorizationRule rule = (AuthorizationRule)element;
return rule._ActionString;
}
protected override string ElementName {
get {
return String.Empty; //_LookUpInElement_
}
}
public override ConfigurationElementCollectionType CollectionType {
get {
return ConfigurationElementCollectionType.BasicMapAlternate;
}
}
// IsElement name allows collection with multiple element names to
// exist with the base class architecture. Given an element name
// it simply returns true if the name is legal for the default collection
// or false otherwise.
protected override bool IsElementName(string elementname) {
bool IsElement = false;
switch (elementname.ToLower(CultureInfo.InvariantCulture)) {
case "allow":
case "deny":
IsElement = true;
break;
}
return IsElement;
}
internal bool IsUserAllowed(IPrincipal user, String verb) {
if (user == null) {
return false;
}
if (!_fCheckForCommonCasesDone) {
DoCheckForCommonCases();
_fCheckForCommonCasesDone = true;
}
if (!user.Identity.IsAuthenticated && _iAnonymousAllowed != 0)
return (_iAnonymousAllowed > 0);
if (_iAllUsersAllowed != 0)
return (_iAllUsersAllowed > 0);
// Go down the list permissions and check each one
foreach (AuthorizationRule rule in this) {
int result = rule.IsUserAllowed(user, verb);
if (result != 0)
return (result > 0);
}
return false;
}
private void DoCheckForCommonCases()
{
bool fStillLookingForAnonymous = true;
bool fAnyAllowRulesFound = false;
bool fAnyDenyRulesFound = false;
foreach (AuthorizationRule rule in this)
{
if (rule.Everyone) // Found a rule for Every-user
{
if (!fAnyAllowRulesFound && rule.Action == AuthorizationRuleAction.Deny)
_iAllUsersAllowed = -1;
if (!fAnyDenyRulesFound && rule.Action == AuthorizationRuleAction.Allow)
_iAllUsersAllowed = 1;
return; // done!
}
if (fStillLookingForAnonymous && rule.IncludesAnonymous) // Found a rule for anonymous-user
{
if (!fAnyAllowRulesFound && rule.Action == AuthorizationRuleAction.Deny)
_iAnonymousAllowed = -1;
if (!fAnyDenyRulesFound && rule.Action == AuthorizationRuleAction.Allow)
_iAnonymousAllowed = 1;
fStillLookingForAnonymous = false;
}
if (!fAnyAllowRulesFound && rule.Action == AuthorizationRuleAction.Allow)
fAnyAllowRulesFound = true;
if (!fAnyDenyRulesFound && rule.Action == AuthorizationRuleAction.Deny)
fAnyDenyRulesFound = true;
if (!fStillLookingForAnonymous && fAnyAllowRulesFound && fAnyDenyRulesFound)
return;
}
}
// public methods
public void Add(AuthorizationRule rule) {
BaseAdd(-1, rule); // add to the end of the list and dont overwrite dups!
}
public void Clear() {
BaseClear();
}
public AuthorizationRule Get(int index) {
return (AuthorizationRule)BaseGet(index);
}
public void RemoveAt(int index) {
BaseRemoveAt(index);
}
public void Set(int index, AuthorizationRule rule) {
BaseAdd(index, rule);
}
public int IndexOf(AuthorizationRule rule) {
for (int x = 0; x < Count; x++) {
if (Object.Equals(Get(x), rule)) {
return x;
}
}
return -1;
}
public void Remove(AuthorizationRule rule) {
int index = IndexOf(rule);
if (index >= 0) {
BaseRemoveAt(index);
}
}
private int _iAllUsersAllowed = 0;
private int _iAnonymousAllowed = 0;
private bool _fCheckForCommonCasesDone = false;
}
}

View File

@@ -0,0 +1,93 @@
//------------------------------------------------------------------------------
// <copyright file="AuthorizationSection.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.Security.Principal;
using System.Web.Util;
using System.ComponentModel;
using System.Security.Permissions;
/*
<authorization>
<!--
allow/deny Attributes:
users="[*|?|name]"
* - All users
? - Anonymous users
[name] - Named user
roles="[name]"
-->
<allow users="*" />
<!-- <allow users="[comma separated list of users]"
roles="[comma separated list of roles]"
verbs="[comma separated list of verbs]" />
<deny users="[comma separated list of users]"
roles="[comma separated list of roles]"
verbs="[comma separated list of verbs]" />
-->
</authorization>
<authorization>
<allow users="*" />
</authorization>
*/
/// <devdoc>
/// <para> Adds Authorization specific information to this section.
/// </para>
/// </devdoc>
public sealed class AuthorizationSection : ConfigurationSection {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propRules =
new ConfigurationProperty(null, typeof(AuthorizationRuleCollection), null, ConfigurationPropertyOptions.IsDefaultCollection);
private bool _EveryoneAllowed = false;
internal bool EveryoneAllowed { get { return _EveryoneAllowed; } }
static AuthorizationSection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propRules);
}
public AuthorizationSection() {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("", IsDefaultCollection = true)]
public AuthorizationRuleCollection Rules {
get {
return (AuthorizationRuleCollection)base[_propRules];
}
}
protected override void PostDeserialize() {
if (Rules.Count > 0) {
_EveryoneAllowed = (Rules[0].Action == AuthorizationRuleAction.Allow && Rules[0].Everyone);
}
}
internal bool IsUserAllowed(IPrincipal user, String verb) {
return Rules.IsUserAllowed(user, verb);
}
} // class AuthorizationSection
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
e62efc0712445bc0fcd90c7697b4d7b19e178669

View File

@@ -0,0 +1,472 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50804.0
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Web;
using System.Web.Configuration;
using System.Reflection;
internal class BrowserCapabilitiesFactory35 : System.Web.Configuration.BrowserCapabilitiesFactoryBase {
protected override void PopulateBrowserElements(System.Collections.IDictionary dictionary) {
base.PopulateBrowserElements(dictionary);
dictionary["Default"] = new System.Web.UI.Triplet(null, string.Empty, 0);
dictionary["Mozilla"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["IE"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["IE5to9"] = new System.Web.UI.Triplet("Ie", string.Empty, 3);
dictionary["IE6to9"] = new System.Web.UI.Triplet("Ie5to9", string.Empty, 4);
dictionary["Treo600"] = new System.Web.UI.Triplet("Ie6to9", string.Empty, 5);
dictionary["IE5"] = new System.Web.UI.Triplet("Ie5to9", string.Empty, 4);
dictionary["IE50"] = new System.Web.UI.Triplet("Ie5", string.Empty, 5);
dictionary["IE55"] = new System.Web.UI.Triplet("Ie5", string.Empty, 5);
dictionary["IE5to9Mac"] = new System.Web.UI.Triplet("Ie5to9", string.Empty, 4);
dictionary["IE4"] = new System.Web.UI.Triplet("Ie", string.Empty, 3);
dictionary["IE3"] = new System.Web.UI.Triplet("Ie", string.Empty, 3);
dictionary["IE3win16"] = new System.Web.UI.Triplet("Ie3", string.Empty, 4);
dictionary["IE3win16a"] = new System.Web.UI.Triplet("Ie3win16", string.Empty, 5);
dictionary["IE3Mac"] = new System.Web.UI.Triplet("Ie3", string.Empty, 4);
dictionary["IE2"] = new System.Web.UI.Triplet("Ie", string.Empty, 3);
dictionary["WebTV"] = new System.Web.UI.Triplet("Ie2", string.Empty, 4);
dictionary["WebTV2"] = new System.Web.UI.Triplet("Webtv", string.Empty, 5);
dictionary["IE1minor5"] = new System.Web.UI.Triplet("Ie", string.Empty, 3);
dictionary["PowerBrowser"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["Gecko"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["MozillaRV"] = new System.Web.UI.Triplet("Gecko", string.Empty, 3);
dictionary["MozillaFirebird"] = new System.Web.UI.Triplet("Mozillarv", string.Empty, 4);
dictionary["MozillaFirefox"] = new System.Web.UI.Triplet("Mozillarv", string.Empty, 4);
dictionary["Safari"] = new System.Web.UI.Triplet("Gecko", string.Empty, 3);
dictionary["Safari60"] = new System.Web.UI.Triplet("Safari", string.Empty, 4);
dictionary["Safari85"] = new System.Web.UI.Triplet("Safari", string.Empty, 4);
dictionary["Safari1Plus"] = new System.Web.UI.Triplet("Safari", string.Empty, 4);
dictionary["Netscape5"] = new System.Web.UI.Triplet("Gecko", string.Empty, 3);
dictionary["Netscape6to9"] = new System.Web.UI.Triplet("Netscape5", string.Empty, 4);
dictionary["Netscape6to9Beta"] = new System.Web.UI.Triplet("Netscape6to9", string.Empty, 5);
dictionary["NetscapeBeta"] = new System.Web.UI.Triplet("Netscape5", string.Empty, 4);
dictionary["AvantGo"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["TMobileSidekick"] = new System.Web.UI.Triplet("Avantgo", string.Empty, 3);
dictionary["GoAmerica"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["GoAmericaWinCE"] = new System.Web.UI.Triplet("Goamerica", string.Empty, 3);
dictionary["GoAmericaPalm"] = new System.Web.UI.Triplet("Goamerica", string.Empty, 3);
dictionary["GoAmericaRIM"] = new System.Web.UI.Triplet("Goamerica", string.Empty, 3);
dictionary["GoAmericaRIM950"] = new System.Web.UI.Triplet("Goamericarim", string.Empty, 4);
dictionary["GoAmericaRIM850"] = new System.Web.UI.Triplet("Goamericarim", string.Empty, 4);
dictionary["GoAmericaRIM957"] = new System.Web.UI.Triplet("Goamericarim", string.Empty, 4);
dictionary["GoAmericaRIM957major6minor2"] = new System.Web.UI.Triplet("Goamericarim957", string.Empty, 5);
dictionary["GoAmericaRIM857"] = new System.Web.UI.Triplet("Goamericarim", string.Empty, 4);
dictionary["GoAmericaRIM857major6"] = new System.Web.UI.Triplet("Goamericarim857", string.Empty, 5);
dictionary["GoAmericaRIM857major6minor2to9"] = new System.Web.UI.Triplet("Goamericarim857major6", string.Empty, 6);
dictionary["GoAmerica7to9"] = new System.Web.UI.Triplet("Goamericarim857", string.Empty, 5);
dictionary["Netscape3"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["Netscape4"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["Casiopeia"] = new System.Web.UI.Triplet("Netscape4", string.Empty, 3);
dictionary["PalmWebPro"] = new System.Web.UI.Triplet("Netscape4", string.Empty, 3);
dictionary["PalmWebPro3"] = new System.Web.UI.Triplet("Palmwebpro", string.Empty, 4);
dictionary["NetFront"] = new System.Web.UI.Triplet("Netscape4", string.Empty, 3);
dictionary["SLB500"] = new System.Web.UI.Triplet("Netfront", string.Empty, 4);
dictionary["VRNA"] = new System.Web.UI.Triplet("Netfront", string.Empty, 4);
dictionary["Mypalm"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["MyPalm1"] = new System.Web.UI.Triplet("Mypalm", string.Empty, 3);
dictionary["Eudoraweb"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["PdQbrowser"] = new System.Web.UI.Triplet("Eudoraweb", string.Empty, 3);
dictionary["Eudoraweb21Plus"] = new System.Web.UI.Triplet("Eudoraweb", string.Empty, 3);
dictionary["WinCE"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["PIE"] = new System.Web.UI.Triplet("Wince", string.Empty, 3);
dictionary["PIEPPC"] = new System.Web.UI.Triplet("Pie", string.Empty, 4);
dictionary["PIEnoDeviceID"] = new System.Web.UI.Triplet("Pie", string.Empty, 4);
dictionary["PIESmartphone"] = new System.Web.UI.Triplet("Pie", string.Empty, 4);
dictionary["PIE4"] = new System.Web.UI.Triplet("Wince", string.Empty, 3);
dictionary["PIE4PPC"] = new System.Web.UI.Triplet("Pie4", string.Empty, 4);
dictionary["PIE5Plus"] = new System.Web.UI.Triplet("Wince", string.Empty, 3);
dictionary["sigmarion3"] = new System.Web.UI.Triplet("Pie5plus", string.Empty, 4);
dictionary["MSPIE"] = new System.Web.UI.Triplet("Mozilla", string.Empty, 2);
dictionary["MSPIE2"] = new System.Web.UI.Triplet("Mspie", string.Empty, 3);
dictionary["Docomo"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["DocomoSH251i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoSH251iS"] = new System.Web.UI.Triplet("Docomosh251i", string.Empty, 3);
dictionary["DocomoN251i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN251iS"] = new System.Web.UI.Triplet("Docomon251i", string.Empty, 3);
dictionary["DocomoP211i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF212i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoD501i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF501i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN501i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP501i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoD502i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF502i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN502i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP502i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoNm502i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoSo502i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF502it"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN502it"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoSo502iwm"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF504i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN504i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP504i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN821i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP821i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoD209i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoEr209i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF209i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoKo209i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN209i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP209i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP209is"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoR209i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoR691i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF503i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF503is"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoD503i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoD503is"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoD210i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF210i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN210i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN2001"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoD211i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN211i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP210i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoKo210i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP2101v"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP2102v"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF211i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoF671i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN503is"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN503i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoSo503i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP503is"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP503i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoSo210i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoSo503is"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoSh821i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN2002"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoSo505i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoP505i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoN505i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoD505i"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["DocomoISIM60"] = new System.Web.UI.Triplet("Docomo", string.Empty, 2);
dictionary["EricssonR380"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["Ericsson"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["EricssonR320"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonT20"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonT65"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonT68"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["Ericsson301A"] = new System.Web.UI.Triplet("Ericssont68", string.Empty, 3);
dictionary["EricssonT68R1A"] = new System.Web.UI.Triplet("Ericssont68", string.Empty, 3);
dictionary["EricssonT68R101"] = new System.Web.UI.Triplet("Ericssont68", string.Empty, 3);
dictionary["EricssonT68R201A"] = new System.Web.UI.Triplet("Ericssont68", string.Empty, 3);
dictionary["EricssonT300"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonP800"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonP800R101"] = new System.Web.UI.Triplet("Ericssonp800", string.Empty, 3);
dictionary["EricssonT61"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonT31"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonR520"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonA2628"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EricssonT39"] = new System.Web.UI.Triplet("Ericsson", string.Empty, 2);
dictionary["EzWAP"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["GenericDownlevel"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["Jataayu"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["JataayuPPC"] = new System.Web.UI.Triplet("Jataayu", string.Empty, 2);
dictionary["Jphone"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["JphoneMitsubishi"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphoneDenso"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphoneKenwood"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphoneNec"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphoneNecN51"] = new System.Web.UI.Triplet("Jphonenec", string.Empty, 3);
dictionary["JphonePanasonic"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphonePioneer"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphoneSanyo"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphoneSA51"] = new System.Web.UI.Triplet("Jphonesanyo", string.Empty, 3);
dictionary["JphoneSharp"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphoneSharpSh53"] = new System.Web.UI.Triplet("Jphonesharp", string.Empty, 3);
dictionary["JphoneSharpSh07"] = new System.Web.UI.Triplet("Jphonesharp", string.Empty, 3);
dictionary["JphoneSharpSh08"] = new System.Web.UI.Triplet("Jphonesharp", string.Empty, 3);
dictionary["JphoneSharpSh51"] = new System.Web.UI.Triplet("Jphonesharp", string.Empty, 3);
dictionary["JphoneSharpSh52"] = new System.Web.UI.Triplet("Jphonesharp", string.Empty, 3);
dictionary["JphoneToshiba"] = new System.Web.UI.Triplet("Jphone", string.Empty, 2);
dictionary["JphoneToshibaT06a"] = new System.Web.UI.Triplet("Jphonetoshiba", string.Empty, 3);
dictionary["JphoneToshibaT08"] = new System.Web.UI.Triplet("Jphonetoshiba", string.Empty, 3);
dictionary["JphoneToshibaT51"] = new System.Web.UI.Triplet("Jphonetoshiba", string.Empty, 3);
dictionary["Legend"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["LGG5200"] = new System.Web.UI.Triplet("Legend", string.Empty, 2);
dictionary["MME"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["MMEF20"] = new System.Web.UI.Triplet("Mme", string.Empty, 2);
dictionary["MMECellphone"] = new System.Web.UI.Triplet("Mmef20", string.Empty, 3);
dictionary["MMEBenefonQ"] = new System.Web.UI.Triplet("Mmecellphone", string.Empty, 4);
dictionary["MMESonyCMDZ5"] = new System.Web.UI.Triplet("Mmecellphone", string.Empty, 4);
dictionary["MMESonyCMDZ5Pj020e"] = new System.Web.UI.Triplet("Mmesonycmdz5", string.Empty, 5);
dictionary["MMESonyCMDJ5"] = new System.Web.UI.Triplet("Mmecellphone", string.Empty, 4);
dictionary["MMESonyCMDJ7"] = new System.Web.UI.Triplet("Mmecellphone", string.Empty, 4);
dictionary["MMEGenericSmall"] = new System.Web.UI.Triplet("Mmecellphone", string.Empty, 4);
dictionary["MMEGenericLarge"] = new System.Web.UI.Triplet("Mmecellphone", string.Empty, 4);
dictionary["MMEGenericFlip"] = new System.Web.UI.Triplet("Mmecellphone", string.Empty, 4);
dictionary["MMEGeneric3D"] = new System.Web.UI.Triplet("Mmecellphone", string.Empty, 4);
dictionary["MMEMobileExplorer"] = new System.Web.UI.Triplet("Mme", string.Empty, 2);
dictionary["Nokia"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["NokiaBlueprint"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["NokiaWapSimulator"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["NokiaMobileBrowser"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia7110"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia6220"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia6250"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia6310"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia6510"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia8310"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia9110i"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia9110"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia3330"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia9210"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia9210HTML"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia3590"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia3590V1"] = new System.Web.UI.Triplet("Nokia3590", string.Empty, 3);
dictionary["Nokia3595"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia3560"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia3650"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia3650P12Plus"] = new System.Web.UI.Triplet("Nokia3650", string.Empty, 3);
dictionary["Nokia5100"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia6200"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia6590"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia6800"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["Nokia7650"] = new System.Web.UI.Triplet("Nokia", string.Empty, 2);
dictionary["NokiaMobileBrowserRainbow"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["NokiaEpoc32wtl"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["NokiaEpoc32wtl20"] = new System.Web.UI.Triplet("Nokiaepoc32wtl", string.Empty, 2);
dictionary["Up"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["AuMic"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["AuMicV2"] = new System.Web.UI.Triplet("Aumic", string.Empty, 3);
dictionary["a500"] = new System.Web.UI.Triplet("Aumic", string.Empty, 3);
dictionary["n400"] = new System.Web.UI.Triplet("Aumic", string.Empty, 3);
dictionary["AlcatelBe4"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["AlcatelBe5"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["AlcatelBe5v2"] = new System.Web.UI.Triplet("Alcatelbe5", string.Empty, 3);
dictionary["AlcatelBe3"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["AlcatelBf3"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["AlcatelBf4"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotCb"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotF5"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotD8"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotCf"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotF6"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotBc"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotDc"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotPanC"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotC4"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mcca"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mot2000"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotP2kC"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotAf"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotAf418"] = new System.Web.UI.Triplet("Motaf", string.Empty, 3);
dictionary["MotC2"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Xenium"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sagem959"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SghA300"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SghN100"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C304sa"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sy11"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["St12"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sy14"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SieS40"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SieSl45"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SieS35"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SieMe45"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SieS45"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Gm832"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Gm910i"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mot32"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mot28"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["D2"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["PPat"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Alaz"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Cdm9100"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Cdm135"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Cdm9000"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C303ca"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C311ca"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C202de"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C409ca"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C402de"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ds15"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tp2200"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tp120"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ds10"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["R280"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C201h"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["S71"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C302h"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C309h"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C407h"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["C451h"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["R201"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["P21"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Kyocera702g"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Kyocera703g"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["KyoceraC307k"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tk01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tk02"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tk03"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tk04"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tk05"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["D303k"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["D304k"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Qcp2035"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Qcp3035"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["D512"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Dm110"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tm510"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Lg13"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["P100"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Lgc875f"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Lgp680f"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Lgp7800f"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Lgc840f"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Lgi2100"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Lgp7300f"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sd500"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tp1100"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tp3000"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["T250"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mo01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mo02"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mc01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mccc"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mcc9"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Nk00"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mai12"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ma112"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ma13"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mac1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mat1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sc01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sc03"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sc02"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sc04"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sg08"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sc13"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sc11"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sec01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sc10"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sy12"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["St11"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sy13"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Syc1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sy01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Syt1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sty2"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sy02"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sy03"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Si01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sni1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sn11"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sn12"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sn134"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sn156"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Snc1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tsc1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tsi1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ts11"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ts12"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ts13"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tst1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tst2"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Tst3"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ig01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ig02"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Ig03"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Qc31"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Qc12"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Qc32"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sp01"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sh"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Upg1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Opwv1"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Alav"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Im1k"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Nt95"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mot2001"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Motv200"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mot72"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Mot76"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Scp6000"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotD5"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotF0"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SghA400"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sec03"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SieC3i"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sn17"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Scp4700"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sec02"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Sy15"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Db520"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["L430V03J02"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["OPWVSDK"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["OPWVSDK6"] = new System.Web.UI.Triplet("Opwvsdk", string.Empty, 3);
dictionary["OPWVSDK6Plus"] = new System.Web.UI.Triplet("Opwvsdk", string.Empty, 3);
dictionary["KDDICA21"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["KDDITS21"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["KDDISA21"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["KM100"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["LGELX5350"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["HitachiP300"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SIES46"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotorolaV60G"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotorolaV708"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotorolaV708A"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["MotorolaE360"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SonyericssonA1101S"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["PhilipsFisio820"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["CasioA5302"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["TCLL668"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["KDDITS24"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SIES55"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["SHARPGx10"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["BenQAthena"] = new System.Web.UI.Triplet("Up", string.Empty, 2);
dictionary["Opera"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["Opera1to3beta"] = new System.Web.UI.Triplet("Opera", string.Empty, 2);
dictionary["Opera4"] = new System.Web.UI.Triplet("Opera", string.Empty, 2);
dictionary["Opera4beta"] = new System.Web.UI.Triplet("Opera4", string.Empty, 3);
dictionary["Opera5to9"] = new System.Web.UI.Triplet("Opera", string.Empty, 2);
dictionary["Opera6to9"] = new System.Web.UI.Triplet("Opera5to9", string.Empty, 3);
dictionary["Opera7to9"] = new System.Web.UI.Triplet("Opera6to9", string.Empty, 4);
dictionary["Opera8to9"] = new System.Web.UI.Triplet("Opera7to9", string.Empty, 5);
dictionary["OperaPsion"] = new System.Web.UI.Triplet("Opera", string.Empty, 2);
dictionary["Palmscape"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["PalmscapeVersion"] = new System.Web.UI.Triplet("Palmscape", string.Empty, 2);
dictionary["AusPalm"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["SharpPda"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["ZaurusMiE1"] = new System.Web.UI.Triplet("Sharppda", string.Empty, 2);
dictionary["ZaurusMiE21"] = new System.Web.UI.Triplet("Sharppda", string.Empty, 2);
dictionary["ZaurusMiE25"] = new System.Web.UI.Triplet("Sharppda", string.Empty, 2);
dictionary["Panasonic"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["PanasonicGAD95"] = new System.Web.UI.Triplet("Panasonic", string.Empty, 2);
dictionary["PanasonicGAD87"] = new System.Web.UI.Triplet("Panasonic", string.Empty, 2);
dictionary["PanasonicGAD87A39"] = new System.Web.UI.Triplet("Panasonicgad87", string.Empty, 3);
dictionary["PanasonicGAD87A38"] = new System.Web.UI.Triplet("Panasonicgad87", string.Empty, 3);
dictionary["MSPIE06"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["SKTDevices"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["SKTDevicesHyundai"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["PSE200"] = new System.Web.UI.Triplet("Sktdeviceshyundai", string.Empty, 3);
dictionary["SKTDevicesHanhwa"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["SKTDevicesJTEL"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["JTEL01"] = new System.Web.UI.Triplet("Sktdevicesjtel", string.Empty, 3);
dictionary["JTELNate"] = new System.Web.UI.Triplet("Jtel01", string.Empty, 4);
dictionary["SKTDevicesLG"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["SKTDevicesMotorola"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["SKTDevicesV730"] = new System.Web.UI.Triplet("Sktdevicesmotorola", string.Empty, 3);
dictionary["SKTDevicesNokia"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["SKTDevicesSKTT"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["SKTDevicesSamSung"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["SCHE150"] = new System.Web.UI.Triplet("Sktdevicessamsung", string.Empty, 3);
dictionary["SKTDevicesEricsson"] = new System.Web.UI.Triplet("Sktdevices", string.Empty, 2);
dictionary["WinWap"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["Xiino"] = new System.Web.UI.Triplet("Default", string.Empty, 1);
dictionary["XiinoV2"] = new System.Web.UI.Triplet("Xiino", string.Empty, 2);
}
}
}

View File

@@ -0,0 +1,172 @@
//------------------------------------------------------------------------------
// <copyright file="BrowserCapabilitiesFactoryBase.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
/*
* Base class for browser capabilities object: just a read-only dictionary
* holder that supports Init()
*
*
*/
using System.Web.UI;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Globalization;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.Util;
namespace System.Web.Configuration {
public class BrowserCapabilitiesFactoryBase {
private IDictionary _matchedHeaders;
private IDictionary _browserElements;
private object _lock = new object();
public BrowserCapabilitiesFactoryBase() {
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
protected IDictionary BrowserElements {
get {
if (_browserElements == null)
lock (_lock) {
if (_browserElements == null) {
Hashtable browserElements = Hashtable.Synchronized(new Hashtable(StringComparer.OrdinalIgnoreCase));
PopulateBrowserElements(browserElements);
_browserElements = browserElements;
}
}
return _browserElements;
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
protected virtual void PopulateBrowserElements(IDictionary dictionary) {
}
internal IDictionary InternalGetMatchedHeaders() {
return MatchedHeaders;
}
internal IDictionary InternalGetBrowserElements() {
return BrowserElements;
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
protected IDictionary MatchedHeaders {
get {
if (_matchedHeaders == null)
lock (_lock) {
if (_matchedHeaders == null) {
Hashtable matchedHeaders = Hashtable.Synchronized(new Hashtable(24, StringComparer.OrdinalIgnoreCase));
PopulateMatchedHeaders(matchedHeaders);
_matchedHeaders = matchedHeaders;
}
}
return _matchedHeaders;
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
protected virtual void PopulateMatchedHeaders(IDictionary dictionary) {
}
internal int CompareFilters(string filter1, string filter2) {
bool isFilter1DefaultFilter = String.IsNullOrEmpty(filter1);
bool isFilter2DefaultFilter = String.IsNullOrEmpty(filter2);
IDictionary browsers = BrowserElements;
bool filter1Exists = (browsers.Contains(filter1)) || isFilter1DefaultFilter;
bool filter2Exists = (browsers.Contains(filter2)) || isFilter2DefaultFilter;
if (!filter1Exists) {
if (!filter2Exists) {
return 0;
}
else {
return -1;
}
}
else {
if (!filter2Exists) {
return 1;
}
}
if (isFilter1DefaultFilter && !isFilter2DefaultFilter) {
return 1;
}
if (isFilter2DefaultFilter && !isFilter1DefaultFilter) {
return -1;
}
if (isFilter1DefaultFilter && isFilter2DefaultFilter) {
return 0;
}
int filter1Depth = (int)((Triplet)BrowserElements[filter1]).Third;
int filter2Depth = (int)((Triplet)BrowserElements[filter2]).Third;
return filter2Depth - filter1Depth;
}
public virtual void ConfigureBrowserCapabilities(NameValueCollection headers, HttpBrowserCapabilities browserCaps) {
}
// CodeGenerator will override this function to declare custom browser capabilities
public virtual void ConfigureCustomCapabilities(NameValueCollection headers, HttpBrowserCapabilities browserCaps) {
}
internal static string GetBrowserCapKey(IDictionary headers, HttpRequest request) {
StringBuilder sb = new StringBuilder();
foreach(String key in headers.Keys) {
if (key.Length == 0) {
sb.Append(HttpCapabilitiesDefaultProvider.GetUserAgent(request));
}
else {
sb.Append(request.Headers[key]);
}
sb.Append("\n");
}
return sb.ToString();
}
internal HttpBrowserCapabilities GetHttpBrowserCapabilities(HttpRequest request) {
if (request == null)
throw new ArgumentNullException("request");
NameValueCollection headers = request.Headers;
HttpBrowserCapabilities browserCaps = new HttpBrowserCapabilities();
Hashtable values = new Hashtable(180, StringComparer.OrdinalIgnoreCase);
values[String.Empty] = HttpCapabilitiesDefaultProvider.GetUserAgent(request);
browserCaps.Capabilities = values;
ConfigureBrowserCapabilities(headers, browserCaps);
ConfigureCustomCapabilities(headers, browserCaps);
return browserCaps;
}
protected bool IsBrowserUnknown(HttpCapabilitiesBase browserCaps) {
// We want to ignore the "Default" node, which will also be matched.
if(browserCaps.Browsers == null || browserCaps.Browsers.Count <= 1) {
return true;
}
return false;
}
}
}

View File

@@ -0,0 +1,27 @@
//------------------------------------------------------------------------------
// <copyright file="BrowserCapsElementType.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Configuration;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.Compilation;
using System.Web.UI;
using System.Web.Util;
using System.Xml;
using System.Globalization;
internal enum BrowserCapsElementType {
Capabilities,
Capture,
ControlAdapters,
Identification,
SampleHeaders
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,16 @@
//------------------------------------------------------------------------------
// <copyright file="BrowserDefinitionCollection.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Collections;
internal class BrowserDefinitionCollection : ArrayList {
internal BrowserDefinitionCollection() {
}
}
}

View File

@@ -0,0 +1,41 @@
//------------------------------------------------------------------------------
// <copyright file="BrowserTree.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Collections;
using System.Collections.Specialized;
//
//
// <browsers>
// <browser id="XXX" parentID="YYY">
// <identification>
// <userAgent match="xxx" />
// <header name="HTTP_X_JPHONE_DISPLAY" match="xxx" />
// <capability name="majorVersion" match="^6$" />
// </identification>
// <capture>
// <header name="HTTP_X_UP_DEVCAP_NUMSOFTKEYS" match="?'softkeys'\d+)" />
// </capture>
// <capabilities>
// <mobileDeviceManufacturer>OpenWave</mobileDeviceManufacturer>
// <numberOfSoftKeys>$(softkeys)</numberOfSoftKeys>
// </capabilities>
// <controlAdapters>
// <adapter controlType="System.Web.UI.WebControls.Image"
// adapterType="System.Web.UI.WebControls.Adapters.Html32ImageAdapter" />
// </controlAdapters>
// </browser>
// </browsers>
//
internal class BrowserTree : OrderedDictionary {
internal BrowserTree() : base(StringComparer.OrdinalIgnoreCase) {
}
}
}

Some files were not shown because too many files have changed in this diff Show More