Пример #1
0
		static void ReadAllowFromElement (XmlReader reader, AccessPolicy policy)
		{
			if (IsNonEmptyElement (reader)) {
				reader.Skip ();
				return;
			}

			bool valid = true;
			string headers = null;
			string methods = null;		// new in SL3
			if (reader.HasAttributes) {
				int n = reader.AttributeCount;
				headers = reader.GetAttribute ("http-request-headers");
				if (headers != null)
					n--;
				methods = reader.GetAttribute ("http-methods");
				if (methods != null)
					n--;
				valid = (n == 0);
			}

			var v = new AllowFrom ();
			v.HttpRequestHeaders.SetHeaders (headers);
			v.AllowAnyMethod = (methods == "*"); // only legal value defined, otherwise restricted to GET and POST
			reader.ReadStartElement ("allow-from", String.Empty);
			for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
				if (IsNonElement (reader) || !String.IsNullOrEmpty (reader.NamespaceURI)) {
					reader.Skip ();
					continue;
				}
				switch (reader.LocalName) {
				case "domain":
					var d = reader.GetAttribute ("uri");
					if (d == "*")
						v.AllowAnyDomain = true;
					else
						v.Domains.Add (d);
					reader.Skip ();
					break;
				default:
					valid = false;
					reader.Skip ();
					continue;
				}
			}
			if (valid)
				policy.AllowedServices.Add (v);
			reader.ReadEndElement ();
		}
Пример #2
0
        static void ReadAllowFromElement(XmlReader reader, AccessPolicy policy)
        {
            if (IsNonEmptyElement(reader))
            {
                reader.Skip();
                return;
            }

            bool   valid   = true;
            string headers = null;
            string methods = null;                      // new in SL3

            if (reader.HasAttributes)
            {
                int n = reader.AttributeCount;
                headers = reader.GetAttribute("http-request-headers");
                if (headers != null)
                {
                    n--;
                }
                methods = reader.GetAttribute("http-methods");
                if (methods != null)
                {
                    n--;
                }
                valid = (n == 0);
            }

            var v = new AllowFrom();

            v.HttpRequestHeaders.SetHeaders(headers);
            v.AllowAnyMethod = (methods == "*");             // only legal value defined, otherwise restricted to GET and POST
            reader.ReadStartElement("allow-from", String.Empty);
            for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent())
            {
                if (IsNonElement(reader) || !String.IsNullOrEmpty(reader.NamespaceURI))
                {
                    reader.Skip();
                    continue;
                }
                switch (reader.LocalName)
                {
                case "domain":
                    var d = reader.GetAttribute("uri");
                    if (d == "*")
                    {
                        v.AllowAnyDomain = true;
                    }
                    else
                    {
                        v.Domains.Add(d);
                    }
                    reader.Skip();
                    break;

                default:
                    valid = false;
                    reader.Skip();
                    continue;
                }
            }
            if (valid)
            {
                policy.AllowedServices.Add(v);
            }
            reader.ReadEndElement();
        }