feat: Limit to x gifts per interval
All checks were successful
Build Docker / Build Image (push) Successful in 27s
All checks were successful
Build Docker / Build Image (push) Successful in 27s
This commit is contained in:
parent
27af90fcc6
commit
7bb07dbb9e
@ -13,3 +13,12 @@ docker run -d \
|
|||||||
git.woodburn.au/nathanwoodburn/faucet:latest
|
git.woodburn.au/nathanwoodburn/faucet:latest
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Optional environment variables
|
||||||
|
| Variable | Description | Default |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| admin_ip | IP address to allow multiple gifts sent to |
|
||||||
|
| cookie | Cookie to use for nb-main |
|
||||||
|
| max_price | Maximum price to pay for a domain (in HNS) | 5 |
|
||||||
|
| max_gifts_per_interval | Maximum number of gifts to send per interval | 24 |
|
||||||
|
| interval | Interval to send gifts (in seconds) | 86400 (24 hours) |
|
22
gift.py
22
gift.py
@ -14,11 +14,29 @@ cookies = {"namebase-main": nbcookie}
|
|||||||
nb_endpoint = "https://www.namebase.io/"
|
nb_endpoint = "https://www.namebase.io/"
|
||||||
|
|
||||||
max_price = 5 # Max price to buy a domain at (in HNS)
|
max_price = 5 # Max price to buy a domain at (in HNS)
|
||||||
|
previous_gifts = []
|
||||||
|
max_gifts_per_interval = 24 # Max gifts per interval
|
||||||
|
interval = 60*60*24 # 24 hours
|
||||||
|
|
||||||
|
if os.getenv('max_price') == 'true':
|
||||||
|
max_price = int(os.getenv('max_price'))
|
||||||
|
if os.getenv('max_gifts_per_interval') == 'true':
|
||||||
|
max_gifts_per_interval = int(os.getenv('max_gifts_per_interval'))
|
||||||
|
if os.getenv('interval') == 'true':
|
||||||
|
interval = int(os.getenv('interval'))
|
||||||
|
|
||||||
def gift(name,email,referer, ip):
|
def gift(name,email,referer, ip):
|
||||||
global loaded
|
global loaded
|
||||||
global gifts
|
global gifts
|
||||||
|
global previous_gifts
|
||||||
|
|
||||||
|
recent_gifts = 0
|
||||||
|
for gift in previous_gifts:
|
||||||
|
if previous_gifts['time'] > time.time() - interval:
|
||||||
|
recent_gifts += 1
|
||||||
|
|
||||||
|
if recent_gifts > max_gifts_per_interval and ip != os.getenv('admin_ip'):
|
||||||
|
return "Too many gifts recently<br>Check back in a few minutes"
|
||||||
|
|
||||||
print("Name: " + name,flush=True)
|
print("Name: " + name,flush=True)
|
||||||
print("Email: " + email,flush=True)
|
print("Email: " + email,flush=True)
|
||||||
@ -56,6 +74,10 @@ def gift(name,email,referer, ip):
|
|||||||
'ip': ip
|
'ip': ip
|
||||||
})
|
})
|
||||||
|
|
||||||
|
previous_gifts.append({
|
||||||
|
'time': time.time()
|
||||||
|
})
|
||||||
|
|
||||||
# Save the file
|
# Save the file
|
||||||
with open(path, 'w') as f:
|
with open(path, 'w') as f:
|
||||||
json.dump(gifts, f)
|
json.dump(gifts, f)
|
||||||
|
Loading…
Reference in New Issue
Block a user