Skip to main content

Simple middleware for filtering requests by their source IP address

Project description

https://badge.fury.io/py/django-middlewall.svg https://travis-ci.org/jmz-b/django-middlewall.svg?branch=master https://codecov.io/gh/jmz-b/django-middlewall/branch/master/graph/badge.svg

Simple middleware for blocking requests by IP Address

Quickstart

Install Django Middlewall:

pip install django-middlewall

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'middlewall.apps.MiddlewallConfig',
    ...
)

Enable middleware components:

# enable both white and black listing

MIDDLEWARE = [
    'middlewall.middleware.BlacklistMiddleware',
    'middlewall.middleware.WhitelistMiddleware',
    ...
]

Define access lists in CIDR notation:

# only allow requests from these subnets

MIDDLEWALL_WHITELIST = ['192.0.2.0/24', '198.51.100.0/24']

# also block this specific address

MIDDLEWALL_BLACKLIST = ['192.0.2.1/32']

(optional) Define a custom function to get remote addresses from request objects:

# take advantage of the X_FORWARDED_FOR support in ipware

MIDDLEWALL_ADDRESS_GETTER = 'ipware.ip.get_ip'

Running Tests

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -e .[test]
(myenv) $ pip install tox
(myenv) $ tox

Credits

History

0.1.2 (2017-03-09)

  • General code clean up.

0.1.1 (2017-03-09)

  • First release.

Supported by

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