Portail / Sujets autour de la programmation / Programmation C/C++ sous Linux / Serveur d'application avec Qt 6 / Documentation technique(Sommaire)

Configuration du serveur d'application.

Mise à jour du 05/08/2024.

Le serveur d'application dispose de sa propre configuration et référence les fichiers de configuration de toutes les applications qu'il exécute. Ce document dresse la liste des paramètres "standardisés" du fichier de configuration du serveur ainsi que celle des applications. Il existe actuellement deux ressources avec descripteurs "standards" : le système d'historisation et le gestionnaire de connexions SQL PgManager.

Configuration du serveur.

# Configuration du serveur d'application (v1.0.0)
# (c) Jean-Marie Piatte

# Paramètres spécifiques au serveur
# =================================
server.address=         (facultatif : 0.0.0.0) [chaîne] Adresse ou alias IP du serveur HTTP.
server.port=            (facultatif : 4443) [ushort] Port d'écoute du serveur HTTP.
server.certificate=     (obligatoire) [chaîne] Nom du fichier qui continet le certificat X509 d'identifiaction du 
                                      serveur (format PEM).
server.selfSignAllowed= (facultatif : true) [bool] Autorisation d'emploi d'un certificat auto-signé.
server.expiredAllowed=  (facultatif : true) [bool] Autorisation d'emploi d'un certificat expiré.
server.key=             (obligatoire) [chaîne] Nom du fichier qui contient la clef privée de chiffrement du serveur
                                      (format PEM).
