IP Authorization Decorator with IP list

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from django.http import HttpResponse

def ip_auth(authorised_ips):
    def inner(f):
        def authorization(*args,**kwargs):
            request = args[0]
            request_ip = request.META['REMOTE_ADDR']
            if request_ip not in authorised_ips:
                return HttpResponse(status=401)
            else:
                return f(*args, **kwargs)
        return authorization
    return inner

More like this

  1. Support IP ranges in INTERNAL_IPS by jdunck 3 years, 4 months ago
  2. Include entire networks in INTERNAL_IPS setting by pmclanahan 4 years, 2 months ago
  3. caching parsed templates by forgems 5 years, 5 months ago
  4. Akismet Webservice by sneeu 6 years, 2 months ago
  5. Test Server Thread by adamlofts 3 years, 11 months ago

Comments

darek (on February 16, 2011):

More generic:

def ip_auth(authorised_ips=None, banned_ips=None):
    def inner(f):
        def authorization(request, *args,**kwargs):
            authorised_ips = authorised_ips or getattr(settings, 'AUTHORISED_IPS', [])
            banned_ips = banned_ips or getattr(settings, 'BANNED_IPS', [])
            ip = request.META['REMOTE_ADDR']
            is_authorised = ip in authorised_ips if authorised_ips else True
            is_banned = ip in banned_ips
            if not is_authorised or is_banned:
                return HttpResponse(status=401)
            else:
                return f(request, *args, **kwargs)
        return authorization
    return inner

#

(Forgotten your password?)