mirror of
https://forgejo.altau.su/lego/lego-monitoring.git
synced 2026-03-10 04:41:10 +00:00
delayed login alerts to prevent spam with mass logins
This commit is contained in:
parent
0e177210f6
commit
b1b06b2e51
8 changed files with 100 additions and 7 deletions
25
service.py
25
service.py
|
|
@ -2,11 +2,14 @@
|
|||
import asyncio
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import signal
|
||||
|
||||
from alerting import alerts
|
||||
from alerting import alerts, delayed
|
||||
from misc import checks, cvars
|
||||
from misc.checkers import interval_checker, scheduled_checker
|
||||
from misc.common import TMP_DIR
|
||||
from misc.config import get_config
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
|
@ -19,9 +22,28 @@ def stop_gracefully(signum, frame):
|
|||
stopping = True
|
||||
|
||||
|
||||
def create_temp_dir() -> None:
|
||||
try:
|
||||
os.mkdir(str(TMP_DIR))
|
||||
except FileExistsError:
|
||||
pass
|
||||
os.chmod(str(TMP_DIR), 0o770)
|
||||
try:
|
||||
shutil.chown(str(TMP_DIR), user="root", group="alerting")
|
||||
except LookupError:
|
||||
shutil.chown(str(TMP_DIR), user="root", group="root")
|
||||
with open(str(TMP_DIR / "pid"), "w") as pf:
|
||||
pf.write(str(os.getpid()))
|
||||
|
||||
|
||||
async def main():
|
||||
create_temp_dir()
|
||||
|
||||
signal.signal(signal.SIGTERM, stop_gracefully)
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.add_signal_handler(signal.SIGUSR1, lambda: asyncio.create_task(delayed.handler()))
|
||||
|
||||
cvars.config.set(get_config())
|
||||
|
||||
client = await alerts.get_client()
|
||||
|
|
@ -46,6 +68,7 @@ async def main():
|
|||
while True:
|
||||
if stopping:
|
||||
await client.close()
|
||||
shutil.rmtree(str(TMP_DIR))
|
||||
raise SystemExit
|
||||
else:
|
||||
await asyncio.sleep(3)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue