Configuration

Préambule

Les fichiers de configuration sont situés dans le dossier properties, répartis par domaine. Toutefois, le fichier properties/config.properties concentre les principaux paramètres. La modification de ce seul fichier doit suffire dans la majorité des cas.

Pour répondre à des besoins particuliers, il est possible de modifier les autres fichiers. Afin de répercuter ces modifications d'une version à une autre, il faut renseigner les fichiers modifiés dans le paramètre custom.recover.files du fichier build.properties.

Paramétrage fonctionnel

Plusieurs fonctionnalités ont été développées pour répondre aux demandes de différents établissements. Leurs utilisations sont configurées par les paramétrages suivants.

  • Désactivation globale l'affichage des compteurs globaux dans la partie « saisie du service ».
domain.saisie.compteurs=false
  • Désactivation partielle de l'affichage de certains compteurs pour une population spécifique (masque).
# liste, séparée par des virgules, des compteurs affichés par le masque.
# Voir ci-dessous les types de population/contrat concernés.
# Les compteurs possibles sont :
# - serviceAssure : Service assure.
# - serviceCompta : Service comptabilise.
# - serviceStatut : Service statutaire.
# - serviceDu     : Service du.
# - hc            : Heures complementaires.
# - hcNonPayables : Heures complementaires non payables.
# - hcPayables    : Heures complementaires payables.
# - limite        : Limite d'heures complementaires payables (indique à
#                   l'utilisateur qu'il dépasse cette limite si 
#                   hcPayables est présent).

domain.masqueCompteurs=serviceAssure

# liste, séparée par des virgules, de types de population/contrat pour
# lesquels les compteurs globaux doivent être masqué.
#
# Les types de population/contrat doivent correspondre à une valeur
# retournée par les procédures stockées dans GEISHA :
# pks_individu.info_type_population(no_individu, d_deb_annee_univ, 'C')
# pks_individu.info_type_contrat_travail(:individu, :annee, 'C')

domain.typesPopMasqueCompteurs=SB,SD,SP
domain.typesCtrMasqueCompteurs=CU,AC,AD,AE,AH,AI
  • Autoriser ou non la saisie d'une entrée libre pour les champs formation et/ou discipline.
domain.formation.libre=true
domain.discipline.libre=false
  • Ouvrir les parties demandes de dépassement de limite d'HC et validation des services.
domain.demande=true
domain.validation=true
  • Autoriser ou non l'initialisation du service actuel par celui de l'année précédente.
domain.saisie.initSAN=true

Pour éviter de devoir redéployer l'application à chaque modification d'un de ces paramètres, il est possible de redéfinir leurs valeurs via l'interface d'administration. Cette interface permet également de définir, si besoin, une date d'ouverture et un date de fermeture de la saisie des services. Si une date d'ouverture est définie, la saisie des services sera bloquée avant cette date. Et inversement, si une date de fermeture est définie, la saisie des services sera bloquée après cette date.

Accès aux bases de données

Base de données de l'application

Une base de données est utilisée pour stocker des informations relatives à l'application seule (donc indépendante de GEISHA) tels que des préférences des utilisateurs, les droits d'administration, etc... Par défaut, l'application dispose de connecteurs MySql et Oracle. Avec MySql, la base doit être de type InnoDB.

La tâche ant init-data crée toutes les structures (tables) de la base de données mais la base doit exister. L'administrateur a la charge de créer cette base et de s'assurer que l'utilisateur a les droits d'accès nécessaires.

JDBC. L'accès à la base de données peut être géré directement par l'application. Indiquez pour cela l'*url* d'accès à la base ainsi que le username et le password pour l'authentification.

hibernate.connection.jdbc.url=jdbc:mysql://localhost/esup_geisha
hibernate.connection.jdbc.username=admin
hibernate.connection.jdbc.password=secret

JNDI. L'accès à la base de données peut également être géré par le serveur Tomcat. Indiquez pour cela le nom du pool de connexion utilisé (datasource). L'utilisation du JNDI est recommandé en production pour des raisons de performance. Il permet de plus aux administrateurs de surveiller la charge liée aux accès à la base de données avec des outils tels que LambdaProbe.

hibernate.useJndi=true
hibernate.connection.jndi.datasource=jdbc/esup_geisha

Configurez également le pool de connexion Tomcat dans le contexte de l'application :

