Aller à : navigation, rechercher

Maarch RM/Configuration

Cette section détaille les différentes options de configuration de Maarch RM à deux niveaux:

  • l'instance de l'application publiée
  • le comportement des paquets métier et des dépendances à l'appel

En fonction de la portée des directives, on verra qu'elles se classent en trois familles :

  • celles qui doivent (must) être adaptées pour correspondre à l'environnement d'exécution
  • celles qui peuvent (may) être adaptées
  • celles qui ne doivent pas (must not) être adaptées car elles définissent le comportement de l'application Maarch RM par opposition à d'autres applications

Sommaire

Application publiée

Mode de configuration

La publication de l'application nécessite d’établir une configuration à l’exécution pour l’instance présentée. Le mode de définition de ces variables dépend du mode d’exécution et du système d’exploitation :

InterfaceMode de définition
http ApacheCommande SETENV de l’hôte dans la configuration
http IISConfiguration de FastCGI dans IIS Manager
Ligne de commande WindowsCommande SET dans le script shell
Ligne de commande LinuxCommande EXPORT dans le script shell

Liste des directives de configuration

LAABS_INSTANCE_NAME

Nom de l'instance d'application.

Cette valeur définit un espace de nom utilisé pour le stockage d'informations et assurer le cloisonnement des données conservées par l'application. Il est utilisé notamment pour préfixer les identifiants générés par l'application pour les propriétés des objets utilisant le type "id" du modèle de données, mécanisme qui permet de renforcer l'unicité des identifiants, notamment dans le cas de consolidation des données de plusieurs instances dans un même référentiel.

Ce paramètre est aussi obligatoire lorsque le cache mémoire est utilisé, car il préfixe systématiquement le nom de la donnée à inscrire dans le cache, là encore pour éviter les collisions de nom dans le cas où le serveur de cache mémoire serait partagé entre plusieurs instance. S'il est omis, la gestion du cache mémoire ne sera pas activée.

La valeur est aussi utilisée pour identifier le domaine de validité des jetons générés par le framework. Un jeton n'est valable que pour un domaine donc un nom d'instance afin de sécuriser les informations et d'éviter qu'un jeton ne puisse être utilisé dans un autre domaine s'il venait à être volé.

Un même nom d'instance peut être utilisé par plusieurs serveurs d'application, ce qui présente même un avantage lorsque les instances des différents serveurs publient une même application, dans le cas d'une architecture distribuée par exemple. Les instances publiées peuvent ainsi partager les mêmes entrées du cache mémoire et valider les mêmes jetons – il faut alors évidemment qu'ils utilisent une même clé de chiffrement (voir LAABS_CRYPT_KEY).

Cette directive peut être adaptée pour nommer spécifiquement votre instance au lieu d'utiliser le nom maarchRM par défaut.

LAABS_BUNDLES

Liste des noms des paquets métier utilisés par l'application, séparée par un point-virgule.

Cette valeur est utilisée pour déterminer les noms des répertoires de bundles, de base et éventuellement étendus (voir LAABS_EXTENSION) à utiliser parmi les paquets installés ainsi que les espaces de noms associés dans le code applicatif.

Cette directive peut être adaptée pour ajouter des paquets spécifiques à un dictionnaire de données pour les métadonnées descriptives des archives par exemple, mais il n'est pas possible d'enlever des paquets car tous ceux déclarés sont nécessaires à l'exécution de Maarch RM.

LAABS_DEPENDENCIES

Liste noms des dépendances techniques utilisées par l'application, séparée par un point-virgule.

Cette valeur est utilisée pour déterminer les noms des répertoires de dépendance à utiliser parmi les dépendances installées ainsi que les espaces de noms associés dans le code applicatif.


Cette directive peut être adaptée pour ajouter des dépendances utilisées dans des personnalisations ou paquets ajoutés par exemple, mais il n'est pas possible d'enlever des dépendances car toutes celles déclarées sont nécessaires à l'exécution de Maarch RM.

LAABS_PRESENTATION

