diff options
author | Bert JW Regeer <bertjw@regeer.org> | 2018-12-02 16:59:01 -0700 |
---|---|---|
committer | Bert JW Regeer <bertjw@regeer.org> | 2018-12-02 18:03:53 -0700 |
commit | 89fe396a13e31db5692def5bcb253d85d5d5817f (patch) | |
tree | 50c198811ab7b9bf8ab4b7cb3dfb8114a550f086 | |
parent | 72174cef50a18a47dc4a0263d191b7e37b635c03 (diff) | |
download | waitress-89fe396a13e31db5692def5bcb253d85d5d5817f.tar.gz |
Define PROXY_HEADERS once
-rw-r--r-- | waitress/adjustments.py | 14 | ||||
-rw-r--r-- | waitress/task.py | 10 | ||||
-rw-r--r-- | waitress/utilities.py | 9 |
3 files changed, 14 insertions, 19 deletions
diff --git a/waitress/adjustments.py b/waitress/adjustments.py index d9e931f..8d34351 100644 --- a/waitress/adjustments.py +++ b/waitress/adjustments.py @@ -17,7 +17,8 @@ import getopt import socket import warnings -from waitress.compat import ( +from .utilities import PROXY_HEADERS +from .compat import ( PY2, WIN, string_types, @@ -26,14 +27,7 @@ from waitress.compat import ( truthy = frozenset(('t', 'true', 'y', 'yes', 'on', '1')) -KNOWN_PROXY_HEADERS = frozenset({ - 'forwarded', - 'x-forwarded-by', - 'x-forwarded-for', - 'x-forwarded-host', - 'x-forwarded-port', - 'x-forwarded-proto', -}) +KNOWN_PROXY_HEADERS = {header.lower().replace('_', '-') for header in PROXY_HEADERS} def asbool(s): """ Return the boolean value ``True`` if the case-lowered value of string @@ -167,7 +161,7 @@ class Adjustments(object): # Which of the proxy headers should we trust, this is a set where you # either specify forwarded or one or more of forwarded-host, forwarded-for, # forwarded-proto, forwarded-port. - trusted_proxy_headers = {} + trusted_proxy_headers = set() # Would you like waitress to log warnings about untrusted proxy headers # that were encountered while processing the proxy headers? This only makes diff --git a/waitress/task.py b/waitress/task.py index 22c69db..0c686ab 100644 --- a/waitress/task.py +++ b/waitress/task.py @@ -27,6 +27,7 @@ from .utilities import ( logger, queue_logger, undquote, + PROXY_HEADERS, ) rename_headers = { # or keep them without the HTTP_ prefix added @@ -45,15 +46,6 @@ hop_by_hop = frozenset(( 'upgrade' )) -PROXY_HEADERS = frozenset({ - 'X_FORWARDED_FOR', - 'X_FORWARDED_HOST', - 'X_FORWARDED_PROTO', - 'X_FORWARDED_PORT', - 'X_FORWARDED_BY', - 'FORWARDED', -}) - class JustTesting(Exception): pass diff --git a/waitress/utilities.py b/waitress/utilities.py index 8c46f85..2d56e35 100644 --- a/waitress/utilities.py +++ b/waitress/utilities.py @@ -26,6 +26,15 @@ from collections import namedtuple logger = logging.getLogger('waitress') queue_logger = logging.getLogger('waitress.queue') +PROXY_HEADERS = frozenset({ + 'X_FORWARDED_FOR', + 'X_FORWARDED_HOST', + 'X_FORWARDED_PROTO', + 'X_FORWARDED_PORT', + 'X_FORWARDED_BY', + 'FORWARDED', +}) + def find_double_newline(s): """Returns the position just after a double newline in the given string.""" pos1 = s.find(b'\n\r\n') # One kind of double newline |