Skip to content

Commit ec2f19b

Browse files
Perdumhagander
authored andcommitted
Allow use of IP ranges for API_CLIENTS
1 parent e56011c commit ec2f19b

File tree

1 file changed

+11
-3
lines changed
  • django/archives/mailarchives

1 file changed

+11
-3
lines changed

django/archives/mailarchives/api.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
from django.http import HttpResponse, HttpResponseForbidden
22
from django.shortcuts import get_object_or_404
33
from django.conf import settings
4+
import ipaddress
45

56
from .views import cache
67
from .models import Message, List
78

89
import json
910

1011

12+
def is_host_allowed(request):
13+
for ip_range in settings.API_CLIENTS:
14+
if ipaddress.ip_address(request.META['REMOTE_ADDR']) in ipaddress.ip_network(ip_range):
15+
return True
16+
return False
17+
18+
1119
@cache(hours=4)
1220
def listinfo(request):
1321
if not settings.PUBLIC_ARCHIVES:
1422
return HttpResponseForbidden('No API access on private archives for now')
1523

16-
if not request.META['REMOTE_ADDR'] in settings.API_CLIENTS:
24+
if not is_host_allowed(request):
1725
return HttpResponseForbidden('Invalid host')
1826

1927
resp = HttpResponse(content_type='application/json')
@@ -33,7 +41,7 @@ def latest(request, listname):
3341
if not settings.PUBLIC_ARCHIVES:
3442
return HttpResponseForbidden('No API access on private archives for now')
3543

36-
if not request.META['REMOTE_ADDR'] in settings.API_CLIENTS:
44+
if not is_host_allowed(request):
3745
return HttpResponseForbidden('Invalid host')
3846

3947
# Return the latest <n> messages on this list.
@@ -94,7 +102,7 @@ def thread(request, msgid):
94102
if not settings.PUBLIC_ARCHIVES:
95103
return HttpResponseForbidden('No API access on private archives for now')
96104

97-
if not request.META['REMOTE_ADDR'] in settings.API_CLIENTS:
105+
if not is_host_allowed(request):
98106
return HttpResponseForbidden('Invalid host')
99107

100108
# Return metadata about a single thread. A list of all the emails

0 commit comments

Comments
 (0)