Nom de la couche de présentation utilisée. Cette valeur est utilisée pour déterminer le nom du répertoire de présentation à utiliser parmi les IHMs installées ainsi que les espaces de nom associés dans le code applicatif.

Elle permet au frontal de déterminer quel noyau utiliser: La présence d'une valeur a pour corollaire l'utilisation du noyau de présentation pour le traitement des requêtes qui sont alors des commandes utilisateur. En l'absence de valeur, c'est le noyau de service qui sera invoqué et effectuera les traitements en considérant la requête comme un appel à service.

Cette directive peut être supprimée afin de publier une instance de l'application à destination des clients de service web.

LAABS_EXTENSIONS

Liste des noms des extensions de code source utilisées par l'application, séparée par un point-virgule.

Cette valeur est utilisée pour déterminer les noms des répertoires d'extension à utiliser parmi les extensions installées ainsi que les espaces de noms associés dans le code applicatif. L'ordre des répertoires définit la hiérarchie des extensions, du niveau le plus haut (le dernier enfant en premier) au plus bas (le premier ancêtre en dernier).

Cette directive peut être renseignée si une couche de personnalisation est développée pour les paquets ou la présentation activée.

LAABS_PHP_INI

Chemin du fichier qui contient les directives d'initialisation de PHP qui seront définies à l'exécution.

Ce fichier ne peut contenir que des directives dont la valeur est modifiable par l'utilisateur dans un script PHP par la commande ini_set(). Les directives qu'il contient sont toutes définies à l'initialisation du cœur du framework.

Voir la documentation http://php.net/manual/en/configuration.changes.modes.php

Cette directive peut être renseignée pour modifier le comportement de PHP à l'exécution pour l'instance, par exemple pour augmenter la mémoire utilisable ou la durée maximale d'exécution, etc.

LAABS_CONFIGURATION

Chemin du fichier de configuration des paquets métier et dépendances.

