We need you! We're working hard on the next version of Developer Fusion -
Let us know what you think we should be up to!
- namespace System.Security.Policy
- {
- using System.Security.Util;
- using System.Globalization;
- using SiteIdentityPermission = System.Security.Permissions.SiteIdentityPermission;
-
- [Serializable()]
- [System.Runtime.InteropServices.ComVisible(true)]
- public sealed class Site : IIdentityPermissionFactory, IBuiltInEvidence
- {
- private SiteString m_name;
-
- internal Site()
- {
- m_name = null;
- }
-
- public Site(string name)
- {
- if (name == null)
- throw new ArgumentNullException("name");
-
- m_name = new SiteString(name);
- }
-
- internal Site(byte[] id, string name)
- {
- m_name = ParseSiteFromUrl(name);
- }
-
- public static Site CreateFromUrl(string url)
- {
- Site site = new Site();
-
- site.m_name = ParseSiteFromUrl(url);
-
- return site;
- }
-
- private static SiteString ParseSiteFromUrl(string name)
- {
- URLString urlString = new URLString(name);
-
- if (String.Compare(urlString.Scheme, "file", StringComparison.OrdinalIgnoreCase) == 0)
- throw new ArgumentException(Environment.GetResourceString("Argument_InvalidSite"));
-
- return new SiteString(new URLString(name).Host);
- }
-
- public string Name {
- get {
- if (m_name != null)
- return m_name.ToString();
- else
- return null;
- }
- }
-
- internal SiteString GetSiteString()
- {
- return m_name;
- }
-
- public IPermission CreateIdentityPermission(Evidence evidence)
- {
- return new SiteIdentityPermission(Name);
- }
-
- public override bool Equals(object o)
- {
- if (o is Site) {
- Site s = (Site)o;
- if (Name == null)
- return (s.Name == null);
-
- return String.Compare(Name, s.Name, StringComparison.OrdinalIgnoreCase) == 0;
- }
-
- return false;
- }
-
- public override int GetHashCode()
- {
- string name = this.Name;
-
- if (name == null)
- return 0;
- else
- return name.GetHashCode();
- }
-
- public object Copy()
- {
- return new Site(this.Name);
- }
-
- internal SecurityElement ToXml()
- {
- SecurityElement elem = new SecurityElement("System.Security.Policy.Site");
-
-
- BCLDebug.Assert(this.GetType().FullName.Equals("System.Security.Policy.Site"), "Class name changed!");
-
- elem.AddAttribute("version", "1");
-
- if (m_name != null)
- elem.AddChild(new SecurityElement("Name", m_name.ToString()));
-
- return elem;
- }
-
- /// <internalonly/>
- int IBuiltInEvidence.OutputToBuffer(char[] buffer, int position, bool verbose)
- {
- buffer[position++] = BuiltInEvidenceHelper.idSite;
- string name = this.Name;
- int length = name.Length;
-
- if (verbose) {
- BuiltInEvidenceHelper.CopyIntToCharArray(length, buffer, position);
- position += 2;
- }
- name.CopyTo(0, buffer, position, length);
- return length + position;
- }
-
- /// <internalonly/>
- int IBuiltInEvidence.GetRequiredSize(bool verbose)
- {
- if (verbose)
- return this.Name.Length + 3;
- else
- return this.Name.Length + 1;
- }
-
- /// <internalonly/>
- int IBuiltInEvidence.InitFromBuffer(char[] buffer, int position)
- {
- int length = BuiltInEvidenceHelper.GetIntFromCharArray(buffer, position);
- position += 2;
-
- m_name = new SiteString(new string(buffer, position, length));
-
- return position + length;
- }
-
- public override string ToString()
- {
- return ToXml().ToString();
- }
-
-
-
- internal object Normalize()
- {
- return m_name.ToString().ToUpper(CultureInfo.InvariantCulture);
- }
- }
- }