Skip to content
This repository
Browse code

Added handling of clientaccesspolicy.xml

Self-host now serves clientaccesspolicy.xml when asked by Silverlight.
  • Loading branch information...
commit eaec182fee09cbd038dd68081b0e1c500ac3106c 1 parent 6771b65
Michael Teper authored July 18, 2012
84  SignalR.Hosting.Self/Properties/Resources.Designer.cs
... ...
@@ -0,0 +1,84 @@
  1
+//------------------------------------------------------------------------------
  2
+// <auto-generated>
  3
+//     This code was generated by a tool.
  4
+//     Runtime Version:4.0.30319.17626
  5
+//
  6
+//     Changes to this file may cause incorrect behavior and will be lost if
  7
+//     the code is regenerated.
  8
+// </auto-generated>
  9
+//------------------------------------------------------------------------------
  10
+
  11
+namespace SignalR.Hosting.Self.Properties {
  12
+    using System;
  13
+    
  14
+    
  15
+    /// <summary>
  16
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
  17
+    /// </summary>
  18
+    // This class was auto-generated by the StronglyTypedResourceBuilder
  19
+    // class via a tool like ResGen or Visual Studio.
  20
+    // To add or remove a member, edit your .ResX file then rerun ResGen
  21
+    // with the /str option, or rebuild your VS project.
  22
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
  23
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  24
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
  25
+    internal class Resources {
  26
+        
  27
+        private static global::System.Resources.ResourceManager resourceMan;
  28
+        
  29
+        private static global::System.Globalization.CultureInfo resourceCulture;
  30
+        
  31
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
  32
+        internal Resources() {
  33
+        }
  34
+        
  35
+        /// <summary>
  36
+        ///   Returns the cached ResourceManager instance used by this class.
  37
+        /// </summary>
  38
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
  39
+        internal static global::System.Resources.ResourceManager ResourceManager {
  40
+            get {
  41
+                if (object.ReferenceEquals(resourceMan, null)) {
  42
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SignalR.Hosting.Self.Properties.Resources", typeof(Resources).Assembly);
  43
+                    resourceMan = temp;
  44
+                }
  45
+                return resourceMan;
  46
+            }
  47
+        }
  48
+        
  49
+        /// <summary>
  50
+        ///   Overrides the current thread's CurrentUICulture property for all
  51
+        ///   resource lookups using this strongly typed resource class.
  52
+        /// </summary>
  53
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
  54
+        internal static global::System.Globalization.CultureInfo Culture {
  55
+            get {
  56
+                return resourceCulture;
  57
+            }
  58
+            set {
  59
+                resourceCulture = value;
  60
+            }
  61
+        }
  62
+        
  63
+        /// <summary>
  64
+        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
  65
+        ///&lt;access-policy&gt;
  66
+        ///  &lt;cross-domain-access&gt;
  67
+        ///    &lt;policy&gt;
  68
+        ///      &lt;allow-from http-request-headers=&quot;SOAPAction&quot;&gt;
  69
+        ///        &lt;domain uri=&quot;*&quot;/&gt;
  70
+        ///      &lt;/allow-from&gt;
  71
+        ///      &lt;grant-to&gt;
  72
+        ///        &lt;resource path=&quot;/&quot; include-subpaths=&quot;true&quot;/&gt;
  73
+        ///      &lt;/grant-to&gt;
  74
+        ///    &lt;/policy&gt;
  75
+        ///  &lt;/cross-domain-access&gt;
  76
+        ///&lt;/access-policy&gt;.
  77
+        /// </summary>
  78
+        internal static string ClientAccessPolicyXml {
  79
+            get {
  80
+                return ResourceManager.GetString("ClientAccessPolicyXml", resourceCulture);
  81
+            }
  82
+        }
  83
+    }
  84
+}
135  SignalR.Hosting.Self/Properties/Resources.resx
... ...
@@ -0,0 +1,135 @@
  1
+<?xml version="1.0" encoding="utf-8"?>
  2
+<root>
  3
+  <!-- 
  4
+    Microsoft ResX Schema 
  5
+    
  6
+    Version 2.0
  7
+    
  8
+    The primary goals of this format is to allow a simple XML format 
  9
+    that is mostly human readable. The generation and parsing of the 
  10
+    various data types are done through the TypeConverter classes 
  11
+    associated with the data types.
  12
+    
  13
+    Example:
  14
+    
  15
+    ... ado.net/XML headers & schema ...
  16
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
  17
+    <resheader name="version">2.0</resheader>
  18
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
  19
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
  20
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
  21
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
  22
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
  23
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
  24
+    </data>
  25
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
  26
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
  27
+        <comment>This is a comment</comment>
  28
+    </data>
  29
+                
  30
+    There are any number of "resheader" rows that contain simple 
  31
+    name/value pairs.
  32
+    
  33
+    Each data row contains a name, and value. The row also contains a 
  34
+    type or mimetype. Type corresponds to a .NET class that support 
  35
+    text/value conversion through the TypeConverter architecture. 
  36
+    Classes that don't support this are serialized and stored with the 
  37
+    mimetype set.
  38
+    
  39
+    The mimetype is used for serialized objects, and tells the 
  40
+    ResXResourceReader how to depersist the object. This is currently not 
  41
+    extensible. For a given mimetype the value must be set accordingly:
  42
+    
  43
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
  44
+    that the ResXResourceWriter will generate, however the reader can 
  45
+    read any of the formats listed below.
  46
+    
  47
+    mimetype: application/x-microsoft.net.object.binary.base64
  48
+    value   : The object must be serialized with 
  49
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
  50
+            : and then encoded with base64 encoding.
  51
+    
  52
+    mimetype: application/x-microsoft.net.object.soap.base64
  53
