//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.Configuration { using System; using System.Xml; using System.Configuration; using System.Collections.Specialized; using System.Collections; using System.IO; using System.Text; using System.ComponentModel; using System.Security.Permissions; // class SecurityPolicySection public sealed class TrustLevel : ConfigurationElement { private static ConfigurationPropertyCollection _properties; private static readonly ConfigurationProperty _propName = new ConfigurationProperty("name", typeof(string), "Full", null, StdValidatorsAndConverters.NonEmptyStringValidator, ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey); private static readonly ConfigurationProperty _propPolicyFile = new ConfigurationProperty("policyFile", typeof(string), "internal", ConfigurationPropertyOptions.IsRequired); private string _PolicyFileExpanded = null; private string _LegacyPolicyFileExpanded = null; static TrustLevel() { // Property initialization _properties = new ConfigurationPropertyCollection(); _properties.Add(_propName); _properties.Add(_propPolicyFile); } internal TrustLevel() { } public TrustLevel(String name, String policyFile) { Name = name; PolicyFile = policyFile; } protected override ConfigurationPropertyCollection Properties { get { return _properties; } } [ConfigurationProperty("name", IsRequired = true, DefaultValue = "Full", IsKey = true)] [StringValidator(MinLength = 1)] public string Name { get { return (string)base[_propName]; } set { base[_propName] = value; } } [ConfigurationProperty("policyFile", IsRequired = true, DefaultValue = "internal")] public string PolicyFile { get { return (string)base[_propPolicyFile]; } set { base[_propPolicyFile] = value; } } internal string PolicyFileExpanded { get { if (_PolicyFileExpanded == null) { // string filename = ElementInformation.Properties["policyFile"].Source; String strDir = filename.Substring(0, filename.LastIndexOf('\\') + 1); bool fAppend = true; // Append filename to directory else return just filename if (PolicyFile.Length > 1) { char c1 = PolicyFile[1]; char c0 = PolicyFile[0]; if (c1 == ':') { // Absolute file path fAppend = false; } else if (c0 == '\\' && c1 == '\\') { // UNC file path fAppend = false; } } if (fAppend) { _PolicyFileExpanded = strDir + PolicyFile; } else { _PolicyFileExpanded = PolicyFile; } } return _PolicyFileExpanded; } } internal string LegacyPolicyFileExpanded { get { if (_LegacyPolicyFileExpanded == null) { // string filename = ElementInformation.Properties["policyFile"].Source; String strDir = filename.Substring(0, filename.LastIndexOf('\\') + 1); bool fAppend = true; // Append filename to directory else return just filename if (PolicyFile.Length > 1) { char c1 = PolicyFile[1]; char c0 = PolicyFile[0]; if (c1 == ':') { // Absolute file path fAppend = false; } else if (c0 == '\\' && c1 == '\\') { // UNC file path fAppend = false; } } if (fAppend) { _LegacyPolicyFileExpanded = strDir + "legacy." + PolicyFile; } else { _LegacyPolicyFileExpanded = PolicyFile; } } return _LegacyPolicyFileExpanded; } } } // class TrustLevel }