Source code for pyzor

"""Networked spam-signature detection."""

__author__ = "Frank J. Tobin, ftobin@neverending.org"
__credits__ = "Tony Meyer, Dreas von Donselaar, all the Pyzor contributors."
__version__ = "1.1.2"

import hashlib

proto_name = "pyzor"
proto_version = 2.1
anonymous_user = "anonymous"

# We would like to use sha512, but that would mean that all the digests
# changed, so for now, we stick with sha1 (which is the same as the old
# sha module).
sha = hashlib.sha1

# This is the maximum time between a client signing a Pyzor request and the
# server checking the signature.
MAX_TIMESTAMP_DIFFERENCE = 300  # seconds


[docs] class CommError(Exception): """Something in general went wrong with the transaction.""" code = 400
[docs] class ProtocolError(CommError): """Something is wrong with talking the protocol.""" code = 400
[docs] class TimeoutError(CommError): """The connection timed out.""" code = 504
[docs] class IncompleteMessageError(ProtocolError): """A complete requested was not received.""" pass
[docs] class UnsupportedVersionError(ProtocolError): """Client is using an unsupported protocol version.""" pass
[docs] class SignatureError(CommError): """Unknown user, signature on msg invalid, or not within allowed time range.""" pass
[docs] class AuthorizationError(CommError): """The signature was valid, but the user is not permitted to do the requested action.""" pass