Skip to content

Commit e1debfe

Browse files
committed
Deploying to gh-pages from @ e9da291 🚀
1 parent adfded7 commit e1debfe

File tree

4 files changed

+50
-49
lines changed

4 files changed

+50
-49
lines changed

main/_modules/litestar/middleware/allowed_hosts.html

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -551,47 +551,48 @@ <h1>Source code for litestar.middleware.allowed_hosts</h1><div class="highlight"
551551
</span><span data-line="38"> <span class="k">return</span>
552552
</span><span data-line="39">
553553
</span><span data-line="40"> <span class="n">allowed_hosts</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
554-
</span><span data-line="41"> <span class="sa">rf</span><span class="s2">&quot;.*\.</span><span class="si">{</span><span class="n">host</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;*.&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">$&quot;</span> <span class="k">if</span> <span class="n">host</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;*.&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="n">host</span> <span class="k">for</span> <span class="n">host</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">allowed_hosts</span>
555-
</span><span data-line="42"> <span class="p">}</span>
556-
</span><span data-line="43">
557-
</span><span data-line="44"> <span class="bp">self</span><span class="o">.</span><span class="n">allowed_hosts_regex</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">&quot;|&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">allowed_hosts</span><span class="p">)))</span> <span class="c1"># pyright: ignore</span>
558-
</span><span data-line="45">
559-
</span><span data-line="46"> <span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">www_redirect</span> <span class="ow">and</span> <span class="p">(</span>
560-
</span><span data-line="47"> <span class="n">redirect_domains</span> <span class="o">:=</span> <span class="p">{</span><span class="n">host</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;www.&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">host</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">allowed_hosts</span> <span class="k">if</span> <span class="n">host</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;www.&quot;</span><span class="p">)}</span>
561-
</span><span data-line="48"> <span class="p">):</span>
562-
</span><span data-line="49"> <span class="bp">self</span><span class="o">.</span><span class="n">redirect_domains</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">&quot;|&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">redirect_domains</span><span class="p">)))</span> <span class="c1"># pyright: ignore</span></div>
554+
</span><span data-line="41"> <span class="sa">rf</span><span class="s2">&quot;.*\.</span><span class="si">{</span><span class="n">re</span><span class="o">.</span><span class="n">escape</span><span class="p">(</span><span class="n">host</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;*.&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">))</span><span class="si">}</span><span class="s2">$&quot;</span> <span class="k">if</span> <span class="n">host</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;*.&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="n">re</span><span class="o">.</span><span class="n">escape</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
555+
</span><span data-line="42"> <span class="k">for</span> <span class="n">host</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">allowed_hosts</span>
556+
</span><span data-line="43"> <span class="p">}</span>
557+
</span><span data-line="44">
558+
</span><span data-line="45"> <span class="bp">self</span><span class="o">.</span><span class="n">allowed_hosts_regex</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">&quot;|&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">allowed_hosts</span><span class="p">)))</span> <span class="c1"># pyright: ignore</span>
559+
</span><span data-line="46">
560+
</span><span data-line="47"> <span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">www_redirect</span> <span class="ow">and</span> <span class="p">(</span>
561+
</span><span data-line="48"> <span class="n">redirect_domains</span> <span class="o">:=</span> <span class="p">{</span><span class="n">host</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;www.&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">host</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">allowed_hosts</span> <span class="k">if</span> <span class="n">host</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;www.&quot;</span><span class="p">)}</span>
562+
</span><span data-line="49"> <span class="p">):</span>
563+
</span><span data-line="50"> <span class="bp">self</span><span class="o">.</span><span class="n">redirect_domains</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">&quot;|&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">redirect_domains</span><span class="p">)))</span> <span class="c1"># pyright: ignore</span></div>
563564

