Modification de la détection de l'environnement

This commit is contained in:
Stéphan Peccini 2025-05-15 07:45:13 +02:00
parent ecb332d2aa
commit d45fdae408
4 changed files with 55 additions and 14 deletions

1
.env
View File

@ -1,4 +1,3 @@
ENV = "public"
ENV_CODE = "dev" ENV_CODE = "dev"
PORT=8501 PORT=8501
DOT_FILE = "schema.txt" DOT_FILE = "schema.txt"

View File

@ -34,17 +34,33 @@ Le fichier **.env.local** qui contient GITEA_TOKEN n'est pas dans le dépôt car
Pour l'environnement de pré-production, (https://fabnum-dev.peccini.fr)[https://fabnum-dev.peccini.fr] : Pour l'environnement de pré-production, (https://fabnum-dev.peccini.fr)[https://fabnum-dev.peccini.fr] :
ENV=dev ENV_CODE = "dev"
PORT=8502 PORT=8502
DOT_FILE = "schema.txt"
GITEA_URL = "https://fabnum-git.peccini.fr/api/v1" GITEA_URL = "https://fabnum-git.peccini.fr/api/v1"
ORGANISATION = "fabnum" ORGANISATION = "fabnum"
DEPOT_FICHES = "fiches" DEPOT_FICHES = "fiches"
DEPOT_CODE = "code"
ID_PROJET = "3"
INSTRUCTIONS = "Instructions.md"
FICHE_IHH = "Fiches/Criticités/Fiche technique IHH.md"
FICHE_ICS = "Fiches/Criticités/Fiche technique ICS.md"
FICHE_ISG = "Fiches/Criticités/Fiche technique ISG.md"
FICHE_IVC = "Fiches/Criticités/Fiche technique IVC.md"
Pour l'environnement de production, (https://fabnum.peccini.fr)[https://fabnum.peccini.fr], le fichier est identique sauf pour : Pour l'environnement de production, (https://fabnum.peccini.fr)[https://fabnum.peccini.fr], le fichier est identique sauf pour :
ENV=public
PORT=8501 PORT=8501
La différence entre les deux environnements se fait au travers de la configuration du proxy Nginx (ici celle de dev ; il suffit de changer dev en public pour l'environnement de production) :
# Ajout d'un en-tête personnalisé pour indiquer l'environnement
add_header X-Environment "dev" always;
# Transmettre l'en-tête d'environnement au backend
proxy_set_header X-Environment "dev";
Cette configuration est utilisée par config.py.
dev et public sont les deux branches officielles du dépôt. dev et public sont les deux branches officielles du dépôt.
L'application se lance simplement sous la forme : L'application se lance simplement sous la forme :
@ -66,12 +82,10 @@ Pour automatiser le lancement, il est intégré dans systemd :
[Service] [Service]
User=fabnum User=fabnum
WorkingDirectory=/home/fabnum/fabnum-dev WorkingDirectory=/home/fabnum/fabnum-dev
ExecStart=/home/fabnum/fabnum-dev/venv/bin/streamlit run /home/fabnum/fabnum-dev/fa ExecStart=/home/fabnum/fabnum-dev/venv/bin/streamlit run /home/fabnum/fabnum-dev/fabnum.py --server.port 8502
bnum.py
Restart=always Restart=always
RestartSec=5 RestartSec=5
Environment=PYTHONUNBUFFERED=1 Environment=PYTHONUNBUFFERED=1
SELinuxContext=system_u:system_r:httpd_t:s0
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

View File

@ -1,15 +1,35 @@
import os import os
import streamlit as st
from dotenv import load_dotenv from dotenv import load_dotenv
load_dotenv(".env") load_dotenv(".env")
load_dotenv(".env.local", override=True) load_dotenv(".env.local", override=True)
# Fonction pour déterminer l'environnement à partir de l'en-tête X-Environment
def determine_environment():
# Valeur par défaut (si aucun en-tête n'est détecté)
environment = "dev"
# Si nous sommes dans une session Streamlit
if hasattr(st, 'context') and hasattr(st.context, 'headers'):
try:
# Lire directement l'en-tête X-Environment défini par Nginx : dev/public
nginx_env = st.context.headers.get("x-environment")
if nginx_env:
environment = nginx_env.lower()
except Exception as e:
st.error(f"Erreur lors de la lecture de l'en-tête X-Environment: {e}\nEnvironnement dev par défaut")
return environment
ENV = determine_environment()
GITEA_URL = os.getenv("GITEA_URL", "https://fabnum-git.peccini.fr/api/v1") GITEA_URL = os.getenv("GITEA_URL", "https://fabnum-git.peccini.fr/api/v1")
GITEA_TOKEN = os.getenv("GITEA_TOKEN", "") GITEA_TOKEN = os.getenv("GITEA_TOKEN", "")
ORGANISATION = os.getenv("ORGANISATION", "fabnum") ORGANISATION = os.getenv("ORGANISATION", "fabnum")
DEPOT_FICHES = os.getenv("DEPOT_FICHES", "fiches") DEPOT_FICHES = os.getenv("DEPOT_FICHES", "fiches")
DEPOT_CODE = os.getenv("DEPOT_CODE", "code") DEPOT_CODE = os.getenv("DEPOT_CODE", "code")
ENV = os.getenv("ENV")
ENV_CODE = os.getenv("ENV_CODE") ENV_CODE = os.getenv("ENV_CODE")
DOT_FILE = os.getenv("DOT_FILE") DOT_FILE = os.getenv("DOT_FILE")
INSTRUCTIONS = os.getenv("INSTRUCTIONS", "Instructions.md") INSTRUCTIONS = os.getenv("INSTRUCTIONS", "Instructions.md")

View File

@ -1,4 +1,12 @@
import streamlit as st import streamlit as st
st.set_page_config(
page_title="Fabnum Analyse de chaîne",
page_icon="assets/weakness.png", # ajout
layout="centered",
initial_sidebar_state="expanded"
)
import re import re
# Configuration Gitea # Configuration Gitea
@ -69,13 +77,6 @@ from app.visualisations import interface_visualisations
from app.personnalisation import interface_personnalisation from app.personnalisation import interface_personnalisation
from app.analyse import interface_analyse from app.analyse import interface_analyse
st.set_page_config(
page_title="Fabnum Analyse de chaîne",
page_icon="assets/weakness.png", # ajout
layout="centered",
initial_sidebar_state="expanded"
)
# Initialisation des traductions (langue française par défaut) # Initialisation des traductions (langue française par défaut)
init_translations() init_translations()
@ -84,6 +85,13 @@ set_language("fr")
session_id = st.context.headers.get("x-session-id") session_id = st.context.headers.get("x-session-id")
#
# Important
# Avec Selinux, il faut mettre les bons droits :
#
# sudo semanage fcontext -a -t var_log_t '/var/log/nginx/fabnum-public\.access\.log'
# sudo restorecon -v /var/log/nginx/fabnum-public.access.log
#
def get_total_bytes_for_session(session_id): def get_total_bytes_for_session(session_id):
total_bytes = 0 total_bytes = 0
try: try: