Skip to main content

Django middleware to allow access from specific CIDR ranges

Project description

A Django middleware that allows you to specify a list of allowed hosts using CIDR notation.

Installation

Install using pip:

pip install django-cidr-allowed-hosts

Add the middleware at the top of your MIDDLEWARE settings:

MIDDLEWARE = [
    'cidr.middleware.CIDRMiddleware',
    ...
]

Add the CIDR_ALLOWED_HOSTS setting to your settings:

CIDR_ALLOWED_HOSTS = ["0.0.0.0/0"] # allows any IPv4

And that should be it.

Features

  • ALLOWED_HOSTS will still work as expected. Since the middleware overrides the ALLOWED_HOSTS setting to "*", the value provided originally to ALLOWED_HOSTS will be stored in ORIGINAL_ALLOWED_HOSTS and used to check if the request should be allowed.

  • If CIDR_ALLOWED_HOSTS is not set, the middleware will not be used.

  • If ALLOWED_HOSTS contains "*" and CIDR_ALLOWED_HOSTS is set, the middleware will raise MiddlewareNotUsed exception.

  • CIDR_ALLOWED_HOSTS must follow the CIDR notation.

  • Only IPv4 is supported.

Development

python3 -m virtualenv venv
source venv/bin/activate
pip3 install tox
tox

Credits

This project was inspired by django-allow-cidr

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-cidr-allowed-hosts-1.0.2.tar.gz (4.5 kB view hashes)

Uploaded Source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page