##// END OF EJS Templates
auth: only use X- headers instead of REMOTE_ADDR if explicitly told so in remote_addr_header...
Mads Kiilerich -
r8679:3d7ba590 default
parent child Browse files
Show More
@@ -111,6 +111,9 b' app_instance_uuid = development-not-secr'
111 ## cut off limit for large diffs (size in bytes)
111 ## cut off limit for large diffs (size in bytes)
112 cut_off_limit = 256000
112 cut_off_limit = 256000
113
113
114 ## WSGI environment variable to get the IP address of the client (default REMOTE_ADDR)
115 #remote_addr_variable = HTTP_X_FORWARDED_FOR
116
114 ## always pretend the client connected using HTTPS (default false)
117 ## always pretend the client connected using HTTPS (default false)
115 #force_https = true
118 #force_https = true
116
119
@@ -423,8 +423,12 b' somehow pass the original information on'
423 configured to pick that information up and trust it.
423 configured to pick that information up and trust it.
424
424
425 Kallithea will by default rely on its WSGI server to provide the IP of the
425 Kallithea will by default rely on its WSGI server to provide the IP of the
426 client in the WSGI environment as ``REMOTE_ADDR``, but it can also
426 client in the WSGI environment as ``REMOTE_ADDR``, but it can be configured to
427 get it from the ``X-Real-IP`` or ``X-Forwarded-For`` HTTP headers.
427 get it from an HTTP header that has been set by the proxy server. For
428 example, if the proxy server puts the client IP in the ``X-Forwarded-For``
429 HTTP header, set::
430
431 remote_addr_variable = HTTP_X_FORWARDED_FOR
428
432
429 Kallithea will by default rely on finding the protocol (``http`` or ``https``)
433 Kallithea will by default rely on finding the protocol (``http`` or ``https``)
430 in the WSGI environment as ``wsgi.url_scheme``. If the proxy server puts
434 in the WSGI environment as ``wsgi.url_scheme``. If the proxy server puts
@@ -81,20 +81,12 b' def _filter_proxy(ip):'
81
81
82
82
83 def get_ip_addr(environ):
83 def get_ip_addr(environ):
84 proxy_key = 'HTTP_X_REAL_IP'
84 """The web server will set REMOTE_ADDR to the unfakeable IP layer client IP address.
85 proxy_key2 = 'HTTP_X_FORWARDED_FOR'
85 If using a proxy server, make it possible to use another value, such as
86 def_key = 'REMOTE_ADDR'
86 the X-Forwarded-For header, by setting `remote_addr_variable = HTTP_X_FORWARDED_FOR`.
87
87 """
88 ip = environ.get(proxy_key)
88 remote_addr_variable = kallithea.CONFIG.get('remote_addr_variable', 'REMOTE_ADDR')
89 if ip:
89 return _filter_proxy(environ.get(remote_addr_variable, '0.0.0.0'))
90 return _filter_proxy(ip)
91
92 ip = environ.get(proxy_key2)
93 if ip:
94 return _filter_proxy(ip)
95
96 ip = environ.get(def_key, '0.0.0.0')
97 return _filter_proxy(ip)
98
90
99
91
100 def get_path_info(environ):
92 def get_path_info(environ):
@@ -174,6 +174,9 b' app_instance_uuid = ${uuid()}'
174 <%text>##</%text> cut off limit for large diffs (size in bytes)
174 <%text>##</%text> cut off limit for large diffs (size in bytes)
175 cut_off_limit = 256000
175 cut_off_limit = 256000
176
176
177 <%text>##</%text> WSGI environment variable to get the IP address of the client (default REMOTE_ADDR)
178 #remote_addr_variable = HTTP_X_FORWARDED_FOR
179
177 <%text>##</%text> always pretend the client connected using HTTPS (default false)
180 <%text>##</%text> always pretend the client connected using HTTPS (default false)
178 #force_https = true
181 #force_https = true
179
182
General Comments 0
You need to be logged in to leave comments. Login now