You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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
|
||||
}
|
||||
}
|
@@ -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
@@ -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,
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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
@@ -0,0 +1 @@
|
||||
e62efc0712445bc0fcd90c7697b4d7b19e178669
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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
@@ -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() {
|
||||
}
|
||||
}
|
||||
}
|
@@ -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
Reference in New Issue
Block a user