diff options
author | Georgy Redkozubov <georgy.redkozubov@linaro.org> | 2012-07-24 15:51:25 +0400 |
---|---|---|
committer | Georgy Redkozubov <georgy.redkozubov@linaro.org> | 2012-07-24 15:51:25 +0400 |
commit | ee58103a8131c3ea22164b1219978accac7ff6d1 (patch) | |
tree | 23a4d60d46b59a36de43c94c0c2587951a265dca /license_protected_downloads | |
parent | 8e51f8213ccf30959d22e019dcbe4848e4a4739a (diff) |
Added lost wsgi.py and excepted hosts.
Diffstat (limited to 'license_protected_downloads')
-rw-r--r-- | license_protected_downloads/config.py | 7 | ||||
-rw-r--r-- | license_protected_downloads/views.py | 15 | ||||
-rw-r--r-- | license_protected_downloads/wsgi.py | 41 |
3 files changed, 62 insertions, 1 deletions
diff --git a/license_protected_downloads/config.py b/license_protected_downloads/config.py new file mode 100644 index 0000000..526a26f --- /dev/null +++ b/license_protected_downloads/config.py @@ -0,0 +1,7 @@ +# Configuration file for linaro-license-protection + +# Let internal hosts through always. +INTERNAL_HOSTS = ( + '50.17.250.69', # android-build.linaro.org + '82.69.11.23', # validation.linaro.org +) diff --git a/license_protected_downloads/views.py b/license_protected_downloads/views.py index ddfe07d..6d2e9c1 100644 --- a/license_protected_downloads/views.py +++ b/license_protected_downloads/views.py @@ -21,6 +21,7 @@ from django.utils.encoding import smart_str from buildinfo import BuildInfo from models import License from openid_auth import OpenIDAuth +import config def _hidden_file(file_name): @@ -163,6 +164,15 @@ def is_protected(path): return digests +def get_client_ip(request): + x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') + if x_forwarded_for: + ip = x_forwarded_for.split(',')[-1].strip() + else: + ip = request.META.get('REMOTE_ADDR') + return ip + + def license_accepted(request, digest): return 'license_accepted_' + digest in request.COOKIES @@ -241,7 +251,10 @@ def file_server(request, path): file_name = os.path.basename(path) response = None - digests = is_protected(path) + if get_client_ip(request) in config.INTERNAL_HOSTS: + digests = 'OPEN' + else: + digests = is_protected(path) if not digests: # File has no license text but is protected response = HttpResponseForbidden( diff --git a/license_protected_downloads/wsgi.py b/license_protected_downloads/wsgi.py new file mode 100644 index 0000000..8d8b86e --- /dev/null +++ b/license_protected_downloads/wsgi.py @@ -0,0 +1,41 @@ +""" +WSGI config for license_protected_downloads project. + +This module contains the WSGI application used by Django's development server +and any production WSGI deployments. It should expose a module-level variable +named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover +this application via the ``WSGI_APPLICATION`` setting. + +Usually you will have the standard Django WSGI application here, but it also +might make sense to replace the whole Django WSGI application with a custom one +that later delegates to the Django one. For example, you could introduce WSGI +middleware here, or combine a Django application with an application of another +framework. + +""" +import os +import sys +sys.path.append("/usr/lib/python2.7/dist-packages") +sys.path.append("/usr/lib/pymodules/python2.7") +sys.path.append("/usr/lib/python2.7") + +# NOTE: Set actual path to directory containing linaro-license-protection app +#sys.path.append("linaro-license-protection") + +os.environ.setdefault( + "DJANGO_SETTINGS_MODULE", + "linaro-license-protection.settings" +) + +# This application object is used by any WSGI server configured to use this +# file. This includes Django's development server, if the WSGI_APPLICATION +# setting points here. +#from django.core.wsgi import get_wsgi_application +#application = get_wsgi_application() + +import django.core.handlers.wsgi +application = django.core.handlers.wsgi.WSGIHandler() + +# Apply WSGI middleware here. +# from helloworld.wsgi import HelloWorldApplication +# application = HelloWorldApplication(application) |