Ceci permet de publier une ou plusieurs instances d'applications différentes ou de la même application sur un seul serveur applicatif, chaque instance démarrant avec un fichier de configuration qui lui est propre. A l'inverse, deux instances publiées par deux serveurs applicatifs peuvent utiliser un même fichier de configuration (soit partagé, soit maintenu à l'identique localement sur les deux serveurs) et ainsi publier la même application avec la même configuration. Laabs permettant de développer des applications RESTful donc "stateless" et orientées service, ceci permet de déployer facilement des architectures distribuées pour la répartition de charge et la haute-disponibilité.

Cette directive peut être modifiée pour préciser un fichier de configuration différent du livrable de base.

LAABS_CONTENT_TYPES

Liste des types de contenus gérés par l'application, séparés par un point-virgule.

Chaque type est déclaré par un nom, suivi de deux points puis de la liste des types MIME correspondants séparés par une virgule, par exemple:

type1:mime1,mime2,…;type2:mime3,mime4;…

Cette variable définit des noms de types de données correspondant à des technologies ou des familles de formats (Html, Json, Xml, Pdf, etc.) et les associe à des types MIME. Cette directive permet de déterminer le composant technique de présentation à utiliser en fonction notamment des types MIME précisés dans les requêtes pour interpréter le contenu du corps (http Content-Type) et présenter le contenu de réponse attendu (http Accept).

Cette directive peut être modifiée pour ajouter des types de contenus gérés notamment par les composants d'interprétation et de sérialisation de la couche de service.

LAABS_CACHE_CONTROL

Contrôle du cache du navigateur pour les ressources statiques utilisées par les clients http.

LAABS_LOG

Chemin du fichier de trace du framework.

Le framework inscrit dans ce fichier les événements techniques et les informations de débogage. S'il n'existe pas, le répertoire et le fichier seront créés. Par défaut la sortie standard du système est utilisée.

Cette directive peut être modifiée pour préciser un chemin de fichier de sortie pour les traces techniques, au lieu de la sortie par défaut du système.

LAABS_TMP_DIR

Chemin du répertoire temporaire de l'instance d'application.

Le framework utilise ce répertoire pour créer les fichiers de travail temporaires pour l'instance de l'application. Il peut être différent pour l'instance client/serveur http et les instances des travaux par lot. S'il n'existe pas, le répertoire sera créé. Par défaut le répertoire temporaire du système est utilisé.

Cette directive peut être modifiée pour préciser un chemin de répertoire temporaire spécifique à l'application.

LAABS_DATE_FORMAT, LAABS_TIMESTAMP_FORMAT

Respectivement le format des dates et des horodatages dans l'application.

Il définit comment les données de type date et horodatage seront représentées sous leur forme de chaîne de caractères, pour la présentation à l'utilisateur ainsi que pour les écritures dans les couches de persistance. On utilise le format PHP tel que défini pour la fonction date_format(). Par défaut les dates sont formatées selon la norme ISO-8601.

Voir la documentation http://php.net/manual/en/datetime.formats.php.

Cette directive peut être modifiée pour préciser un format autre que celui par défaut JJ/MM/AAAA par exemple.

LAABS_NUMBER_DECIMALS, LAABS_NUMBER_DECIMAL_SEPARATOR, LAABS_NUMBER_THOUSANDS_SEPARATOR

Respectivement le nombre de décimales, le séparateur décimal et le séparateur de milliers pour les données de type nombre de l'application.

Ces variables définissent comment les données de type nombre seront représentées sous leur forme de chaîne de caractères, pour la présentation à l'utilisateur ainsi que pour les écritures dans les couches de persistance. Par défaut les nombres seront représentés avec un point comme séparateur décimal, par de séparateur de milliers et toutes les décimales significatives.

LAABS_XML_ENCODING

Encodage des données de type XML.

Il définit l'encodage à utiliser pour les données de type XML de l'application. Par défaut l'UTF-8 est utilisé.

LAABS_XML_NS

Mappage des espaces de nom du domaine XML avec les espaces de nom de l'application.

Chaque espace de nom Laabs est suivi de deux points puis de la liste des espaces de nom XML correspondants séparés par une virgule, par exemple:

Ns_laabs1:ns_xml1,ns_xml2,…;nsLaabs2:ns_xml3,ns_xml4;…

Cette directive permet à certains composants techniques et métier de déterminer quels autres composants adresser dans le traitement de contenus XML, en faisant le lien entre l'espace de nom du nœud XML et le paquet métier à utiliser.

Cette directive peut être modifiée pour préciser un nouveau lien entre un paquet métier un espace de nom XML, notamment pour le traitement de données de description dans les messages MEDONA.

LAABS_ERROR_HANDLER

Méthode de gestion des erreurs.

Elle identifie la méthode qui sera exécutée pour le traitement des erreurs renvoyées par le code php. Si omise, aucune méthode n'est appelée et les erreurs sont directement renvoyées au gestionnaire de sortie, éventuellement temporisée si la temporisation de sortie est activée par la directive LAABS_BUFFER_MODE. Laabs livre un gestionnaire d'erreur par défaut avec la méthode "laabs::errorHandler", qui peut être utilisé en déclarant la variable d'environnement sans préciser de valeur.

LAABS_EXCEPTION_HANDLER

Méthode de gestion des exceptions.

Elle identifie la méthode qui sera exécutée pour le traitement des exceptions renvoyées par le code php et non interceptées par le code métier (exceptions de logique métier). Si omise, aucune méthode n'est appelée et les exceptions sont directement renvoyées au gestionnaire de sortie, éventuellement temporisée si la temporisation de sortie est activée par la directive LAABS_BUFFER_MODE. Laabs livre un gestionnaire d'exception par défaut avec la méthode "laabs::exceptionHandler", qui peut être utilisé en déclarant la variable d'environnement sans préciser de valeur.

LAABS_BUFFER_MODE, LAABS_BUFFER_CALLBACK

Respectivement le mode d'utilisation et le nom d'une fonction de rappel pour la temporisation de sortie PHP.

La première peut prendre 3 valeurs :

  • 0 – Aucune temporisation de sortie n'est activée. Toutes les sorties du code sont dirigées immédiatement vers la sortie standard prévue. Valeur par défaut.
  • 1 – La temporisation de sortie est activée, le noyau récupèrera le contenu du tampon afin de l'inclure dans la réponse.
  • 2 – La temporisation de sortie est activée, le noyau effacera le contenu du tampon et ne l'inclura pas dans la réponse.

La seconde, facultative, désigne une fonction qui sera appelée au moment de la récupération du contenu du tampon de sortie.

Voir la documentation PHP http://php.net/manual/en/function.ob-start.php.

LAABS_MEMCACHE_SERVER, LAABS_MEMCACHE_EXPIRE

Respectivement l'adresse d'un serveur Memcached à utiliser pour la mise en cache des données PHP, au format <nom_ou_ip_serveur>:<port> et le délai d'expiration par défaut des données du cache.

Le cœur de Laabs utilise la mise en cache lorsque disponible pour la configuration et les instances de certains composants afin d'améliorer les performances.

LAABS_AUTOLOAD

Méthode de chargement automatique des classes.

Si omis, la méthode laabs::autoload est utilisée.

LAABS_CRYPT_CIPHER, LAABS_CRYPT_KEY

Respectivement la méthode de chiffrement et la clé de chiffrement.

Ces valeurs sont utilisées notamment pour la production des jetons échangés avec les clients internet et les clients de services, et plus largement lorsque Laabs effectue des chiffrements de données pour leur échange avec des systèmes tiers.

La directive LAABS_CRYPT_KEY doit être modifiée afin que la clé de chiffrement des jetons de sécurité soit unique pour votre environnement.

Bundle

Cette section décrit les différentes possibilités de configuration des bundles de l'application.

Sécurité

Règle de sécurité

Les règles de sécurité de connexion se paramètrent en définissant l'objet "securityPolicy" dans le fichier de configuration. Cet objet ce présente sous la forme suivante :

securityPolicy = "{
    'loginAttempts' : 2,
    'passwordValidity' : 'P1Y',
    'passwordMinLength' : 8,
    'passwordRequiresSpecialChars' : 0,
    'passwordRequiresDigits' : On,
    'passwordRequiresMixedCase' : true,
    'sessionTimeout' : 3600,
}"
  • "loginAttempts" : Il prend comme valeur un entier qui représente le nombre de connexion infructueuse avant de bloquer le compte utilisateur concerné. Si la valeur est 0, ce paramètre sera ignoré.
  • "passwordValidity" : Il définit une durée de validité des mots de passe des utilisateurs. Lorsqu'un mot de passe a dépassé la durée de validité, l'utilisateur est invité à saisir un nouveau mot de passe. La valeur doit être de type DateInterval. Ce paramètre n'est pas pris en compte si sa valeur est 0.
  • "passwordMinLength" : Il permet de définir la taille minimum d'un mot de passe. La valeur est un entier. Le paramètre est ignoré si cette valeur est 0.
  • "passwordRequiresSpecialChars" : Ce paramètre permet d'imposer des caractères non alphanumériques dans les mots de passe. Les valeurs possibles sont les suivantes : On|Off, 0|1, true|false.
  • "passwordRequiresDigits" : Ce paramètre permet de forcer l'utilisation de chiffres dans un mot de passe. Les valeurs possibles sont les suivantes : On|Off, 0|1, true|false.
  • "passwordRequiresMixedCase" : Ce paramètre permet de forcer l'utilisation de majuscule et de minuscule dans un mot de passe. Les valeurs possibles sont les suivantes : On|Off, 0|1, true|false.
  • "sessionTimeout" : Il prend en paramètre un entier qui permet de définir la durée en seconde pendant laquelle une session est active lorsqu'un utilisateur est inactif. Une fois ce temps dépassé, l'utilisateur devra se reconnecter.