564-
</span><span data-line="50">
565-
</span><span data-line="51"> <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">scope</span><span class="p">:</span> <span class="n">Scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">:</span> <span class="n">Receive</span><span class="p">,</span> <span class="n">send</span><span class="p">:</span> <span class="n">Send</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
566-
</span><span data-line="52"><span class="w"> </span><span class="sd">&quot;&quot;&quot;ASGI callable.</span>
567-
</span><span data-line="53">
568-
</span><span data-line="54"><span class="sd"> Args:</span>
569-
</span><span data-line="55"><span class="sd"> scope: The ASGI connection scope.</span>
570-
</span><span data-line="56"><span class="sd"> receive: The ASGI receive function.</span>
571-
</span><span data-line="57"><span class="sd"> send: The ASGI send function.</span>
572-
</span><span data-line="58">
573-
</span><span data-line="59"><span class="sd"> Returns:</span>
574-
</span><span data-line="60"><span class="sd"> None</span>
575-
</span><span data-line="61"><span class="sd"> &quot;&quot;&quot;</span>
576-
</span><span data-line="62"> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">allowed_hosts_regex</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
577-
</span><span data-line="63"> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">,</span> <span class="n">send</span><span class="p">)</span>
578-
</span><span data-line="64"> <span class="k">return</span>
579-
</span><span data-line="65">
580-
</span><span data-line="66"> <span class="n">headers</span> <span class="o">=</span> <span class="n">MutableScopeHeaders</span><span class="p">(</span><span class="n">scope</span><span class="o">=</span><span class="n">scope</span><span class="p">)</span>
581-
</span><span data-line="67"> <span class="k">if</span> <span class="n">host</span> <span class="o">:=</span> <span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;host&quot;</span><span class="p">,</span> <span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;x-forwarded-host&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]:</span>
582-
</span><span data-line="68"> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">allowed_hosts_regex</span><span class="o">.</span><span class="n">fullmatch</span><span class="p">(</span><span class="n">host</span><span class="p">):</span>
583-
</span><span data-line="69"> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">,</span> <span class="n">send</span><span class="p">)</span>
584-
</span><span data-line="70"> <span class="k">return</span>
585-
</span><span data-line="71">
586-
</span><span data-line="72"> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">redirect_domains</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">redirect_domains</span><span class="o">.</span><span class="n">fullmatch</span><span class="p">(</span><span class="n">host</span><span class="p">):</span>
587-
</span><span data-line="73"> <span class="n">url</span> <span class="o">=</span> <span class="n">URL</span><span class="o">.</span><span class="n">from_scope</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
588-
</span><span data-line="74"> <span class="n">redirect_url</span> <span class="o">=</span> <span class="n">url</span><span class="o">.</span><span class="n">with_replacements</span><span class="p">(</span><span class="n">netloc</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;www.</span><span class="si">{</span><span class="n">url</span><span class="o">.</span><span class="n">netloc</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
589-
</span><span data-line="75"> <span class="n">redirect_response</span> <span class="o">=</span> <span class="n">ASGIRedirectResponse</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">redirect_url</span><span class="p">))</span>
590-
</span><span data-line="76"> <span class="k">await</span> <span class="n">redirect_response</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">,</span> <span class="n">send</span><span class="p">)</span>
591-
</span><span data-line="77"> <span class="k">return</span>
592-
</span><span data-line="78">
593-
</span><span data-line="79"> <span class="n">response</span> <span class="o">=</span> <span class="n">ASGIResponse</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="sa">b</span><span class="s1">&#39;{&quot;message&quot;:&quot;invalid host header&quot;}&#39;</span><span class="p">,</span> <span class="n">status_code</span><span class="o">=</span><span class="n">HTTP_400_BAD_REQUEST</span><span class="p">)</span>
594-
</span><span data-line="80"> <span class="k">await</span> <span class="n">response</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">,</span> <span class="n">send</span><span class="p">)</span></div>
565+
</span><span data-line="51">
566+
</span><span data-line="52"> <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">scope</span><span class="p">:</span> <span class="n">Scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">:</span> <span class="n">Receive</span><span class="p">,</span> <span class="n">send</span><span class="p">:</span> <span class="n">Send</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
567+
</span><span data-line="53"><span class="w"> </span><span class="sd">&quot;&quot;&quot;ASGI callable.</span>
568+
</span><span data-line="54">
569+
</span><span data-line="55"><span class="sd"> Args:</span>
570+
</span><span data-line="56"><span class="sd"> scope: The ASGI connection scope.</span>
571+
</span><span data-line="57"><span class="sd"> receive: The ASGI receive function.</span>
572+
</span><span data-line="58"><span class="sd"> send: The ASGI send function.</span>
573+
</span><span data-line="59">
574+
</span><span data-line="60"><span class="sd"> Returns:</span>
575+
</span><span data-line="61"><span class="sd"> None</span>
576+
</span><span data-line="62"><span class="sd"> &quot;&quot;&quot;</span>
577+
</span><span data-line="63"> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">allowed_hosts_regex</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
578+
</span><span data-line="64"> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">,</span> <span class="n">send</span><span class="p">)</span>
579+
</span><span data-line="65"> <span class="k">return</span>
580+
</span><span data-line="66">
581+
</span><span data-line="67"> <span class="n">headers</span> <span class="o">=</span> <span class="n">MutableScopeHeaders</span><span class="p">(</span><span class="n">scope</span><span class="o">=</span><span class="n">scope</span><span class="p">)</span>
582+
</span><span data-line="68"> <span class="k">if</span> <span class="n">host</span> <span class="o">:=</span> <span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;host&quot;</span><span class="p">,</span> <span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;x-forwarded-host&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]:</span>
583+
</span><span data-line="69"> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">allowed_hosts_regex</span><span class="o">.</span><span class="n">fullmatch</span><span class="p">(</span><span class="n">host</span><span class="p">):</span>
584+
</span><span data-line="70"> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">,</span> <span class="n">send</span><span class="p">)</span>
585+
</span><span data-line="71"> <span class="k">return</span>
586+
</span><span data-line="72">
587+
</span><span data-line="73"> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">redirect_domains</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">redirect_domains</span><span class="o">.</span><span class="n">fullmatch</span><span class="p">(</span><span class="n">host</span><span class="p">):</span>
588+
</span><span data-line="74"> <span class="n">url</span> <span class="o">=</span> <span class="n">URL</span><span class="o">.</span><span class="n">from_scope</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
589+
</span><span data-line="75"> <span class="n">redirect_url</span> <span class="o">=</span> <span class="n">url</span><span class="o">.</span><span class="n">with_replacements</span><span class="p">(</span><span class="n">netloc</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;www.</span><span class="si">{</span><span class="n">url</span><span class="o">.</span><span class="n">netloc</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
590+
</span><span data-line="76"> <span class="n">redirect_response</span> <span class="o">=</span> <span class="n">ASGIRedirectResponse</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">redirect_url</span><span class="p">))</span>
591+
</span><span data-line="77"> <span class="k">await</span> <span class="n">redirect_response</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">,</span> <span class="n">send</span><span class="p">)</span>
592+
</span><span data-line="78"> <span class="k">return</span>
593+
</span><span data-line="79">
594+
</span><span data-line="80"> <span class="n">response</span> <span class="o">=</span> <span class="n">ASGIResponse</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="sa">b</span><span class="s1">&#39;{&quot;message&quot;:&quot;invalid host header&quot;}&#39;</span><span class="p">,</span> <span class="n">status_code</span><span class="o">=</span><span class="n">HTTP_400_BAD_REQUEST</span><span class="p">)</span>
595+
</span><span data-line="81"> <span class="k">await</span> <span class="n">response</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">receive</span><span class="p">,</span> <span class="n">send</span><span class="p">)</span></div>
595596

596597
</span></pre></div>
597598
</article><button class="back-to-top" type="button">

0 commit comments

Comments
 (0)