A Django Middleware to enalbe use of CIDR IP ranges in ALLOWED_HOSTS.
Install Django Allow CIDR:
pip install django-allow-cidr
Add the Middleware to your MIDDLEWARE_CLASSES (for Django < 1.10) or MIDDLEWARE settings. It should be the first in the list:
MIDDLEWARE = (
'allow_cidr.middleware.AllowCIDRMiddleware',
...
)
Add the ALLOWED_CIDR_NETS setting:
ALLOWED_CIDR_NETS = ['192.168.1.0/24']
Profit!
- The normal ALLOWED_HOSTS values will also work as intended. This Middleware is intended to augment, not replace, the normal Django function.
- If you do define ALLOWED_CIDR_NETS and it has values, the middleware will capture what you have in ALLOWED_HOSTS, set ALLOWED_HOSTS to ['*'] and take over validation of host headers.
- The ALLOWED_CIDR_NETS values can be any valid network definition for the netaddr package.
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
Tools used in rendering this package: