feat: Add some IP limiting
All checks were successful
Build Docker / Build Image (push) Successful in 39s

This commit is contained in:
2025-04-04 16:07:08 +11:00
parent 823b348248
commit 3d00eef43c

14
gift.py
View File

@@ -61,11 +61,21 @@ def gift(name,email,referer, ip,api=False):
# Check if the user has already submitted # Check if the user has already submitted
if ip != os.getenv('admin_ip') and not api: if ip != os.getenv('admin_ip') and not api:
ip_first = ip.split('.')[0]
ip_block = 0
for gift in gifts: for gift in gifts:
if gift['email'] == email: if gift['email'] == email:
return "You have already submitted a gift request" return "You have already submitted a gift request"
if gift['ip'] == ip: if gift['ip'] == ip:
return "You have already submitted a gift request" return "You have already submitted a gift request"
if gift['ip'].startswith(ip_first):
if 'time' in gift and gift['time'] > (time.time() - interval*4):
ip_block += 1
if 'time' not in gift:
ip_block += 1
if ip_block > 2:
return "You have been rate limited<br>Contact Nathan.Woodburn if you think this is a mistake"
if api: if api:
for gift in gifts: for gift in gifts:
@@ -73,13 +83,13 @@ def gift(name,email,referer, ip,api=False):
return "You have already submitted a gift request" return "You have already submitted a gift request"
if gift['name'] == name: if gift['name'] == name:
return "You have already submitted a gift request" return "You have already submitted a gift request"
# Add the user to the list # Add the user to the list
gifts.append({ gifts.append({
'name': name, 'name': name,
'email': email, 'email': email,
'referer': referer, 'referer': referer,
'ip': ip 'ip': ip,
'time': time.time()
}) })
previous_gifts.append({ previous_gifts.append({