mirror of
https://github.com/evennia/evennia.git
synced 2026-03-31 13:07:16 +02:00
Added support for X-Forwarded-For.
This commit is contained in:
parent
9dd69fc9e0
commit
90163734aa
1 changed files with 26 additions and 1 deletions
|
|
@ -11,7 +11,7 @@ application.
|
|||
a great example/aid on how to do this.)
|
||||
|
||||
"""
|
||||
from twisted.web import resource
|
||||
from twisted.web import resource, http
|
||||
from twisted.python import threadpool
|
||||
from twisted.internet import reactor
|
||||
from twisted.application import service, internet
|
||||
|
|
@ -19,6 +19,31 @@ from twisted.application import service, internet
|
|||
from twisted.web.wsgi import WSGIResource
|
||||
from django.core.handlers.wsgi import WSGIHandler
|
||||
|
||||
from settings import UPSTREAM_IPS
|
||||
|
||||
#
|
||||
# X-Forwarded-For Handler
|
||||
#
|
||||
|
||||
class HTTPChannelWithXForwardedFor(http.HTTPChannel):
|
||||
def allHeadersReceived(self):
|
||||
"""
|
||||
Check to see if this is a reverse proxied connection.
|
||||
"""
|
||||
IP = 0
|
||||
PORT = 1
|
||||
http.HTTPChannel.allHeadersReceived(self)
|
||||
req = self.requests[-1]
|
||||
client_ip, port = self.transport.client
|
||||
forwarded = req.getHeader('X-FORWARDED-FOR')
|
||||
if forwarded and client_ip in UPSTREAM_IPS:
|
||||
self.transport.client = (forwarded, port)
|
||||
|
||||
|
||||
# Monkey-patch Twisted to handle X-Forwarded-For.
|
||||
|
||||
http.HTTPFactory.protocol = HTTPChannelWithXForwardedFor
|
||||
|
||||
#
|
||||
# Website server resource
|
||||
#
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue