🛠 Mises à jour sécurisation et nettoyage de Monitor, domo91, scripts MQTT

This commit is contained in:
2025-04-23 09:17:12 +02:00
parent 1821ce44f8
commit 7ad495e28e
5 changed files with 65 additions and 39 deletions

View File

@@ -3,7 +3,10 @@ import mysql.connector
import sys import sys
import os import os
import logging import logging
from datetime import datetime from dotenv import load_dotenv
# Charger les variables d'environnement
load_dotenv()
# 📁 Création du dossier de logs s'il n'existe pas # 📁 Création du dossier de logs s'il n'existe pas
dossier_logs = "/var/log/Cuisine_Meudon" dossier_logs = "/var/log/Cuisine_Meudon"
@@ -28,10 +31,10 @@ logging.getLogger('').addHandler(console)
try: try:
sys.path.insert(0, "/myenv/lib/python3.11.2/site-packages") sys.path.insert(0, "/myenv/lib/python3.11.2/site-packages")
mydb = mysql.connector.connect( mydb = mysql.connector.connect(
host="54.36.188.119", host=os.getenv("DB_HOST"),
user="michel", user=os.getenv("DB_USER"),
password="#SO2&1nf%mZ@jfh", password=os.getenv("DB_PASSWORD"),
database="Sondes" database=os.getenv("DB_NAME")
) )
logging.info("Connexion MySQL réussie.") logging.info("Connexion MySQL réussie.")
except mysql.connector.Error as err: except mysql.connector.Error as err:

View File

@@ -3,7 +3,10 @@ import mysql.connector
import sys import sys
import os import os
import logging import logging
from datetime import datetime from dotenv import load_dotenv
# Charger les variables d'environnement
load_dotenv()
# 📁 Création du dossier de logs s'il n'existe pas # 📁 Création du dossier de logs s'il n'existe pas
dossier_logs = "/var/log/Cuisine_Saclay" dossier_logs = "/var/log/Cuisine_Saclay"
@@ -28,10 +31,10 @@ logging.getLogger('').addHandler(console)
try: try:
sys.path.insert(0, "/myenv/lib/python3.11.2/site-packages") sys.path.insert(0, "/myenv/lib/python3.11.2/site-packages")
mydb = mysql.connector.connect( mydb = mysql.connector.connect(
host="54.36.188.119", host=os.getenv("DB_HOST"),
user="michel", user=os.getenv("DB_USER"),
password="#SO2&1nf%mZ@jfh", password=os.getenv("DB_PASSWORD"),
database="Sondes" database=os.getenv("DB_NAME")
) )
logging.info("Connexion MySQL réussie.") logging.info("Connexion MySQL réussie.")
except mysql.connector.Error as err: except mysql.connector.Error as err:

View File

@@ -1,18 +0,0 @@
# Purge de la table Sondes.Alertes_Saclay.
import mysql.connector
config = {
"host": "54.36.188.119",
"user": "michel",
"password": "#SO2&1nf%mZ@jfh",
"database": "Sondes"
}
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
cursor.execute("DELETE FROM Alertes_Saclay WHERE Debut_defaut < NOW() - INTERVAL 7 DAY")
conn.commit()
cursor.close()
conn.close()
print("✅ Alertes de plus de 7 jours supprimées.")

35
Purge_alertes.py Normal file
View File

@@ -0,0 +1,35 @@
# Purges des entrées de toutes les tables dans la base Sondes qui commencent
# par Alertes_*** et qui sont agées de plus de sept jours.
import mysql.connector
import os
from dotenv import load_dotenv
# Charger les variables d'environnement
load_dotenv()
config = {
"host": os.getenv("DB_HOST"),
"user": os.getenv("DB_USER"),
"password": os.getenv("DB_PASSWORD"),
"database": os.getenv("DB_NAME")
}
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
# Récupérer toutes les tables d'alertes
cursor.execute("SHOW TABLES")
tables = [t[0] for t in cursor.fetchall()]
alertes_tables = [t for t in tables if t.startswith("Alertes_")]
# Appliquer la purge à chaque table
for table in alertes_tables:
query = f"DELETE FROM {table} WHERE Debut_defaut < NOW() - INTERVAL 7 DAY"
cursor.execute(query)
print(f"✅ Table {table} purgée.")
conn.commit()
cursor.close()
conn.close()
print("🎉 Purge terminée pour toutes les alertes anciennes.")

View File

@@ -1,4 +1,5 @@
# Application Gestion de sondes # Application Gestion de sondes
# -*- coding: utf-8 -*-
import streamlit as st import streamlit as st
import mysql.connector import mysql.connector
import pandas as pd import pandas as pd
@@ -9,6 +10,10 @@ from fpdf import FPDF
import os import os
import random import random
import datetime import datetime
from dotenv import load_dotenv
# Charger les variables d'environnement
load_dotenv()
st.set_page_config(page_title="Domo91 - Surveillance", layout="wide") st.set_page_config(page_title="Domo91 - Surveillance", layout="wide")
if "authenticated" not in st.session_state: if "authenticated" not in st.session_state:
@@ -18,21 +23,19 @@ if "authenticated" not in st.session_state:
st.title("📡 Supervision Températures") st.title("📡 Supervision Températures")
# --- Configuration base de données --- db_config ={
db_config = { "host": os.getenv("DB_HOST"),
"host": "54.36.188.119", "user": os.getenv("DB_USER"),
"user": "michel", "password": os.getenv("DB_PASSWORD"),
"password": "#SO2&1nf%mZ@jfh", "database": os.getenv("DB_NAME")
"database": "Sondes"
} }
# --- Fonction de génération PDF --- # --- Fonction de génération PDF ---
def generer_pdf(site, date_str): def generer_pdf(site, date_str):
st.info(f"Génération du rapport PDF pour {site} à la date {date_str}") st.info(f"Génération du rapport PDF pour {site} à la date {date_str}")
try: try:
conn = mysql.connector.connect(**db_config) conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True) pdf_cursor = conn.cursor(dictionary=True)
cursor.execute(f"SELECT Sonde, Date, Temperature FROM `{site}` WHERE DATE(Date) = %s ORDER BY Sonde, Date", cursor.execute(f"SELECT Sonde, Date, Temperature FROM `{site}` WHERE DATE(Date) = %s ORDER BY Sonde, Date",
(date_str,)) (date_str,))
@@ -105,8 +108,8 @@ def generer_pdf(site, date_str):
mime="application/pdf" mime="application/pdf"
) )
except Exception as e: except Exception as err1:
st.error(f"Erreur lors de la génération du PDF : {e}") st.error(f"Erreur lors de la génération du PDF : {err1}")
# --- Initialisation des variables de session --- # --- Initialisation des variables de session ---
@@ -401,7 +404,7 @@ if st.session_state["authenticated"]:
except Exception as e: except Exception as e:
st.error(f"Erreur lors de la récupération des alertes : {e}") st.error(f"Erreur lors de la récupération des alertes : {e}")
except Exception as e: except Exception as err:
st.error(f"Erreur MySQL : {e}") st.error(f"Erreur MySQL : {e}")
if st.session_state["role"] == "superviseur": if st.session_state["role"] == "superviseur":
with st.expander("+ Ajouter une nouvelle chambre froide", expanded=False): with st.expander("+ Ajouter une nouvelle chambre froide", expanded=False):