summaryrefslogtreecommitdiff
path: root/wsgitools/digest.py
diff options
context:
space:
mode:
Diffstat (limited to 'wsgitools/digest.py')
-rw-r--r--wsgitools/digest.py26
1 files changed, 16 insertions, 10 deletions
diff --git a/wsgitools/digest.py b/wsgitools/digest.py
index ded5e8d..6781e94 100644
--- a/wsgitools/digest.py
+++ b/wsgitools/digest.py
@@ -144,7 +144,7 @@ class AbstractTokenGenerator:
@type username: str
@type algo: str
@param algo: currently the only value supported by
- AuthDigestMiddleware is "md5"
+ L{AuthDigestMiddleware} is "md5"
@rtype: str or None
@returns: a valid token or None to signal that authentication should
fail
@@ -203,6 +203,7 @@ class HtdigestTokenGenerator(AbstractTokenGenerator):
"""
@type realm: str
@type htdigestfile: str
+ @param htdigestfile: path to the .htdigest file
@type ignoreparseerrors: bool
@param ignoreparseerrors: passed to readhtdigest
@raises IOError:
@@ -241,11 +242,13 @@ class HtdigestTokenGenerator(AbstractTokenGenerator):
__all__.append("UpdatingHtdigestTokenGenerator")
class UpdatingHtdigestTokenGenerator(HtdigestTokenGenerator):
- """Behaves like HtdigestTokenGenerator, checks the htdigest file
+ """Behaves like L{HtdigestTokenGenerator}, checks the htdigest file
for changes on each invocation.
"""
def __init__(self, realm, htdigestfile, ignoreparseerrors=False):
assert isinstance(htdigestfile, str)
+ # Need to stat the file before calling parent ctor to detect
+ # modifications.
try:
self.statcache = os.stat(htdigestfile)
except OSError, err:
@@ -256,6 +259,8 @@ class UpdatingHtdigestTokenGenerator(HtdigestTokenGenerator):
self.ignoreparseerrors = ignoreparseerrors
def __call__(self, user, algo="md5"):
+ # The interface does not permit raising exceptions, so all we can do is
+ # fail by returning None.
try:
statcache = os.stat(self.htdigestfile)
except OSError:
@@ -358,8 +363,7 @@ class StatelessNonceStore(NonceStoreBase):
def checknonce(self, nonce, count=1, ident=None):
"""
- Do a check for whether the provided string is a nonce and increase usage
- count on returning True.
+ Check whether the provided string is a nonce.
@type nonce: str
@type count: int
@type ident: None or str
@@ -488,9 +492,9 @@ __all__.append("LazyDBAPI2Opener")
class LazyDBAPI2Opener:
"""
Connects to database on first request. Otherwise it behaves like a dbapi2
- connection. This may be usefull in combination with scgi.forkpool, because
- this way each worker child opens a new database connection when the first
- request is to be answered.
+ connection. This may be usefull in combination with L{scgi.forkpool},
+ because this way each worker child opens a new database connection when
+ the first request is to be answered.
"""
def __init__(self, function, *args, **kwargs):
"""
@@ -525,7 +529,8 @@ __all__.append("DBAPI2NonceStore")
class DBAPI2NonceStore(NonceStoreBase):
"""
A dbapi2-backed nonce store implementation suitable for usage with forking
- wsgi servers such as scgi.forkpool.
+ wsgi servers such as L{scgi.forkpool}.
+
>>> import sqlite3
>>> db = sqlite3.connect(":memory:")
>>> db.cursor().execute("CREATE TABLE nonces (key, value);") and None
@@ -676,9 +681,10 @@ class AuthDigestMiddleware(AuthenticationMiddleware):
L{AuthTokenGenerator} class.
@type maxage: int
@param maxage: deprecated, see L{MemoryNonceStore} or
- L{StatelessNonceStore}
+ L{StatelessNonceStore} and pass an instance to store
@type maxuses: int
- @param maxuses: deprecated, see L{MemoryNonceStore}
+ @param maxuses: deprecated, see L{MemoryNonceStore} and pass an
+ instance to store
@type store: L{NonceStoreBase}
@param store: a nonce storage implementation object. Usage of this
parameter will override maxage and maxuses.