Algorithme de hachage des mots de passe

La fonction de hachage pour les mots de passe se définit avec le paramètre "passwordEncryption". Il prend comme valeur le nom de la fonction de hachage (md5, sha1, sha256, sha512...)

Ressource numérique (digitalResource)

Algorithme de hachage

La fonction de hachage pour l'empreinte numérique se définit avec le paramètre "hashAlgorithm". Il prend comme valeur le nom de la fonction de hachage.

Fichier de signature droid

Par défaut, l'application utilise un fichier de signature livré pour détecter les formats de fichiers. Il est possible d'utiliser un autre fichier de signature en ajoutant dans la configuration le paramètre "droidSignatureFile" qui aura pour valeur le chemin du nouveau fichier à utiliser.

Journal du cycle de vie (LifeCycle)

Répertoire du journal

Le chemin du répertoire dans lequel sont écrit les journaux est définit par le paramètre "journalDirectory".

Intervalle de chaînage

Par défaut, le journal est chaîné toutes les 24h. Cette durée ce change et définissant le paramètre "interval" qui prendra en valeur le temps en seconde au bout duquel le journal doit être chaîné.

Medona

Répertoire des messages

Le chemin du répertoire dans lequel sont écrit les bordereaux est définit par le paramètre "messageDirectory".

