#!/usr/bin/env python3
import pymysql
import datetime
import os
import glob
 
# Configuração do banco MySQL
DB_HOST = "127.0.0.1"
DB_PORT = 3306
DB_NAME = "andrisoft"
DB_USER = "andrisoft"
DB_PASS = "wan@guard"
 
# Pasta de logs
LOG_DIR = "/var/log"
today = datetime.date.today().strftime("%Y-%m-%d")
logfile = f"{LOG_DIR}/wanguard_events_{today}.log"
 
# --- FILTRO DE MÓDULOS ---
FILTER_MODULES = ["Flow Parser"]  # exemplo: ["Console", "Supervisor"]
 
try:
    # Remove arquivos antigos, mantendo apenas o de hoje
    for old_log in glob.glob(f"{LOG_DIR}/wanguard_events_*.log"):
        if today not in old_log:
            os.remove(old_log)
 
    # Conexão MySQL
    conn = pymysql.connect(
        host=DB_HOST,
        port=DB_PORT,
        user=DB_USER,
        password=DB_PASS,
        database=DB_NAME
    )
    cur = conn.cursor()
 
    # Monta query dependendo do filtro
    if FILTER_MODULES:
        placeholders = ','.join(['%s'] * len(FILTER_MODULES))
        query = f"""
            SELECT module, text
            FROM events
            WHERE module IN ({placeholders})
            ORDER BY id DESC;
        """
        cur.execute(query, FILTER_MODULES)
    else:
        query = "SELECT module, text FROM events ORDER BY id DESC;"
        cur.execute(query)
 
    rows = cur.fetchall()
 
    # Escreve no arquivo de log (sobrescreve, não acrescenta)
    with open(logfile, "w") as f:
        for module, text in rows:
            # Pega data/hora do servidor em UTC
            now_local = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            f.write(f"{now_local} [{module}] {text}\n")
 
    print(f"[OK] Eventos exportados para {logfile}")
 
    cur.close()
    conn.close()
 
except Exception as e:
    print(f"[ERRO] {e}")