<Resource
    name="jdbc/esup_geisha" 
    auth="Container" 
    type="javax.sql.DataSource" 
    username="admin" password="secret" 
    driverClassName="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost/esup_geisha" 
    maxActive="100" maxIdle="10" maxWait="10000" 
    removeAbandoned="true" removeAbandonedTimeout="60" 
    logAbandoned="true" />

GEISHA

La configuration à la base GEISHA se fait de la même manière, pour un connecteur oracle.

hibernate.geisha.connection.jdbc.url=jdbc:oracle:thin:@localhost:port:SID
hibernate.geisha.connection.jdbc.username=admin
hibernate.geisha.connection.jdbc.password=secret

hibernate.geisha.useJndi=false
hibernate.geisha.connection.jndi.datasource=jdbc/geisha

Si le driver oracle est correctement installé, l'utilisation du JNDI est possible en configurant le pool de connexion Tomcat dans le contexte de l'application.

<Resource
    name="jdbc/geisha" 
    auth="Container" 
    type="javax.sql.DataSource" 
    username="admin" password="secret" 
    driverClassName="oracle.jdbc.driver.OracleDriver" 
    url="jdbc:oracle:thin:@localhost:port:SID" 
    maxActive="100" maxIdle="10" maxWait="10000" 
    removeAbandoned="true" removeAbandonedTimeout="60" 
    logAbandoned="true" />

Remarque : un problème a été observé avec l'utilisation d'un pool JNDI pour la connexion à la base GEISHA. Pour une raison inconnue, les éventuelles décimales du volume horaire ne sont pas correctement enregistrées en base lors de la saisie d'un service. Par conséquent, il est vivement déconseillé d'utiliser un pool JNDI pour la base GEISHA.

Connecteur JDBC

Esup-Geisha embarque par défaut un connecteur MySql et un connecteur Oracle pour Java. Pour utiliser un autre connecteur :

  • ajoutez le connecteur (fichier jar) dans le dossier webapps/WEB-INF/lib,
  • pour assurer la récupération de ce fichier lors d'un changement de version de l'application, renseignez ce fichier dans le paramètre custom.recover.files du fichier build.properties,
  • surchargez les paramètres indiquant le driver JDBC et le dialect Hibernate à utiliser :
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect

ou pour la base GEISHA,

hibernate.geisha.connection.driver_class=oracle.jdbc.driver.OracleDriver
hibernate.geisha.dialect=org.hibernate.dialect.Oracle10gDialect

Par exemple, pour une base Postgresql (version jdbc3) :

hibernate.connection.driver_class=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

Adaptez également l'url d'accès à la base :

hibernate.connection.jdbc.url=jdbc:postgresql://localhost:5432/esup_geisha

Compatibilité validation des services / demande de dépassement

Les fonctionnalités de validation des services et de demande de dépassement nécessitent des modifications de la base GEISHA qui n'ont pas forcément encore été proposées ou pas encore déployées dans votre établissement. Dans ce cas, pour assurer la compatibilité du canal, il faut lui préciser le paramètre suivant :

geisha.version=1

Authentification

En mode servlet ou quick-start, l'authentification se fait via un serveur CAS:http://www.jasig.org/cas.

cas.url=https://cas.domain.edu

En mode portlet, l'authentification se fait via le portail. L'identifiant de l'utilisateur est récupéré de l'attribut auth.portal.uidAttribute défini par défaut à "uid".

auth.portal.uidAttribute=uid

Initialisation

La tâche ant init-data initialise les données en enregistrant un administrateur de l'application dans la table des utilisateurs. Renseignez son identifiant LDAP dans le paramètre suivant :

init.firstAdministratorId=paubry

Annuaire LDAP

La configuration de l'annuaire LDAP, d'où seront récupérées les informations sur les utilisateurs, se fait classiquement en indiquant l'*url* d'accès au LDAP ainsi que d'éventuels username et password pour l'authentification (laisser vide pour un accès anonyme).

ldap.url=ldap://ldap.domain.edu:389
ldap.userName=
ldap.password=

Précisez également la base et le chemin d'accès au répertoire des utilisateurs.

ldap.base=dc=domain,dc=edu
ldap.dnSubPath=ou=people

Indiquez ensuite les attributs du LDAP renseignant l'*identifiant LDAP*, le nom à afficher, l'adresse e-mail et l'*identifiant Harpège* de l'utilisateur.

ldap.uidAttribute=uid
ldap.displayNameAttribute=displayName
ldap.emailAttribute=mail
ldap.geishaIdAttribute=supannEmpId

Enfin, pour une éventuelle recherche d'utilisateur, vous pouvez préciser l'attribut sur lequel portera la recherche (searchAttribute) ainsi que les attributs qui seront affichés dans le résultat de la recherche (searchDisplayedAttributes).

Indiquez dans la liste des attributs (ldap.attributes) tous les attributs qui doivent être récupérer du LDAP, donc en particulier les attributs renseignés dans les paramètres précédents.


ldap.searchAttribute=cn
ldap.attributes=cn,displayName,employeeType,department,homeDirectory,supannEmpId
ldap.searchDisplayedAttributes=cn,displayName,employeeType,department

Vous pouvez votre configuration de l'accès à l'annuaire LDAP en utilisant la tâche ant test-ldap.

Envoi de mail

Configurez l'accès au serveur SMTP en précisant le host et le port (25 par défaut). Si l'envoi de mail nécessite une authentification, préciser un login et un mot de passe, sinon laisser vide.

smtp.host=smtp.domain.edu
smtp.port=25
smtp.user=
smtp.password=

L'encodage des mails est défini par défaut à "utf-8" mais vous pouvez changer cette valeur. Précisez également l'adresse e-mail ainsi que le nom qui apparaitront comme expéditeur des e-mails envoyés.

smtp.charset=utf-8
smtp.fromEmail=esup-geisha@domain.edu
smtp.fromName=ESUP-Portail Geisha Web

Lorsque vous testez l'application, il est conseillé d'intercepter les e-mails pour ne pas spammer les utilisateurs. Par défaut, le bean activant cette interception est smtpIntercept. Précisez alors l'adresse mail et le nom du destinataire qui recevra ces e-mails interceptés (le destinataire originale est indiqué dans le mail envoyé).

smtp.interceptBean=smtpIntercept
smtp.interceptEmail=maintainer@domain.edu
smtp.interceptName=Maintainer

En production, définissez cette propriété à null pour désactiver l'interception des e-mails (commenter la ligne ne suffit pas).

smtp.interceptBean=null

Vous pouvez tester votre configuration pour l'accès au serveur SMTP en utilisant la tâche ant test-smtp. Précisez pour cela l'adresse et le nom du destinataire de l'e-mail envoyé durant ce test.

smtp.testEmail=maintainer@domain.edu
smtp.testName=Maintainer

Rapports d'exception

Si des erreurs inattendues interviennent durant l'utilisation de l'application, un rapport d'exception est présenté à l'utilisateur. Ce rapport est également enregistré dans le fichier de log. Pour être prévenu automatiquement de cette erreur, vous pouvez recevoir ce rapport par e-mail. Pour cela, indiquez l'*adresse* du destinataire de ces rapports d'exception. Laissez vide pour ne pas recevoir ces rapports.

exceptionHandling.email=maintainer@domain.edu

Fuseau horaire

Indiquer le fuseau horaire utilisé sur de votre serveur.

timezone=Europe/Paris

Gestion des logs

La gestion des logs se fait via la librairie log4j. Les principaux paramètres sont :

  • le niveau des logs enregistrés,
  • la sortie utilisée : par exemple, stdout pour la sortie standard, file pour un fichier,
  • le patern des enregistrements.
log.level=WARN
log.output=stdout
log.pattern=%d %p [%c] - %m%n
Si vous souhaitez enregistrer les logs dans un fichier, certaines valeurs sont définies par défaut :
  • le fichier utilisé (chemin + nom),
  • la taille maximale du fichier,
  • le nombre maximum d'archives conservées.
log.file=esup-geisha.log
log.maxFileSize=5MB
log.maxBackupIndex=3

Gestion du cache

Les fichiers utilisés par le cache sont stockés dans le dossier défini par le paramètre cache.path. Les noms des fichiers peuvent ne pas être spécifique à l'application. Il est donc conseillé d'indiquer un chemin particulier pour l'application afin d'éviter d'éventuels conflit au niveau du cache, notamment avec d'autres applications basées sur le framework esup-commons.

cache.path=/tmp/esup-geisha/cache