This file is indexed.

/usr/share/doc/python3-paste/docs/modules/auth.multi.html is in python3-paste 1.7.5.1-6ubuntu3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>paste.auth.multi – Authentication via one of multiple methods &mdash; Paste 1.7.5.1 documentation</title>
    
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '1.7.5.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <link rel="top" title="Paste 1.7.5.1 documentation" href="../index.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li><a href="../index.html">Paste 1.7.5.1 documentation</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="module-paste.auth.multi">
<span id="paste-auth-multi-authentication-via-one-of-multiple-methods"></span><h1><a class="reference internal" href="#module-paste.auth.multi" title="paste.auth.multi"><tt class="xref py py-mod docutils literal"><span class="pre">paste.auth.multi</span></tt></a> &#8211; Authentication via one of multiple methods<a class="headerlink" href="#module-paste.auth.multi" title="Permalink to this headline"></a></h1>
<p>Authentication via Multiple Methods</p>
<p>In some environments, the choice of authentication method to be used
depends upon the environment and is not &#8220;fixed&#8221;.  This middleware allows
N authentication methods to be registered along with a goodness function
which determines which method should be used. The following example
demonstrates how to use both form and digest authentication in a server
stack; by default it uses form-based authentication unless
<tt class="docutils literal"><span class="pre">*authmeth=digest</span></tt> is specified as a query argument.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">paste.auth</span> <span class="kn">import</span> <span class="n">form</span><span class="p">,</span> <span class="n">cookie</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">multi</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">paste.wsgilib</span> <span class="kn">import</span> <span class="n">dump_environ</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">paste.httpserver</span> <span class="kn">import</span> <span class="n">serve</span>
<span class="go">&gt;&gt;&gt;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">multi</span> <span class="o">=</span> <span class="n">multi</span><span class="o">.</span><span class="n">MultiHandler</span><span class="p">(</span><span class="n">dump_environ</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">authfunc</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">realm</span><span class="p">,</span> <span class="n">user</span><span class="p">):</span>
<span class="gp">... </span>    <span class="k">return</span> <span class="n">digest</span><span class="o">.</span><span class="n">digest_password</span><span class="p">(</span><span class="n">realm</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">user</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">multi</span><span class="o">.</span><span class="n">add_method</span><span class="p">(</span><span class="s">&#39;digest&#39;</span><span class="p">,</span> <span class="n">digest</span><span class="o">.</span><span class="n">middleware</span><span class="p">,</span> <span class="s">&quot;Test Realm&quot;</span><span class="p">,</span> <span class="n">authfunc</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">multi</span><span class="o">.</span><span class="n">set_query_argument</span><span class="p">(</span><span class="s">&#39;digest&#39;</span><span class="p">)</span>
<span class="go">&gt;&gt;&gt;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">authfunc</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">):</span>
<span class="gp">... </span>    <span class="k">return</span> <span class="n">username</span> <span class="o">==</span> <span class="n">password</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">multi</span><span class="o">.</span><span class="n">add_method</span><span class="p">(</span><span class="s">&#39;form&#39;</span><span class="p">,</span> <span class="n">form</span><span class="o">.</span><span class="n">middleware</span><span class="p">,</span> <span class="n">authfunc</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">multi</span><span class="o">.</span><span class="n">set_default</span><span class="p">(</span><span class="s">&#39;form&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">serve</span><span class="p">(</span><span class="n">cookie</span><span class="o">.</span><span class="n">middleware</span><span class="p">(</span><span class="n">multi</span><span class="p">))</span>
<span class="go">serving on...</span>
</pre></div>
</div>
<div class="section" id="module-contents">
<h2>Module Contents<a class="headerlink" href="#module-contents" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="paste.auth.multi.MultiHandler">
<em class="property">class </em><tt class="descclassname">paste.auth.multi.</tt><tt class="descname">MultiHandler</tt><big>(</big><em>application</em><big>)</big><a class="headerlink" href="#paste.auth.multi.MultiHandler" title="Permalink to this definition"></a></dt>
<dd><p>Multiple Authentication Handler</p>
<p>This middleware provides two othogonal facilities:</p>
<blockquote>
<div><ul class="simple">
<li>a manner to register any number of authentication middlewares</li>
<li>a mechanism to register predicates which cause one of the
registered middlewares to be used depending upon the request</li>
</ul>
</div></blockquote>
<p>If none of the predicates returns True, then the application is
invoked directly without middleware</p>
</dd></dl>

</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#"><tt class="docutils literal"><span class="pre">paste.auth.multi</span></tt> &#8211; Authentication via one of multiple methods</a><ul>
<li><a class="reference internal" href="#module-contents">Module Contents</a></li>
</ul>
</li>
</ul>

  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="../_sources/modules/auth.multi.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li><a href="../index.html">Paste 1.7.5.1 documentation</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2008, Ian Bicking.
      Last updated on Apr 11, 2014.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
    </div>
  </body>
</html>