+    value   : The object must be serialized with 
  54
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
  55
+            : and then encoded with base64 encoding.
  56
+
  57
+    mimetype: application/x-microsoft.net.object.bytearray.base64
  58
+    value   : The object must be serialized into a byte array 
  59
+            : using a System.ComponentModel.TypeConverter
  60
+            : and then encoded with base64 encoding.
  61
+    -->
  62
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  63
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
  64
+    <xsd:element name="root" msdata:IsDataSet="true">
  65
+      <xsd:complexType>
  66
+        <xsd:choice maxOccurs="unbounded">
  67
+          <xsd:element name="metadata">
  68
+            <xsd:complexType>
  69
+              <xsd:sequence>
  70
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
  71
+              </xsd:sequence>
  72
+              <xsd:attribute name="name" use="required" type="xsd:string" />
  73
+              <xsd:attribute name="type" type="xsd:string" />
  74
+              <xsd:attribute name="mimetype" type="xsd:string" />
  75
+              <xsd:attribute ref="xml:space" />
  76
+            </xsd:complexType>
  77
+          </xsd:element>
  78
+          <xsd:element name="assembly">
  79
+            <xsd:complexType>
  80
+              <xsd:attribute name="alias" type="xsd:string" />
  81
+              <xsd:attribute name="name" type="xsd:string" />
  82
+            </xsd:complexType>
  83
+          </xsd:element>
  84
+          <xsd:element name="data">
  85
+            <xsd:complexType>
  86
+              <xsd:sequence>
  87
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
  88
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
  89
+              </xsd:sequence>
  90
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
  91
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
  92
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
  93
+              <xsd:attribute ref="xml:space" />
  94
+            </xsd:complexType>
  95
+          </xsd:element>
  96
+          <xsd:element name="resheader">
  97
+            <xsd:complexType>
  98
+              <xsd:sequence>
  99
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
  100
+              </xsd:sequence>
  101
+              <xsd:attribute name="name" type="xsd:string" use="required" />
  102
+            </xsd:complexType>
  103
+          </xsd:element>
  104
+        </xsd:choice>
  105
+      </xsd:complexType>
  106
+    </xsd:element>
  107
+  </xsd:schema>
  108
+  <resheader name="resmimetype">
  109
+    <value>text/microsoft-resx</value>
  110
+  </resheader>
  111
+  <resheader name="version">
  112
+    <value>2.0</value>
  113
+  </resheader>
  114
+  <resheader name="reader">
  115
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  116
+  </resheader>
  117
+  <resheader name="writer">
  118
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  119
+  </resheader>
  120
+  <data name="ClientAccessPolicyXml" xml:space="preserve">
  121
+    <value>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  122
+&lt;access-policy&gt;
  123
+  &lt;cross-domain-access&gt;
  124
+    &lt;policy&gt;
  125
+      &lt;allow-from http-request-headers="SOAPAction"&gt;
  126
+        &lt;domain uri="*"/&gt;
  127
+      &lt;/allow-from&gt;
  128
+      &lt;grant-to&gt;
  129
+        &lt;resource path="/" include-subpaths="true"/&gt;
  130
+      &lt;/grant-to&gt;
  131
+    &lt;/policy&gt;
  132
+  &lt;/cross-domain-access&gt;
  133
+&lt;/access-policy&gt;</value>
  134
+  </data>
  135
+</root>
8  SignalR.Hosting.Self/Server.cs
@@ -8,6 +8,7 @@
8 8
 using System.Threading.Tasks;
9 9
 using SignalR.Hosting.Common;
10 10
 using SignalR.Hosting.Self.Infrastructure;
  11
+using SignalR.Hosting.Self.Properties;
11 12
 
12 13
 namespace SignalR.Hosting.Self
13 14
 {
@@ -184,7 +185,12 @@ private Task ProcessRequestAsync(HttpListenerContext context)
184 185
                     return connection.ProcessRequestAsync(hostContext);
185 186
                 }
186 187
 
187  
-                return context.Response.NotFound();
  188
+				if (path.Equals("/clientaccesspolicy.xml", StringComparison.InvariantCultureIgnoreCase))
  189
+				{
  190
+					return context.Response.WriteAsync(Resources.ClientAccessPolicyXml);
  191
+				}
  192
+
  193
+	            return context.Response.NotFound();
188 194
             }
189 195
             catch (Exception ex)
190 196
             {
11  SignalR.Hosting.Self/SignalR.Hosting.Self.csproj
@@ -51,6 +51,11 @@
51 51
     <Compile Include="Infrastructure\NativeMethods.cs" />
52 52
     <Compile Include="Properties\AssemblyInfo.cs" />
53 53
     <Compile Include="Infrastructure\ResponseExtensions.cs" />
  54
+    <Compile Include="Properties\Resources.Designer.cs">
  55
+      <AutoGen>True</AutoGen>
  56
+      <DesignTime>True</DesignTime>
  57
+      <DependentUpon>Resources.resx</DependentUpon>
  58
+    </Compile>
54 59
     <Compile Include="Server.cs" />
55 60
   </ItemGroup>
56 61
   <ItemGroup>
@@ -66,6 +71,12 @@
66 71
   <ItemGroup>
67 72
     <None Include="Properties\SignalR.Hosting.Self.nuspec" />
68 73
   </ItemGroup>
  74
+  <ItemGroup>
  75
+    <EmbeddedResource Include="Properties\Resources.resx">
  76
+      <Generator>ResXFileCodeGenerator</Generator>
  77
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
  78
+    </EmbeddedResource>
  79
+  </ItemGroup>
69 80
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
70 81
   <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
71 82
 </Project>

0 notes on commit eaec182

Please sign in to comment.
Something went wrong with that request. Please try again.