{ "info": { "author": "Lab Digital", "author_email": "opensource@labdigital.nl", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "\n\n\n================\nWSGI AWS Unproxy\n================\n\nSet the correct ``REMOTE_ADDR`` based on the ``X-Forwarded-For`` header,\nwhile only trusting the CloudFront IP addresses.\n\nThis module is applied as WSGI middleware, fixing the IP-address retrieval for the entire application in a secure manner.\nAs extra benefit, external packages no longer have to write abstraction layers to retrieve the IP-address header.\n\n\nDjango example\n==============\n\nIn Django edit the ``wsgi.py`` file to apply the module:\n\n.. code-block:: python\n\n from django.core.wsgi import get_wsgi_application\n from wsgi_aws_unproxy import UnProxy\n\n application = get_wsgi_application()\n application = UnProxy(application)\n\nNow all packages can just read ``request.META['REMOTE_ADDR']`` to fetch the correct IP.\nThis includes contact forms, Sentry error reporting and rate limiting tools.\n\n\nInstallation\n============\n\nYou can install the latest version using pip:\n\n.. code-block:: bash\n\n pip install wsgi-aws-unproxy\n\nAnd apply it as WSGI middleware:\n\n.. code-block:: python\n\n from wsgi_aws_unproxy import UnProxy\n\n application = UnProxy(application)\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/labd/wsgi-aws-unproxy", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "wsgi-aws-unproxy", "package_url": "https://pypi.org/project/wsgi-aws-unproxy/", "platform": "", "project_url": "https://pypi.org/project/wsgi-aws-unproxy/", "project_urls": { "Homepage": "https://github.com/labd/wsgi-aws-unproxy" }, "release_url": "https://pypi.org/project/wsgi-aws-unproxy/1.1.0/", "requires_dist": [ "netaddr", "requests", "sphinx (>=1.4.0); extra == 'docs'", "flake8 (==3.0.3); extra == 'test'", "flake8-blind-except (==0.1.1); extra == 'test'", "flake8-debugger (==1.4.0); extra == 'test'", "flake8-imports; extra == 'test'", "isort (==4.2.5); extra == 'test'", "pytest (>=2.8.3); extra == 'test'", "pytest-cov (>=2.2.0); extra == 'test'", "requests-mock (==1.3.0); extra == 'test'" ], "requires_python": "", "summary": "Simple wsgi middleware to unproxy AWS", "version": "1.1.0" }, "last_serial": 5002510, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c5c29d82f4b7a67b15c1f63f0349dc00", "sha256": "e2833d903fafaf0d4038aada4cf21d1ef47b0f2579c0c6812b700d8905e57e6c" }, "downloads": -1, "filename": "wsgi_aws_unproxy-0.0.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c5c29d82f4b7a67b15c1f63f0349dc00", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4090, "upload_time": "2017-05-19T08:51:09", "url": "https://files.pythonhosted.org/packages/ac/bf/40eefe6e39c8accdf41969ecb3de8c6c95b71d943aee9f985eafee7c8d95/wsgi_aws_unproxy-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "be82777d7d18be73004f393b496e6086", "sha256": "2cc98b25467e28207b282b7cf22f792b8c2952b1fded599ba379c453b9fa1526" }, "downloads": -1, "filename": "wsgi-aws-unproxy-0.0.1.tar.gz", "has_sig": true, "md5_digest": "be82777d7d18be73004f393b496e6086", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3515, "upload_time": "2017-05-19T08:51:11", "url": "https://files.pythonhosted.org/packages/3b/fd/90cdd99ac844ce9437e46ef77a0b8aa069ec266259952cd0947da2cd8fce/wsgi-aws-unproxy-0.0.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "7703f23b553704fd6d947bf6433cddc8", "sha256": "cd98b7520fb516fa4c396e4acf84347225575cda9baf9b2b21b0dc6b1abd010d" }, "downloads": -1, "filename": "wsgi_aws_unproxy-1.0.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "7703f23b553704fd6d947bf6433cddc8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4680, "upload_time": "2017-05-22T12:59:40", "url": "https://files.pythonhosted.org/packages/f6/3a/0491f1602f9004c6400034c582d925f54693d7a2b1e40bcb3ef2d5f82148/wsgi_aws_unproxy-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b67fb24463fe3f10bbb5f7f7d0ffc7fe", "sha256": "c54c74a9548b80d217467423dee5f4c40b5682467ba1d59ce523c4ec7de1fdc7" }, "downloads": -1, "filename": "wsgi-aws-unproxy-1.0.0.tar.gz", "has_sig": true, "md5_digest": "b67fb24463fe3f10bbb5f7f7d0ffc7fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4122, "upload_time": "2017-05-22T12:59:42", "url": "https://files.pythonhosted.org/packages/68/a1/af4618d8ebcb7b51091baf712c895109a66f3250460300358ee53fefc93f/wsgi-aws-unproxy-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "32769f1c340a9c47cf007d9032afdae3", "sha256": "c164960f71fc918e861389e443ab05c903cee8ec699b2dde35ce72324d287846" }, "downloads": -1, "filename": "wsgi_aws_unproxy-1.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "32769f1c340a9c47cf007d9032afdae3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4686, "upload_time": "2017-06-08T16:44:26", "url": "https://files.pythonhosted.org/packages/da/0f/85498997d6d646c6144b3f9dc94e405fdf5196c89123f1c2aaaf7e531354/wsgi_aws_unproxy-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63a0796fc709b126a41b524f380ed2f5", "sha256": "39088e3518ef7cb464e11ddeb99987a5ef55ebff5a30247722d22e4934e878d6" }, "downloads": -1, "filename": "wsgi-aws-unproxy-1.1.0.tar.gz", "has_sig": true, "md5_digest": "63a0796fc709b126a41b524f380ed2f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4236, "upload_time": "2017-06-08T16:44:28", "url": "https://files.pythonhosted.org/packages/28/9b/af08a5bcfad3ee25426ef859b6508e68761da63469df42d7841d29820ef6/wsgi-aws-unproxy-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "32769f1c340a9c47cf007d9032afdae3", "sha256": "c164960f71fc918e861389e443ab05c903cee8ec699b2dde35ce72324d287846" }, "downloads": -1, "filename": "wsgi_aws_unproxy-1.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "32769f1c340a9c47cf007d9032afdae3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4686, "upload_time": "2017-06-08T16:44:26", "url": "https://files.pythonhosted.org/packages/da/0f/85498997d6d646c6144b3f9dc94e405fdf5196c89123f1c2aaaf7e531354/wsgi_aws_unproxy-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63a0796fc709b126a41b524f380ed2f5", "sha256": "39088e3518ef7cb464e11ddeb99987a5ef55ebff5a30247722d22e4934e878d6" }, "downloads": -1, "filename": "wsgi-aws-unproxy-1.1.0.tar.gz", "has_sig": true, "md5_digest": "63a0796fc709b126a41b524f380ed2f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4236, "upload_time": "2017-06-08T16:44:28", "url": "https://files.pythonhosted.org/packages/28/9b/af08a5bcfad3ee25426ef859b6508e68761da63469df42d7841d29820ef6/wsgi-aws-unproxy-1.1.0.tar.gz" } ] }