Répertoire des profils

Le chemin du répertoire dans lequel sont sauvegardé les profils d'archive est définit par le paramètre "profilesDirectory".

Envoi de notification

Les bordereaux de notifications sont désactivés par défaut. Pour les activer, il faut ajouter la ligne "sendNotification = true" dans le fichier de configuration.

Envoie d'un bordereau de conformité

Les bordereaux de conformité sont désactivé par défaut. Pour les activer, il faut ajouter la ligne "sendCompliance = true" dans le fichier de configuration.

Seda

Répertoire des messages

Le chemin du répertoire dans lequel sont écrit les bordereaux est définit par le paramètre "messageDirectory".

Répertoire des profils

Le chemin du répertoire dans lequel sont sauvegardé les profils d'archive est définit par le paramètre "profilesDirectory".


Dépendances techniques

Voici les différentes dépendances utilisées à travers l'application MaarchRM.

DataSource

La dépendance datasource se compose de 4 paramètres.

Adapter

Ceci est la source de données de notre application MaarchRM.

 @Adapter = Database

Dsn

Dsn (Data Source Name) paramètre le nom de source de données. Ceci est le dsn général mais il peut-être paramétré pour chaque bundle.

 Dsn = "mysql:host=localhost;dbname=wikipedia;"

Username

Username paramètre l'identifiant de connexion à la base de données

 Username = toto

Password

Password paramètre le mot de passe de connexion à la base de données

 Password= mdpToto

Sdo

La dépendance datasource se compose de 10 paramètres.

Adapter

Ceci est la source de données de notre application MaarchRM.

 @Adapter = Database

Dsn

Dsn (Data Source Name) paramètre le nom de source de données. Ceci est le dsn général mais il peut-être paramétré pour chaque bundle.

 Dsn = "mysql:host=localhost;dbname=wikipedia;"

Username

Username paramètre l'identifiant de connexion à la base de données

 Username = toto

Password

Password paramètre le mot de passe de connexion à la base de données

 Password = mdpToto

GenerateKey

Genere automatique un identifiant

  • 0/false/off : Aucune génération
  • 1/true/on : Génération d'identifiant

BoolFormat

Parametrage du booléen

  • 0 : 0 ou 1
  • 1 : true ou false
  • 2 : Y ou N

DateFormat

Format de la date

dateFormat = YYYY-MM-DD

TimeFormat

Format de l'heure

timeFormat = HH24:MI:SS

DatetimeFormat

Format de la date et de l'heure

datetimeFormat = "YYYY-MM-DD HH24:MI:SS,US"

Trace

Traçabilité des différents éventements

  • 0 : Aucune traçabilité
  • 1 : On trace que les erreurs
  • 2 : On trace les requêtes
  • 3 : On trace tous

Html

La dépendance datasource se compose de 5 paramètres.

Headers

Le fichier que l'on utilise comme "headers" pour la présentation.

headers = "['dashboard/head.html']"

Layout

Le fichier que l'on utilise comme "layout" pour la présentation.

layout = "dashboard/layout.html"

LayoutData

On charge les sources de données par défaut.