server.keyPassword=     (facultatif : "") [chaîne] Mot de passe d'accès à la clef privée.
serev.key.algorithm=    (facultatif : rsa) [chaîne] {rsa, dsa, ec, dh, opaque} algorithme de chiffrement de la clef
                                      (Let's Encrypt utilise généralement 'ec' et non 'rsa').
server.signature=       (facultatif : "PiApplications Application Server") (chaîne) Signature du serveur.

Remarque : [bool] accepte les valeurs "0" (false) ou "1" (true).

# Paramètres spécifiques à l'agent de sécurité (ici pour l'agent de classe SecurityAgent)
# ============================================
agent.class=             (facultatif : SecurityAgent) [chaîne] Nom de la classe instanciable qui représente l'agent
                         de securité.
agent.filename=          (facultatif) (chaîne) préfixe des noms de fichiers journaux (avec chemin).
                         Si ce paramètre est absent, les autres sont ignorés et les rejets seront tracés sur la
                         système d'historisation global.
agent.maxsize=           (facultatif : 1) taille maximale (en mio) d'un fichier journal avant rotation.
agent.kept=              (facultatif : 10) (uint > 0) nombre de fichiers à conserver.
agent.filter=            (facultatif : warn) (chaîne parmi les valeur {debug|info|warn|error|fatal}) : niveau de 
                         filtrage des traces.
agent.timeout=           (facultatif : 7) (uint) durée de vie maximale (en jours) d'un fichier journal avant
                         rotation.
agent.tee=               (facultatif : 0) (chaîne parmi les valeurs {0|1}) dédoublement des traces sur la console.
agent.banner.title=      (facultatif) (chaîne) titre de la bannière inscrite après l'initialisation du système de 
                         journalisation&. Si ce paramètre est omis, il n'y aura pas de bannière affichée.
agent.rule.1=            (facultatif) [chaîne] format 
                         "{nom de la règle}:{expression régulière}:{origine [url | query | headers]}"
...
agent.rule.{N}=          (facultatif) [chaîne] Nième règle.


# Liste des ressources globales partagées par toutes les applications
# ===================================================================
# Descripteur d'un système d'historisation (porte toujours sur le système d'historisation global [singleton])
# ----------------------------------------
log.filename=          (facultatif) (chaîne) préfixe des noms de fichiers journaux (avec chemin).
                       Si ce paramètre est absent, les autres sont ignorés et le journal sera tracé sur la console.
log.maxsize=           (facultatif : 1) taille maximale (en mio) d'un fichier journal avant rotation.
log.kept=              (facultatif : 10) (uint > 0) nombre de fichiers à conserver.
log.filter=            (facultatif : warn) (chaîne parmi les valeur {debug|info|warn|error|fatal}) : niveau de filtrage 
                       des traces.
log.timeout=           (facultatif : 7) (uint) durée de vie maximale (en jours) d'un fichier journal avant
                       rotation.
log.tee=               (facultatif : 0) (chaîne parmi les valeurs {0|1}) dédoublement des traces sur la console.
log.banner.title=      (facultatif) (chaîne) titre de la bannière inscrite après l'initialisation du système de 
                       journalisation&. Si ce paramètre est omis, il n'y aura pas de bannière affichée.
log.banner.properties= (facultatif) (chaîne parmi les valeurs {0|1}) affichage des propriétés de la configuration dans
                       la bannière et sous son titre.
mitm.table=            (facultatif) Nom du fichier qui contient le table des échanges. Si ce paramètre n'est pas défini
                       le contenu des échanges (en-têtes et corps des blocs HTTP) ne sont pas sauvegardés sur disque. 

# Descripteur d'un gestionnaire de connexions au SGBD
# (lorsqu'une même base est partagée par plusieurs applications)
# --------------------------------------------------------------
psql.host=            (facultatif : localhost) alias ou adresse IP du serveur de données.
psql.port=            (facultatif : 5432) alias ou adresse IP du serveur de données.
psql.schema=          (obligatoire) Nom du schéma de la base de données.
psql.account=         (obligatoire) Identifiant du compte d'accès à la base de données.
psql.password=        (obligatoire) Mot de passe (en clair ou chiffré) du compte d'accès à la base de données.
psql.encrypted=       (facultatif : 0) Etat de chiffrement du mot d epasse (0 | 1).
psql.tls=             (facultatif : 0) (chaîne parmi les valeurs {0|1}) Utilisation du chiffrement de la communication
                      (inutilisé actuellement)

# Descripteur des applications
# ----------------------------
app.1.name=            (obligatoire) Nom de l'application (à reprendre dans la configuration de cette application)
app.1.configFile=      (obligatoire) Nom du fichier de configuration de l'application
app.1.lib=             (facultatif) Nom du fichier qui contient la librairie des classes instanciables
                       (dont classes des services). Librairie webapp si omis.
app.1.class=           (obligatoire) Nom de la classe de l'application (dérivée de IInstanc).
...
app.{N}.name=
app.{N}.configFile=
app.{N}.classes=
app.{N}.appClass=

Remarque : {N} est le N° de la plus grande séquence. Les valeurs doivent se suivre (incrément 1) de 1 à N.

    

Configuration d'une application.

# Configuration d'une application (v1.0.0)
# (c) Jean-Marie Piatte

# Paramètres propres à l'application et indépendants des services
# ---------------------------------------------------------------
name=                 (obligatoire) [chaîne] Nom complet de l'application : doit correspondre au nom déclaré dans la 
                      configuration du serveur.
cookieName=           (facultatif : nom réduit au 8 premières lettres rencontrées dans le nom complet) [chaîne] nom du
                      cookie de suivi de session.
description=          (facultatif) [chaîne] Description sommaire de l'application.
route=                (obligatoire) [chaîne] Chemin de l'URL qui commute vers l'application.
maxSessions=          (facultatif : 20) [uint] Nombre maximum de sessions actives.
sessionTimeout=       (facultatif : 30) [ushort] Délai maximum d'inactivité d'une session en minutes.

Remarque : si une route est identique à une application déjà initialisée, le lancement échoue.

# Descripteur d'un système d'historisation (porte toujours sur un système d'historisation local)
# ----------------------------------------
log.filename=          (facultatif) [chaîne] préfixe des noms de fichiers journaux (avec chemin).
                       Si ce paramètre est absent, les autres sont ignorés et le journal sera tracé sur la console.
log.maxsize=           (facultatif : 1) [uint] taille maximale (en mio) d'un fichier journal avant rotation.
log.kept=              (facultatif : 10) [uint > 0] nombre de fichiers à conserver.
log.filter=            (facultatif : warn) [chaîne parmi les valeur {debug|info|warn|error|fatal}] : niveau de filtrage 
                       des traces.
log.timeout=           (facultatif : 7) [uint > 0] durée de vie maximale (en jours) d'un fichier journal avant
                       rotation.
log.tee=               (facultatif : 0) [ushort parmi les valeurs {0|1}] dédoublement des traces sur la console.
log.banner.title=      (facultatif) [chaîne] titre de la bannière inscrite après l'initialisation du système de 
                       journalisation. Si ce paramètre est omis, il n'y aura pas de bannière affichée.
log.banner.properties= (facultatif) [ushort parmi les valeurs {0|1}] affichage des propriétés de la configuration dans
                       la bannière et sous son titre.

Remarque : aucun des fichiers journal ne doit être identique (y compris avec le journal global s'il est défini).

# Descripteur d'un gestionnaire de connexions au SGBD
# ---------------------------------------------------
psql.host=            (facultatif : localhost) alias ou adresse IP du serveur de données.
psql.port=            (facultatif : 5432) alias ou adresse IP du serveur de données.
psql.schema=          (obligatoire) Nom du schéma de la base de données.
psql.account=         (obligatoire) Identifiant du compte d'accès à la base de données.
psql.password=        (obligatoire) Mot de passe (en clair ou chiffré) du compte d'accès à la base de données.
psql.tls=             (facultatif : 0) (uint parmi les valeurs {0|1}) Utilisation du chiffrement de la communication
                      (inutilisé actuellement)
    

Configuration de l'application WebSite.

# Configuration de l'application WebSite (v1.0.0)
# (c) Jean-Marie Piatte

# Descripteur d'un système d'historisation (porte toujours sur un système d'historisation local)
# ----------------------------------------
log.filename=          (facultatif) [chaîne] préfixe des noms de fichiers journaux (avec chemin).
                       Si ce paramètre est absent, les autres sont ignorés et le journal sera tracé sur la console.
log.maxsize=           (facultatif : 1) [uint] taille maximale (en mio) d'un fichier journal avant rotation.
log.kept=              (facultatif : 10) [uint > 0] nombre de fichiers à conserver.
log.filter=            (facultatif : warn) [chaîne parmi les valeur {debug|info|warn|error|fatal}] : niveau de filtrage 
                       des traces.
log.timeout=           (facultatif : 7) [uint > 0] durée de vie maximale (en jours) d'un fichier journal avant
                       rotation.
log.tee=               (facultatif : 0) [ushort parmi les valeurs {0|1}] dédoublement des traces sur la console.
log.banner.title=      (facultatif) [chaîne] titre de la bannière inscrite après l'initialisation du système de 
                       journalisation. Si ce paramètre est omis, il n'y aura pas de bannière affichée.
log.banner.properties= (facultatif) [ushort parmi les valeurs {0|1}] affichage des propriétés de la configuration dans
                       la bannière et sous son titre.

# Description des chemins de commutation
# --------------------------------------
site.context.1=        (obligatoire) [chaîne] debut de chemin permettant la commutation vers le site
site.path.1=           (obligatoire) [chaîne] Chemin ou URL (http|https) de la racine du site
...
site.path.{N}=
site.context.{N}=

Remarque : {N} est le N° de la plus grande séquence. Les valeurs doivent se suivre (incrément 1) de 1 à N.
        

Rédaction par Jean-Marie Piatte (1983-2021)