1
0
mirror of https://github.com/dkmstr/openuds.git synced 2025-01-05 09:17:54 +03:00

Allow UDS behind a proxy

This commit is contained in:
Adolfo Gómez García 2016-04-22 14:59:34 +02:00
parent 6544a61f72
commit 6b5f9d266d
2 changed files with 15 additions and 1 deletions

View File

@ -282,6 +282,9 @@ class GlobalConfig(object):
# Allow clients to notify their own ip (if set), or use always the request extracted IP # Allow clients to notify their own ip (if set), or use always the request extracted IP
HONOR_CLIENT_IP_NOTIFY = Config.section(SECURITY_SECTION).value('honorClientNotifyIP', '0', type=Config.BOOLEAN_FIELD) HONOR_CLIENT_IP_NOTIFY = Config.section(SECURITY_SECTION).value('honorClientNotifyIP', '0', type=Config.BOOLEAN_FIELD)
# If there is a proxy in front of us
BEHIND_PROXY = Config.section(SECURITY_SECTION).value('Behind a proxy', '0', type=Config.BOOLEAN_FIELD)
# Clusters related vars # Clusters related vars
# Maximum desired CPU Load. If cpu is over this value, a migration of a service is "desirable" # Maximum desired CPU Load. If cpu is over this value, a migration of a service is "desirable"

View File

@ -32,13 +32,14 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from uds.core.util import OsDetector from uds.core.util import OsDetector
from uds.core.util.Config import GlobalConfig
from uds.core.auths.auth import ROOT_ID, USER_KEY, getRootUser from uds.core.auths.auth import ROOT_ID, USER_KEY, getRootUser
from uds.models import User from uds.models import User
import threading import threading
import logging import logging
__updated__ = '2015-05-10' __updated__ = '2016-04-22'
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -90,6 +91,7 @@ class GlobalRequestMiddleware(object):
Returns the obtained IP, that is always be a valid ip address. Returns the obtained IP, that is always be a valid ip address.
''' '''
behind_proxy = GlobalConfig.BEHIND_PROXY.getBool(False)
try: try:
request.ip = request.META['REMOTE_ADDR'] request.ip = request.META['REMOTE_ADDR']
except: except:
@ -98,11 +100,20 @@ class GlobalRequestMiddleware(object):
try: try:
request.ip_proxy = request.META['HTTP_X_FORWARDED_FOR'].split(",")[0] request.ip_proxy = request.META['HTTP_X_FORWARDED_FOR'].split(",")[0]
if behind_proxy is True:
request.ip = request.ip_proxy
request.ip_proxy = request.META['HTTP_X_FORWARDED_FOR'].split(",")[1] # Try to get next proxy
request.is_proxy = True request.is_proxy = True
except: except:
request.ip_proxy = request.ip request.ip_proxy = request.ip
request.is_proxy = False request.is_proxy = False
# Always honor proxy if we are behind a proxy
if GlobalConfig.BEHIND_PROXY.getBool(False) is True:
request.ip = request.ip_proxy
@staticmethod @staticmethod
def getUser(request): def getUser(request):
''' '''