layoutData = "presentation/dashboard/layout"

Plugins

On charge les différents plugins pour la présentation.

plugins = "{
   'dataTable'     : '\dependency\html\plugins\DataTable\DataTable',
   'dataList'      : '\dependency\html\plugins\DataList\DataList',
   'datePicker'    : '\dependency\html\plugins\datePicker\datePicker'}""

LayoutReferer

On indique les différents referer utilisés.

layoutReferer = "['/user/prompt', '/user/logout']"

Localisation

La dépendance datasource se compose de 3 paramètres.

Adapter

Adapter est le format des fichiers de traduction.

@Adapter = Csv

Lang

Lang correspond au langage utilisé dans l'application.

lang = fr

DateFormat

Ceci est le format de date de l'application. Il est différent en fonction du pays où l'on se trouve.

dateFormat = d-m-Y

Json

Option

Ces options nous permettent d’encodé en JSON de façon différentes.

Options = JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_FORCE_OBJECT

Dans cet exemple, le json peut être encodé en EXA et en OBJECT.

Repository

Adapter

Ceci est la source de données de repository.

@Adapter = Repository

FileSystem

javaHome

C'est ici qu'on indique l'endroit où se situe JHOVE (Application Java). JHOVE nous permet de valider les différents documents.

javaHome = "C:\Program Files (x86)\Java\jre1.8.0_25"

JhoveModules

Ceci est les différents modules que JHOVE peut valider.

jhoveModules = "{
   'pdf' : [
       'fmt/14', 'fmt/15', 'fmt/16', 'fmt/17', 'fmt/18', 'fmt/19', 'fmt/20', 
       'fmt/95', 
       'fmt/144', 'fmt/145', 'fmt/146', 'fmt/147', 'fmt/148', 
       'fmt/157', 'fmt/158',
       'fmt/276', 
       'fmt/354', 
       'fmt/476', 'fmt/477', 'fmt/478', 'fmt/479', 'fmt/480', 'fmt/481',
       'fmt/488', 'fmt/489', 'fmt/490', 'fmt/491', 'fmt/492', 'fmt/493'
       ],
   'html' : [
       'fmt/530', 'x-fmt/417'
   ],
   'tiff' : [
       'fmt/153', 'fmt/154', 'fmt/155', 'fmt/156'  
   ],
   'utf8' : ['x-fmt/111']}"

LibreOfficeExecutable

Ceci est le chemin d’exécution de LibreOffice (Logiciel d’éditeur de texte libre). Ce logiciel va nous permettre la conversion de format.

libreOfficeExecutable = "c:\Program Files (x86)\LibreOffice 4\program\soffice.exe"

ConversionServices

Afin de pouvoir convertir, la dépendance doit avoir une configuration lui permettant de déterminé à partir d’un format initiale, l’implémentation de conversion à utilisé, avec l’extension du fichier à créer et le format de sortie.


conversionServices = "[
   {
       'serviceName'     : 'dependency/fileSystem/plugins/libreOffice',
       'softwareName'    : 'LibreOffice',
       'softwareVersion' : '4.4.2.0',
       'inputFormats'    : ['fmt/412', 'fmt/291'],
       'outputFormats'   : {
           'fmt/18' : {
               'extension' : 'pdf',
               'filter' : 
           },
           'fmt/19' : {
               'extension' : 'pdf',
               'filter' : 
           } 
       }
   }

]"

Pour un format d’entrée “fmt/412”, l’implémentation “dependency/fileSystem/plugins/libreOffice” sera utilisé afin de convertir vers un format “fmt/18”. Le fichier de sortie aura l’extension “pdf”.

ClamScan

Ceci est le chemin pour l'antivirus ClamScan. Cet antivirus va nous servir pour analyser nos archives/documents envoyés. Sous Linux, il n'y a pas besoin de cette ligne.

clamScan = "C:\Program Files (x86)\ClamWin\bin\clamscan.exe"

ClamDb

Ceci est le chemin vers la base de données ClamScan qui stocke les virus trouvés.

clamDb = "C:\ProgramData\.clamwin\db"