mirror of
https://github.com/tgbot-collection/YYeTsBot.git
synced 2025-11-25 11:29:38 +08:00
ban IP rate limit
This commit is contained in:
@@ -99,6 +99,7 @@ def check_spam(ip, ua, author, content) -> int:
|
||||
|
||||
class Cloudflare(Redis):
|
||||
key = "cf-blacklist-ip"
|
||||
expire = "cf-expire"
|
||||
|
||||
def __init__(self):
|
||||
self.account_id = "e8d3ba82fe9e9a41cceb0047c2a2ab4f"
|
||||
@@ -135,9 +136,10 @@ class Cloudflare(Redis):
|
||||
old_ips.append(ip)
|
||||
body = [{"ip": i} for i in set(old_ips)]
|
||||
self.r.set(self.key, json.dumps(body))
|
||||
logging.warning("Adding %s to cloudflare managed challenge list", ip)
|
||||
resp = self.session.put(self.endpoint, json=body)
|
||||
logging.info(resp.json())
|
||||
if not self.r.exists(self.expire):
|
||||
resp = self.session.put(self.endpoint, json=body)
|
||||
logging.info(resp.json())
|
||||
self.r.set(self.expire, 1, ex=60)
|
||||
|
||||
def clear_fw(self):
|
||||
logging.info("Clearing firewall rules")
|
||||
|
||||
@@ -36,10 +36,7 @@ class ResourceHandler(BaseHandler):
|
||||
referer = self.request.headers.get("referer")
|
||||
ip = self.get_real_ip()
|
||||
if not referer:
|
||||
try:
|
||||
cf.ban_new_ip(ip)
|
||||
except Exception as e:
|
||||
logging.error("Failed to ban %s: %s", ip, e)
|
||||
cf.ban_new_ip(ip)
|
||||
if os.getenv("GIFT"):
|
||||
self.set_header("Content-Type", "text/html")
|
||||
self.set_header("Content-Encoding", "gzip")
|
||||
|
||||
@@ -160,7 +160,7 @@ if __name__ == "__main__":
|
||||
scheduler.add_job(sync_douban, trigger=CronTrigger.from_crontab("1 1 1 * *"))
|
||||
scheduler.add_job(entry_dump, trigger=CronTrigger.from_crontab("2 2 1 * *"))
|
||||
scheduler.add_job(Other().import_ban_user, "interval", seconds=300)
|
||||
scheduler.add_job(Cloudflare().clear_fw, trigger=CronTrigger.from_crontab("0 0 * * *"))
|
||||
scheduler.add_job(Cloudflare().clear_fw, trigger=CronTrigger.from_crontab("0 0 * * 1"))
|
||||
scheduler.add_job(YYSub().run, trigger=CronTrigger.from_crontab("0 1 * * *"))
|
||||
|
||||
scheduler.start()
|
||||
|
||||
Reference in New Issue
Block a user