Configurer l'application
SENéo se configure via des variables d'environnement. Pour être prises en compte
par l'application, elles doivent être préfixées par SENEO_.
Par exemple, pour définir la variable SECRET_KEY, il faut définir la variable
d'environnement SENEO_SECRET_KEY.
La manière dont les variables d'environnement sont définies dépend de
votre environnement de travail. Par exemple, dans un shell Bash, vous
pourrez utiliser le mot clé export :
Les variables de configuration sont documentées directement dans le code. Ci-dessous, une inclusion du fichier définissant les variables de configuration…
# SENéo --- Suivi des services d'enseignements
# Copyright © 2022, 2023 EHESS, Easter-Eggs
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
from typing import Dict, Optional
from pydantic import BaseSettings
class ConfigurationCommune(BaseSettings):
DATA_DSN: str
"La chaîne de connexion de la base utilisées pour stockées les données."
VERBOSE: bool = False
"Pour avoir plus d'information sur les actions qui se sont produites sans erreur."
DEBUG: bool = False
"Pour avoir certains détails nécessaires pour mener des investigations techniques."
# Configuration de la connexion au LDAP
# Afin de pouvoir récupérer les informations des utilisat·rice·eur·s
# lors de leur connexion, il faut interroger un annuaire LDAP.
LDAP_SERVER: str = ""
"L'URL du serveur LDAP."
LDAP_PORT: int = 389
"Le port sur lequel le serveur écoute."
LDAP_SEARCH_BASE: str = ""
"La base pour les recherches."
LDAP_TIMEOUT: int = 1
"Le temps en secondes avant d'abondonner."
class Config:
env_prefix = "SENEO_"
class ConfigurationWsgi(ConfigurationCommune):
SECRET_KEY: str
"""
La valeur de [la *secret key* utilisée par Flask][flask_secret_key].
[flask_secret_key]: https://flask.palletsprojects.com/en/2.1.x/config/#SECRET_KEY
"""
PROXIED: bool = False
"""To let Flask know that it runs behind a proxy.
See: <https://flask.palletsprojects.com/en/2.3.x/deploying/proxy_fix/>.
Make sure the proxy sets the required headers:
- X-Forwarded-For
- X-Forwarded-Host
- X-Forwarded-Server
- X-Forwarded-Proto
- X-Forwarded-SSL
"""
# Configuration du mode maintenance
# En cas de problème, il est possible de désactiver l'application, sans avoir à
# la mettre hors-ligne, en définissant `SENEO_MAINTENANCE`. Toutes les requêtes seront
# redirigées vers la page de maintenance.
MAINTENANCE: Optional[str] = None
"""
La valeur de cette variable sera affichée sur la page de maintenance en complément
du message de base. Ce message complémentaire peut, par exemple, être l'heure estimée
de retour à la normale.
"""
# Configuration de l'authentification *via* le CAS
CAS_SERVER: str = ""
"L'URL du serveur CAS."
CAS_LOGIN_ROUTE: str = ""
"Le chemin de *login* sur le serveur CAS."
CAS_LOGOUT_ROUTE: str = ""
"Le chemin de *logout* sur le serveur CAS."
CAS_VALIDATE_ROUTE: str = ""
"Le chemin de validation sur le serveur CAS."
CAS_AFTER_LOGOUT: str = ""
"L'URL de redirection après déconnexion sur le serveur CAS."
# Configuration de la configuration à Sentry
# [Sentry](https://sentry.io/) est une service de supervision d'application
# et de suivi de *bug*.
SENTRY_URL: str = ""
"L'URL de connexion au service Sentry."
SENTRY_SAMPLE_RATE: float = 1.0
"La fréquence de remontée des erreurs (`0.25` est égal à 25%)."
SENTRY_TRACES_SAMPLE_RATE: float = 0.0
"La fréquence de remontée des traces (`0.25` est égal à 25%)."
class ConfigurationCli(ConfigurationCommune):
# Configuration de l'envoi de courriels
SMTP_HOST: str = ""
"Le nom du serveur SMTP."
SMTP_PORT: int = 25
"Le port sur lequel écoute le serveur SMTP."
SMTP_BCC: str = ""
"L'adresse ajoutée en copie-cachée de tous les courriels."
SMTP_FROM: str = ""
"L'adresse affichée comme ayant envoyé le courriel."
SMTP_NOREPLY: str = ""
"L'adresse utilisée comme `FROM` pour les courriels n'attendant pas de réponse."
# Configuration de l'import des données de Néobab
# [Néobab](https://gitlab.easter-eggs.com/cst-ees/neobab) est le système
# de gestion [des enseignements de l'EHESS](https://enseignements.ehess.fr).
NEOBAB_URL: str = "https://enseignements.ehess.fr"
"L'URL de Néobab."
# Configuration de l'import des données de SIHAM
SIHAM_USER: str = ""
"L'identifiant de connexion à la base Oracle de SIHAM."
SIHAM_PASSWORD: str = ""
"Le mot de passe de connexion à la base Oracle de SIHAM."
SIHAM_DSN: str = ""
"Le nom de la source de données pour la connexion à la base Oracle de SIHAM."
def read_cli_config() -> Dict[str, str]:
try:
return ConfigurationCli().dict()
except Exception as exc:
print(exc)
sys.exit(1)
def read_wsgi_config() -> Dict[str, str]:
try:
return ConfigurationWsgi().dict()
except Exception as exc:
print(exc)
sys.exit(1)