aboutsummaryrefslogtreecommitdiff
path: root/license_protected_downloads
diff options
context:
space:
mode:
authorGeorgy Redkozubov <georgy.redkozubov@linaro.org>2012-07-24 15:51:25 +0400
committerGeorgy Redkozubov <georgy.redkozubov@linaro.org>2012-07-24 15:51:25 +0400
commitee58103a8131c3ea22164b1219978accac7ff6d1 (patch)
tree23a4d60d46b59a36de43c94c0c2587951a265dca /license_protected_downloads
parent8e51f8213ccf30959d22e019dcbe4848e4a4739a (diff)
Added lost wsgi.py and excepted hosts.
Diffstat (limited to 'license_protected_downloads')
-rw-r--r--license_protected_downloads/config.py7
-rw-r--r--license_protected_downloads/views.py15
-rw-r--r--license_protected_downloads/wsgi.py41
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)