Update doc

This commit is contained in:
Benjamin Renard 2020-05-06 12:31:24 +02:00
parent 7098b3ee79
commit 2183149097
6 changed files with 279 additions and 182 deletions

201
INSTALL
View file

@ -7,40 +7,70 @@
1. Pré-requis
=============
* PHP 5 avec magic_quotes_gpc et register_globals à off
* Le support LDAP dans PHP (paquet php5-ldap dans Debian)
* Le support mhash dans PHP (paquet php5-mhash dans Debian)
* Le support json dans PHP (pear install pecl/json sur RedHat, dans common sur Debian)
* Net_LDAP2 (pear install net_ldap2)
* Smarty (paquet smarty dans Debian)
* L'utisateur exécutant le serveur web doit avoir les droits d'écriture sur le dossier 'tmp'.
* Le service Apache HTTP avec le module mod_rewrite d'activé. Les règles de réécriture d'URL sont définies
dans le fichier .htaccess fourni avec l'application et il est donc nécessaire d'autoriser une telle configuration
à ce niveau via la directive AllowOverride devant inclure à minima FileInfo.
* L'utisateur exécutant le serveur web doit avoir les droits d'écriture sur le dossier 'tmp'. En cas d'installation
à partir du paquet Debian, ce dossier est remplacé par un lien symbolique vers le dossier /var/cache/ldapsaisie/.
* PHP 5.6 (ou supérieur) avec magic_quotes_gpc et register_globals à off.L'outil CLI de PHP est par ailleurs
nécessaire pour l'utilisation des outils CLI fournis avec l'application (fourni par le paquet php-cli dans Debian).
* Le support LDAP dans PHP (paquet php-ldap dans Debian)
* Le support mhash dans PHP (paquet php5-mhash dans Debian Lenny, intégré à php-common dans les versions supérieurs)
* Le support json dans PHP (pear install pecl/json sur RedHat, intégré au paquet php5-common précédement)
* Net_LDAP2 (paquet php-net-ldap2 dans Debian ou pear install net_ldap2)
* Le support mbstring dans PHP (paquet php-mbstring depuis Debian Stretch, intégré au paquet php-common dans Debian)
* Smarty (paquet smarty3 dans Debian)
* La librairie File_CSV_DataSource (paquet php-file-csv-datasource dans Debian)
* La librairie Console_Table (nécessaire pour le fonctionnement de l'outil CLI, paquet php-console-table dans Debian)
* Les librairies Mail et Mail_Mime (nécessaire pour l'envoi de courriels, paquets php-mail et php-mail-mime dans Debian)
* La librairie Net_FTP (nécessaire pour le fonctionnement du LSaddon FTP, paquet php-console-table dans Debian)
* La librairie PhpSecLib (nécessaire pour le fonctionnement du LSaddon SSH, paquet php-console-table dans Debian)
#################
# Avertissement #
#################
#
# La librairie Net_LDAP2 oblige le fait que la racine DSE de l'annuaire soit lisible en anonyme sinon la connexion à l'annuaire échouera systématiquement.
# La librairie Net_LDAP2 oblige le fait que la racine DSE de l'annuaire soit lisible en anonyme sinon la connexion à
# l'annuaire échouera systématiquement.
#
2. Téléchargement
=================
Il n'existe pas encore de version stable publiée. Vous pouvez obtenir le code source soit en le rapatriant à partir du serveur Git, soit en téléchargeant le dernier snapshot nocturne de l'arbre Git.
2.1. A partir du paquet Debian
------------------------------
2.1. A partir de Git
L'installation à partir du paquet Debian peut être réalisée soit en téléchargeant manuellement le paquet, soit en
déclarant le dépôt APT suivant dans votre fichier /etc/apt/sources.list :
deb http://ldapsaisie.easter-eggs.org/debian stable main
Il ne vous restera ensuite plus qu'a installer le paquet ldapsaisie avec la commande suivante :
apt-get install ldapsaisie
Le fichier /etc/ldapsaisie/apache.conf est un example de configuration du serveur web Apache. La configuration du
logiciel ce fera ensuite dans le dossier /etc/ldapsaisie/local/.
2.2. A partir de Git
--------------------
Le dépôt Git peut être récupéré anonymement en utilisant la commande suivante :
git clone git://git.labs.libre-entreprise.org/ldapsaisie.git
La racine web de l'application se trouvera alors dans le dossier /ldapsaisie/public_html/.
2.2. A partir des snapshot
La racine web de l'application se trouvera alors dans le dossier /ldapsaisie/src/public_html/.
2.3. A partir des snapshot
--------------------------
Toutes les nuits, un snapshot de l'arbre Git est réalisé et est téléchargeable au format tar.gz à l'adresse suivante : http://ldapsaisie.easter-eggs.org/download/ldapsaisie-snapshoot.tar.gz
Toutes les nuits, un snapshot de l'arbre Git est réalisé et est téléchargeable au format tar.gz à l'adresse suivante :
http://ldapsaisie.easter-eggs.org/download/ldapsaisie-snapshoot.tar.gz
3. Arborescence du projet
=========================
@ -51,9 +81,12 @@ doc/
Les fichiers sources de la documentation (docbook).
lsexample/
Les fichiers relatifs à l'annuaire d'exemple.
public_html/
Racine Web.
src/
Les sources de l'application.
public_html/
La racine web de l'application : celle-ci ne contient que les fichiers .htaccess et index.php qui configure et déclenche la réécriture d'URL.
conf/
Contient les fichiers de configuration.
@ -63,7 +96,7 @@ public_html/
LSaddons/
Configuration des LSaddons.
LSauth/
Configuration des LSauth.
Configuration des LSauthMethod.
includes/
@ -79,77 +112,101 @@ public_html/
Les librairies utilisées.
lang/
Les fichiers d'internationalisation.
templates/
Les fichiers template de l'interface. Il y a un sous-dossier par template.
css/
Les fichiers css de l'interface. Il y a un sous-dossier par template CSS.
images/
Les images de l'interface. Il y a un sous-dossier par template d'image.
local/
Les fichiers personnalisés de l'installation.
tmp/
Les fichiers temporaires (y compris le cache des templates).
4. Tutoriel d'installation
==========================
Cette section décrit les différentes étapes de l'installation de LdapSaisie. Aucune version d'LdapSaisie n'étant pour le moment sortie, cette méthode d'installation se base sur la récupération des sources directement dans le repos Git du projet. Des scripts ont été développés pour faciliter ces opérations de mises à jours tout en permettant une grande souplesse de confirguration et de personnalisation de l'application.
Cette section décrit les différentes étapes de l'installation de LdapSaisie. Deux méthodes d'installation sont présentées
ici, l'une à partir des sources du projet et l'autre à partir du paquet Debian.
Dans ce tutoriel, nous partirons du principe que vous avez pleinement la main sur votre serveur (installation de nouveau paquet et configuration de votre serveur web) et que l'installation se fera dans le dossier /var/www/ldapsaisie. Nous partons également du principe que votre annuaire LDAP est déjà en place. Nous utiliserons pour cette exemple de mise ne oeuvre l'annuaire correspondant au schéma et à la configuration présente dans les sources du projet dans le dossier lsexample.
Dans ce tutoriel, nous partirons du principe que vous avez pleinement la main sur votre serveur (installation de nouveau
paquet et configuration de votre serveur web). Nous partons également du principe que votre annuaire LDAP est déjà en
place. Nous utiliserons pour cette exemple de mise ne oeuvre l'annuaire correspondant au schéma et à la configuration
présente dans les sources du projet dans le dossier lsexample.
1. La première étape consiste à faire un clonage du repos Git. Pour cela il vous faut avoir installés les outils de Git contenu, dans Debian, dans le paquet git-core. Le dépôt Git doit ensuite être récupéré anonymement en utilisant la commande suivante :
1. La première étape consiste à installer le locigiel en tant que tel. Pour cela, référez vous au chapitre
Téléchargement.
En cas d'installation à à partir du paquet Debian, la configuration du logiciel se fera dans le dossier
/etc/ldapsaisie/local/. Les fichiers placés dans ce dossier prévaleront toujours aux fichiers fournis par le paquet
Debian, vous permettant facilement de modifier un composant existant ou dans écrire de nouveaux. Ainsi, pour modifier
un fichier CSS par exemple, il vous suffira de le placer dans le dossier /etc/ldapsaisie/local/css/.
Pour une installation à partir du code source, il vous faut cloner le dépôt Git du projet dans le dossier
/var/www/ldapsaisie. Pour cela il vous faut avoir installés les outils de Git contenu, dans Debian, dans le paquet
git-core. Le dépôt Git doit ensuite être récupéré anonymement en utilisant la commande suivante :
git clone https://gitlab.easter-eggs.com/ee/ldapsaisie.git /var/www/ldapsaisie
git clone git://git.labs.libre-entreprise.org/ldapsaisie.git
########
# Note #
########
#
# Pour que cette commande se déroule correctement, vous devez avoir accès au port TCP 9418 du serveur git.labs.libre-entreprise.org. En cas de problème vérifiez votre firewalling.
# Pour que cette commande se déroule correctement, vous devez avoir accès au port TCP 443 du serveur
# gitlab.easter-eggs.com. En cas de problème vérifiez votre parefeu.
#
La suite des opérations se déroulera donc maintenant dans le dossier /var/www/ldapsaisie. Pour avoir plus de détails sur les élements qu'on retrouve dans ce dossier, vous pouvez consulter la documentation du projet. [1]. Nous allons nous instérésser plus particulièrement :
La suite des opérations se déroulera donc maintenant dans le dossier /var/www/ldapsaisie. Pour avoir plus de détails
sur les élements qu'on retrouve dans ce dossier, vous pouvez consulter la section concernée. Nous allons nous
instérésser plus particulièrement :
* au script upgradeFromGit.sh permettant la mise à jour de votre repos tout en concervant les adaptations que nous ferons pour l'usage d'LdapSaisie adapté à notre annuaire ;
* au dossier config.local dans lequel seront stockés vos fichiers et vos adaptations de l'application ;
* au dossier public_html qui correspond à la futur racine du site web de l'application.
* au script upgradeFromGit.sh permettant la mise à jour de votre repos tout en concervant les adaptations que nous
ferons pour l'usage d'LdapSaisie adapté à notre annuaire ;
* au dossier config.local dans lequel seront stockés vos fichiers et vos adaptations de l'application ;
* au dossier src/public_html qui correspond à la futur racine du site web de l'application.
Le principe de l'adaptation est ici de mettre vos fichiers personnalisés dans le dossier config.local, de les déclarer dans votre fichier config.local/local.sh contenant la liste des fichiers devant être installés. Le fichier local.sh est la source de configuration du script upgradeFromGit.sh. Il faut donc dans un premier temps créer votre fichier local.sh en copiant le fichier d'example local.sh.example. Ce fichier est un script bash déclarant les variables de configurations suivantes :
Le principe de l'adaptation est ici de mettre vos fichiers personnalisés dans le dossier config.local, de les déclarer
dans votre fichier config.local/local.sh contenant la liste des fichiers devant être installés. Le fichier local.sh est
la source de configuration du script upgradeFromGit.sh. Il faut donc dans un premier temps créer votre fichier local.sh
en copiant le fichier d'example local.sh.example. Ce fichier est un script bash déclarant les variables de
configurations suivantes :
LOCAL_FILES
La liste des chemins des fichiers à installer dans l'arboressence du site. Cette élément doivent être séparés par des espaces ou des retour à la liste. Exemple :
LOCAL_FILES
public_html/conf/config.inc.php
public_html/lang/fr_FR.UTF8/lang.php
La liste des chemins des fichiers à installer dans l'arboressence du site. Cette élément doivent être séparés par
des espaces ou des retour à la liste. Exemple :
LOG_FILE
Nom du fichier de log des mises à jour.
public_html/conf/config.inc.php
public_html/lang/fr_FR.UTF8/lang.php
THEME
Le nom du theme à installer (facultatif et non traité dans ce tutoriel).
BUILD_DOC
Variable booléene définissant si la documentation doit être compiler en utilisant le script buildDocExports.sh. Ceci ne sera pas expliqué dans ce tutoriel et nous partirons donc du principe que cette variable est à 0.
LOG_FILE
Nom du fichier de log des mises à jour.
THEME
Le nom du theme à installer (facultatif et non traité dans ce tutoriel).
BUILD_DOC
Variable booléene définissant si la documentation doit être compiler en utilisant le script buildDocExports.sh.
Ceci ne sera pas expliqué dans ce tutoriel et nous partirons donc du principe que cette variable est à 0.
########
# Note #
########
#
# * D'autres variables sont présentes dans ce fichier et concerne uniquement la compilation de la documentation. Elle peuvent être ignorée à partir du moment ou la variable BUILD_DOC vaut 0.
# * D'autres variables sont présentes dans ce fichier et concerne uniquement la compilation de la documentation.
# Elle peuvent être ignorée à partir du moment ou la variable BUILD_DOC vaut 0.
#
# * Il est possible d'utiliser dans ce fichier de configuration la variable bash $ROOT_DIR correspondant au chemin du dossier d'installation, c'est à dire dans notre exemple /var/www/ldapsaisie.
# * Il est possible d'utiliser dans ce fichier de configuration la variable bash $ROOT_DIR correspondant au chemin
# du dossier d'installation, c'est à dire dans notre exemple /var/www/ldapsaisie.
#
2. La deuxième étape concerne la configuration globale de l'application : Cette partie est principalement contenue dans le fichier conf/config.inc.php. Il faut donc dans un premier temps copier ce fichier dans le dossier config.local et le déclarer dans la liste des fichiers à déployer lors des mises à jour (variable LOCAL_FILES dans le fichier local.sh). Il s'agit en particulier dans ce fichier de configurer la connexion à votre annuaire. Vous pouvez vous inspirer du fichier d'exemple fourni et pour plus de détails, consulter la documentation du projet. [1]
2. La deuxième étape concerne la configuration globale de l'application : Cette partie est principalement contenue dans
le fichier conf/config.inc.php (ou /etc/ldapsaisie/local/conf/config.inc.php en cas d'installation à partir du paquet
Debian). Il faut donc dans un premier temps copier ce fichier dans le dossier config.local et le déclarer dans la liste
des fichiers à déployer lors des mises à jour (variable LOCAL_FILES dans le fichier local.sh). Il s'agit en particulier
dans ce fichier de configurer la connexion à votre annuaire. Vous pouvez vous inspirer du fichier d'exemple fourni et
pour plus de détails, consulter la documentation du projet. [1]
########
# Note #
@ -158,48 +215,58 @@ BUILD_DOC
# Notez qu'il est possible de passer l'application en mode debug ce qui peut être utile par la suite.
#
3. La troisième étape concerne la configuration des types de LSobjects : Chaque type d'objet manipulé par LdapSaisie doit correspondre avec un type de LSobject.
3. La troisième étape concerne la configuration des types de LSobjects : Chaque type d'objet manipulé par LdapSaisie
doit correspondre avec un type de LSobject.
a. Création du fichier de classe :
Ce fichier contient la déclaration de la classe PHP correspondant au type de LSobject. Cette classe étend la classe LSldapObject qui contient pour ainsi dire toute les méthodes et proprités nécessaires pour les types de LSobject simples (sans LSrelation). Les fichiers des classes sont contenus dans le dossier /includes/class/ et portent les noms composés de la manière suivante :
Ce fichier contient la déclaration de la classe PHP correspondant au type de LSobject. Cette classe étend la classe
LSldapObject qui contient pour ainsi dire toute les méthodes et proprités nécessaires pour les types de LSobject simples
(sans LSrelation). Les fichiers des classes sont contenus dans le dossier /includes/class/ et portent les noms composés
de la manière suivante :
class.LSobjects.[nom du type d'LSobject].php
Le plus simple pour cette étape est de copier un des fichiers d'exemple dans le dossier config.local et de l'adapter en changeant le nom du type d'objet dans l'ensemble du fichier. Pour cela, le fichier de classe du type LSpeople est le plus simple car il ne contient que le strict minimum. Pour un fichier de classe ayant des LSrelations à gérer, le fichier de classe LSgroup contient déjà les méthodes nécéssaires pour gérer ces cas.
Le plus simple pour cette étape est de copier un des fichiers d'exemple dans le dossier config.local et de l'adapter en
changeant le nom du type d'objet dans l'ensemble du fichier. Pour cela, le fichier de classe du type LSpeople est le
plus simple car il ne contient que le strict minimum. Pour un fichier de classe ayant des LSrelations à gérer, le
fichier de classe LSgroup contient déjà les méthodes nécéssaires pour gérer ces cas.
b. Configurer vos LSobject :
Cette partie est certainement la plus longue et consiste à déclarer l'ensemble des informations relatives aux types des objets LDAP manipulés. Les fichiers d'exemples fournis vous seront alors d'une aide précieuse. basé vous sur l'un de pour créer le votre. Pour cela le fichier de configuration du type d'LSobjet LSpeople est le plus complet et est un bon point de départ. Pour plus de détails sur les élements de configuration de ce fichier, consulter la documentation du projet. [1]
Cette partie est certainement la plus longue et consiste à déclarer l'ensemble des informations relatives aux types des
objets LDAP manipulés. Les fichiers d'exemples fournis vous seront alors d'une aide précieuse. basé vous sur l'un de
pour créer le votre. Pour cela le fichier de configuration du type d'LSobjet LSpeople est le plus complet et est un bon
point de départ. Pour plus de détails sur les élements de configuration de ce fichier, consulter la documentation du
projet. [1]
c. Configurer si nécessaire les relations entre les objets appelés LSrelations :
Cette opération consiste dans un premier temps à écrire les méthodes PHP nécessaires pour gérer ces relations : pour cela regardez le fichier de classe du type LSgroup. Il faudra ensuite déclarer ces relations dans la configuration des types d'LSobjects : Pour plus de détails, consulter la documentation du projet. [1]
Cette opération consiste dans un premier temps à écrire les méthodes PHP nécessaires pour gérer ces relations : pour
cela regardez le fichier de classe du type LSgroup. Il faudra ensuite déclarer ces relations dans la configuration des
types d'LSobjects : Pour plus de détails, consulter la documentation du projet. [1]
#############
# Important #
#############
#
# Pensez à déclarer les fichiers que vous venez de créer dans la variable LOCAL_FILES du fichier local.sh. Exemple pour le type d'LSobjet portant comme nom LSexample :
# Pensez à déclarer les fichiers que vous venez de créer dans la variable LOCAL_FILES du fichier local.sh. Exemple
# pour le type d'LSobjet portant comme nom LSexample :
#
# public_html/conf/LSobjects/config.LSobjects.LSexample.php
# public_html/includes/class/class.LSobjects.LSexample.php
# src/conf/LSobjects/config.LSobjects.LSexample.php
# src/includes/class/class.LSobjects.LSexample.php
#
########
# Note #
########
#
# Vous pouvez également personnaliser l'interface : Il est possible de personnaliser à votre goût l'interface en écrivant votre template ou en modifiant simplement
# Vous pouvez également personnaliser l'interface : Il est possible de personnaliser à votre goût l'interface en
# écrivant votre template ou en modifiant simplement
# les fichiers CSS. Une partie de cette documentation concernera bientôt cette problématique. Patience...
#
4. La dernière étape à ce niveau consiste à lancer le script upgradeFromGit.sh pour qu'il installe les fichiers que vous venez de créer. Ce script est conçu pour dire tout ce qu'il fait donc en cas de problème vous devriez rapidement comprendre où cela coince. Dans tout les cas, n'hésitez pas à poser vos questions à la communauté sur la liste <ldapsaisie-users@lists.labs.libre-entreprise.org>.
5. Vous devriez dès à présent accèder à l'application via votre navigateur web à l'URL suivante :
http://[IP ou nom du serveur]/ldapsaisie/public_html
4. La dernière étape à ce niveau consiste à lancer le script upgradeFromGit.sh pour qu'il installe les fichiers que
vous venez de créer. Ce script est conçu pour dire tout ce qu'il fait donc en cas de problème vous devriez
rapidement comprendre où cela coince. Dans tout les cas, n'hésitez pas à poser vos questions à la communauté sur la
liste <ldapsaisie-users@lists.labs.libre-entreprise.org>.
Liens
=====

View file

@ -4,6 +4,12 @@
<!ENTITY smarty "<application><ulink url='http://www.smarty.net/'>Smarty</ulink></application>">
<!ENTITY php "<application><ulink url='http://www.php.net/'>PHP</ulink></application>">
<!ENTITY PEAR "<application><ulink url='http://pear.php.net/'>PEAR</ulink></application>">
<!ENTITY PEAR_PearFile_CSV_DataSource "<application><ulink url='https://pear.php.net/package/File_CSV_DataSource'>File_CSV_DataSource</ulink></application>">
<!ENTITY PEAR_Console_Table "<application><ulink url='https://pear.php.net/package/Console_Table'>Console_Table</ulink></application>">
<!ENTITY PEAR_Net_FTP "<application><ulink url='https://pear.php.net/package/Net_FTP'>Net_FTP</ulink></application>">
<!ENTITY PEAR_Mail "<application><ulink url='https://pear.php.net/package/Mail'>Mail</ulink></application>">
<!ENTITY PEAR_Mail_Mime "<application><ulink url='https://pear.php.net/package/Mail_Mime'>Mail_Mime</ulink></application>">
<!ENTITY PhpSecLib "<application><ulink url='https://github.com/phpseclib/phpseclib'>PhpSecLib</ulink></application>">
<!ENTITY openldap "<application><ulink url='http://www.openldap.org/'>OpenLDAP</ulink></application>">
<!ENTITY courier "<application><ulink url='http://www.courier-mta.org/'>Courier</ulink></application>">
<!ENTITY CAS "<application><ulink url='http://www.jasig.org/cas'>CAS</ulink></application>">

View file

@ -3,7 +3,7 @@
<para>Cette section décrit la manière de paramétrer les recherches dans
l'annuaire pour un type d'&LSobject; donné.</para>
<para>La configuration des <emphasis>LSsearch</emphasis> se situe dans la
<para>La configuration des <emphasis>LSsearch</emphasis> se situe dans la
configuration des &LSobjects;, dans la variable <varname>LSsearch</varname>
(<emphasis>$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSsearch']</emphasis>).
<programlisting>
@ -148,10 +148,10 @@ configuration des &LSobjects;, dans la variable <varname>LSsearch</varname>
les paramètres qui seront utilisés pour initialisé une recherche. Ces paramètres
pourront être redéfini par l'utilisateur ou par l'application en fonction du
contexte dans lequel cette recherche est effectuée.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>pattern</term>
<listitem>
@ -264,7 +264,7 @@ contexte dans lequel cette recherche est effectuée.</para>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
@ -274,7 +274,7 @@ contexte dans lequel cette recherche est effectuée.</para>
<para>Tableau associatif contenant des filtres prédéfinis pour la recherche.
Les clés sont les filtres au format LDAP et les valeurs sont les labels associés.</para>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<term>extraDisplayedColumns</term>
@ -445,8 +445,9 @@ contexte dans lequel cette recherche est effectuée.</para>
<term>icon</term>
<listitem>
<simpara>Nom de l'îcone à afficher dans le bouton de l'action. Ce nom correspond
au nom du fichier de l'image (sans l'extention) qui devra se trouver dans le
dossier <emphasis>/public_html/images/[nom du theme d'images]/</emphasis>.</simpara>
au nom du fichier de l'image (sans l'extention) qui devra se trouver dans le
dossier <emphasis>/src/images/[nom du theme d'images]/</emphasis> ou dans le dossier
<emphasis>src/local/images</emphasis>.</simpara>
</listitem>
</varlistentry>
@ -455,7 +456,7 @@ contexte dans lequel cette recherche est effectuée.</para>
<listitem>
<simpara>Le nom de la fonction à exécuter qui implémente l'action personnalisée
Cette fonction prendra en seule paramètre l'objet &LSsearch; sur lequel l'action
devra être exécutée et retournera <emphasis>True</emphasis> en cas de succès ou
devra être exécutée et retournera <emphasis>True</emphasis> en cas de succès ou
<emphasis>False</emphasis> en cas d'échec d'exécution de la fonction.</simpara>
</listitem>
</varlistentry>

View file

@ -2,7 +2,7 @@
<title>customActions</title>
<para>Cette section décrit la manière de configurer les actions personnalisées exécutables
sur les &LSobjects; appelées &customActions;.</para>
<programlisting>
<citetitle>Structure</citetitle>
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['customActions'] = array (
@ -55,8 +55,9 @@
<term>icon</term>
<listitem>
<simpara>Nom de l'îcone à afficher dans le bouton de l'action. Ce nom correspond
au nom du fichier de l'image (sans l'extention) qui devra se trouver dans le
dossier <emphasis>/public_html/images/[nom du theme d'images]/</emphasis>.</simpara>
au nom du fichier de l'image (sans l'extention) qui devra se trouver dans le
dossier <emphasis>src/images/[nom du theme d'images]/</emphasis> ou dans le dossier
<emphasis>src/local/images</emphasis>.</simpara>
</listitem>
</varlistentry>
@ -65,7 +66,7 @@
<listitem>
<simpara>Le nom de la fonction à exécuter qui implémente l'action personnalisée
Cette fonction prendra en seule paramètre le &LSobject; sur lequel l'action devra
être exécutée et retournera <emphasis>True</emphasis> en cas de succès ou
être exécutée et retournera <emphasis>True</emphasis> en cas de succès ou
<emphasis>False</emphasis> en cas d'échec d'exécution de la fonction.</simpara>
</listitem>
</varlistentry>
@ -151,7 +152,7 @@ function maFonction ($object) {
}
]]></programlisting>
Cette fonction doit prendre pour seul paramètre, le &LSobject; sur lequel l'action
personnalisée doit être exécutée et doit retourner soit <literal>True</literal> si
personnalisée doit être exécutée et doit retourner soit <literal>True</literal> si
tout s'est bien passé, soit <literal>False</literal> en cas de problème.</para>
<note><simpara>Ces fonctions sont le plus couramment définies au sein d'&LSaddon;.</simpara></note>

View file

@ -1,135 +1,143 @@
<?xml version="1.0" encoding="UTF-8" ?>
<sect1 id="install-arbo">
<title>Arborescence du projet</title>
<variablelist>
<title>Racine</title>
<varlistentry>
<term><filename>doc/</filename></term>
<listitem>
<simpara>Les fichiers sources de la documentation (docbook).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>lsexample/</filename></term>
<listitem>
<simpara>Les fichiers relatifs à l'annuaire d'exemple.</simpara>
</listitem>
</varlistentry>
<!-- Début - public_html -->
<!-- Début - src -->
<varlistentry>
<term><filename>public_html/</filename></term>
<term><filename>src/</filename></term>
<listitem>
<simpara>Racine Web.</simpara>
<simpara>Les sources de l'application.</simpara>
<variablelist>
<varlistentry>
<term><filename>public_html/</filename></term>
<listitem>
<simpara>La racine web de l'application : celle-ci ne contient que les fichiers <literal>.htaccess</literal>
et <literal>index.php</literal> qui configure et déclenche la réécriture d'URL.</simpara>
</listitem>
</varlistentry>
<!-- Début - conf -->
<varlistentry>
<term><filename>conf/</filename></term>
<listitem>
<simpara>Contient les fichiers de configuration.</simpara>
<!-- Début - conf - Sous dossiers-->
<variablelist>
<varlistentry>
<term><filename>LSobjects/</filename></term>
<listitem>
<simpara>Configuration des &LSobjects;.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>LSaddons/</filename></term>
<listitem>
<simpara>Configuration des &LSaddons;.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>LSauth/</filename></term>
<listitem>
<simpara>Configuration des &LSauthMethod;.</simpara>
</listitem>
</varlistentry>
</variablelist>
<!-- Fin - conf - Sous dossiers -->
</listitem>
</varlistentry>
<!-- Fin - conf -->
<!-- Début - include -->
<varlistentry>
<term><filename>includes/</filename></term>
<listitem>
<simpara>Contient les fichiers des ressources.</simpara>
<!-- Début - include - Sous dossiers-->
<variablelist>
<varlistentry>
<term><filename>addons/</filename></term>
<listitem>
<simpara>Les addons au projet.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>class/</filename></term>
<listitem>
<simpara>Les fichiers de définition des classes &php;.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>js/</filename></term>
<listitem>
<simpara>Les fichiers Javascript.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>libs/</filename></term>
<listitem>
<simpara>Les librairies utilisées.</simpara>
</listitem>
</varlistentry>
</variablelist>
<!-- Fin - include - Sous dossiers -->
</listitem>
</varlistentry>
<!-- Fin - include -->
<varlistentry>
<term><filename>lang/</filename></term>
<listitem>
<simpara>Les fichiers d'internationalisation.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>templates/</filename></term>
<listitem>
<simpara>Les fichiers <emphasis>template</emphasis> de l'interface.
<simpara>Les fichiers <emphasis>template</emphasis> de l'interface.
Il y a un sous-dossier par template.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>css/</filename></term>
<listitem>
<simpara>Les fichiers css de l'interface. Il y a un sous-dossier par
<simpara>Les fichiers css de l'interface. Il y a un sous-dossier par
template CSS.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>images/</filename></term>
<listitem>
@ -144,18 +152,18 @@
<simpara>Les fichiers personnalisés de l'installation.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>tmp/</filename></term>
<listitem>
<simpara>Les fichiers temporaires (y compris le cache des templates).</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<!-- Fin - public_html -->
<!-- Fin - src -->
</variablelist>
</sect1>

View file

@ -6,13 +6,28 @@
<sect1>
<title>Pré-requis</title>
<itemizedlist>
<listitem><simpara>&php; 5 avec <parameter>magic_quotes_gpc</parameter> et <parameter>register_globals</parameter> à <literal>off</literal></simpara></listitem>
<listitem><simpara>Le support <application>LDAP</application> dans &php; (paquet <application>php5-ldap</application> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>Le support <application>mhash</application> dans &php; (paquet <application>php5-mhash</application> dans <application>Debian Lenny</application>, intégré à <application>php5-common</application> dans <application>Debian Squeeze</application>)</simpara></listitem>
<listitem><simpara>Le support <application>json</application> dans &php; (<command>pear install pecl/json</command> sur <application>RedHat</application>, intégré au paquet <literal>php5-common</literal> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>Le service <application>Apache HTTP</application> avec le module <application>mod_rewrite</application>
d'activé. Les règles de réécriture d'URL sont définies dans le fichier <literal>.htaccess</literal> fourni avec
l'application et il est donc nécessaire d'autoriser une telle configuration à ce niveau via la directive
<literal>AllowOverride</literal> devant inclure à minima <literal>FileInfo</literal>.</simpara></listitem>
<listitem><simpara>L'utisateur exécutant le serveur web doit avoir les droits d'écriture sur le dossier 'tmp'. En cas
d'installation à partir du paquet Debian, ce dossier est remplacé par un lien symbolique vers le dossier
<emphasis>/var/cache/ldapsaisie/</emphasis>.</simpara></listitem>
<listitem><simpara>&php; 5.6 (ou supérieur) avec <parameter>magic_quotes_gpc</parameter> et
<parameter>register_globals</parameter> à <literal>off</literal>.L'outil CLI de <application>PHP</application> est
par ailleurs nécessaire pour l'utilisation des outils CLI fournis avec l'application (fourni par le paquet
<application>php-cli</application> dans <application>Debian</application>).</simpara></listitem>
<listitem><simpara>Le support <application>LDAP</application> dans &php; (paquet <application>php-ldap</application> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>Le support <application>mhash</application> dans &php; (paquet <application>php5-mhash</application> dans <application>Debian Lenny</application>, intégré à <application>php-common</application> dans les versions supérieurs)</simpara></listitem>
<listitem><simpara>Le support <application>json</application> dans &php; (<command>pear install pecl/json</command> sur <application>RedHat</application>, intégré au paquet <literal>php5-common</literal> précédement)</simpara></listitem>
<listitem><simpara>&netldap; (paquet <application>php-net-ldap2</application> dans <application>Debian</application> ou <command>pear install net_ldap2</command>)</simpara></listitem>
<listitem><simpara>&smarty; (paquet <application>smarty</application> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>L'utisateur exécutant le serveur web doit avoir les droits d'écriture sur le dossier 'tmp'. En cas d'installation à partir du paquet Debian, ce dossier est remplacé par un lien symbolique vers le dossier <emphasis>/var/cache/ldapsaisie/</emphasis>.</simpara></listitem>
<listitem><simpara>Le support <application>mbstring</application> dans &php; (paquet <application>php-mbstring</application> depuis <application>Debian Stretch</application>, intégré au paquet <literal>php-common</literal> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>&smarty; (paquet <application>smarty3</application> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>La librairie &PEAR_PearFile_CSV_DataSource; (paquet <application>php-file-csv-datasource</application> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>La librairie &PEAR_Console_Table; (nécessaire pour le fonctionnement de l'outil CLI, paquet <application>php-console-table</application> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>Les librairies &PEAR_Mail; et &PEAR_Mail_Mime; (nécessaire pour l'envoi de courriels, paquets <application>php-mail</application> et <application>php-mail-mime</application> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>La librairie &PEAR_Net_FTP; (nécessaire pour le fonctionnement du &LSaddon; FTP, paquet <application>php-console-table</application> dans <application>Debian</application>)</simpara></listitem>
<listitem><simpara>La librairie &PhpSecLib; (nécessaire pour le fonctionnement du &LSaddon; SSH, paquet <application>php-console-table</application> dans <application>Debian</application>)</simpara></listitem>
</itemizedlist>
<warning><simpara>La librairie &netldap; oblige le fait que la racine DSE de
l'annuaire soit lisible en anonyme sinon la connexion à l'annuaire échouera
@ -40,39 +55,39 @@
dans votre fichier <emphasis>/etc/apt/sources.list</emphasis> :
<screen>
<command>deb http://ldapsaisie.easter-eggs.org/debian stable main</command>
</screen>
</screen>
Il ne vous restera ensuite plus qu'a installer le paquet <emphasis>ldapsaisie
</emphasis> avec la commande suivante :
<screen>
<command>apt-get install ldapsaisie</command>
</screen>
</screen>
Le fichier <emphasis>/etc/ldapsaisie/apache.conf</emphasis> est un example de
configuration du serveur web Apache. La configuration du logiciel ce fera ensuite
dans le dossier <emphasis>/etc/ldapsaisie/local/</emphasis>.
</para>
</sect2>
<sect2>
<title>A partir de Git</title>
<para>Le dépôt Git peut être récupéré anonymement en utilisant la
commande suivante :
<screen>
<command>git clone git://git.labs.libre-entreprise.org/ldapsaisie.git</command>
</screen>
</screen>
La racine web de l'application se trouvera alors dans le dossier <emphasis>
/ldapsaisie/public_html/</emphasis>.
/ldapsaisie/src/public_html/</emphasis>.
</para>
</sect2>
<sect2>
<title>A partir des snapshot</title>
<para>Toutes les nuits, un snapshot de l'arbre Git est réalisé et est
téléchargeable au format <emphasis>tar.gz</emphasis> à l'adresse suivante :
téléchargeable au format <emphasis>tar.gz</emphasis> à l'adresse suivante :
<ulink url='http://ldapsaisie.easter-eggs.org/download/ldapsaisie-snapshoot.tar.gz'>
http://ldapsaisie.easter-eggs.org/download/ldapsaisie-snapshoot.tar.gz</ulink>
</para>
</sect2>
</sect1>
&install-arbo;
@ -82,54 +97,53 @@
<para>Cette section décrit les différentes étapes de l'installation de
LdapSaisie. Deux méthodes d'installation sont présentées ici, l'une à
partir des sources du projet et l'autre à partir du paquet Debian.</para>
<para>Dans ce tutoriel, nous partirons du principe que vous avez
<para>Dans ce tutoriel, nous partirons du principe que vous avez
pleinement la main sur votre serveur (installation de nouveau paquet et
configuration de votre serveur web) et que l'installation à partir des sources
se fera dans le dossier <literal>/var/www/ldapsaisie</literal>. Nous partons
également du principe que votre annuaire LDAP est déjà en place. Nous
utiliserons pour cette exemple de mise ne oeuvre l'annuaire correspondant
au schéma et à la configuration présente dans les sources du projet dans
le dossier <literal>lsexample</literal>.</para>
configuration de votre serveur web). Nous partons également du principe que
votre annuaire LDAP est déjà en place. Nous utiliserons pour cette exemple
de mise ne oeuvre l'annuaire correspondant au schéma et à la configuration
présente dans les sources du projet dans le dossier
<literal>lsexample</literal>.</para>
<orderedlist>
<listitem>
<para>La première étape consiste à installer le locigiel en tant que tel.
Pour une installation à partir du paquet Debian référez vous au chapitre
<link linkend="install-from-git">Téléchargement</link>. Une fois le paquet
Debian, la configuration du logiciel se fera dans le dossier
<emphasis>/etc/ldapsaisie/local/</emphasis>. Les fichiers placés dans ce
dossier prévaleront toujours aux fichiers fournis par le paquet Debian,
vous permettant facilement de modifier un composant existant ou dans écrire
de nouveaux. Ainsi, pour modifier un fichier CSS par exemple, il vous
suffira de le placer dans le dossier
Pour cela, référez vous au chapitre <link linkend="install-download">
Téléchargement</link>.</para>
<para>En cas d'installation à partir du paquet Debian, la configuration
du logiciel se fera dans le dossier <emphasis>/etc/ldapsaisie/local/</emphasis>.
Les fichiers placés dans ce dossier prévaleront toujours aux fichiers fournis
par le paquet Debian, vous permettant facilement de modifier un composant
existant ou dans écrire de nouveaux. Ainsi, pour modifier un fichier CSS par
exemple, il vous suffira de le placer dans le dossier
<emphasis>/etc/ldapsaisie/local/css/</emphasis>.</para>
<para>Pour une installation à partir du code source, il vous faut
cloner le repos Git. Pour cela il vous faut avoir installés les outils de Git
contenu, dans Debian, dans le paquet <literal>git-core</literal>. Le
dépôt Git doit ensuite être récupéré anonymement en utilisant la
commande suivante :
<para>Pour une installation à partir du code source, il vous faut cloner le dépôt Git
du projet dans le dossier <literal>/var/www/ldapsaisie</literal>. Pour cela il vous
faut avoir installés les outils de Git contenu, dans Debian, dans le paquet
<literal>git-core</literal>. Le dépôt Git doit ensuite être récupéré anonymement en
utilisant la commande suivante :
<screen>
<command>git clone git://git.labs.libre-entreprise.org/ldapsaisie.git</command>
<command>git clone https://gitlab.easter-eggs.com/ee/ldapsaisie.git /var/www/ldapsaisie</command>
</screen>
<note><simpara>Pour que cette commande se déroule correctement, vous devez avoir
accès au port TCP 9418 du serveur git.labs.libre-entreprise.org. En cas de problème
vérifiez votre firewalling.</simpara></note>
accès au port TCP 443 du serveur <literal>gitlab.easter-eggs.com</literal>. En cas
de problème vérifiez votre parefeu.</simpara></note>
La suite des opérations se déroulera donc maintenant dans le dossier
<literal>/var/www/ldapsaisie</literal>. Pour avoir plus de détails sur
les élements qu'on retrouve dans ce dossier, vous pouvez consulter
<link linkend="install-arbo">la section concernée</link>. Nous allons
les élements qu'on retrouve dans ce dossier, vous pouvez consulter
<link linkend="install-arbo">la section concernée</link>. Nous allons
nous instérésser plus particulièrement :
<itemizedlist>
<listitem><simpara>au script <literal>upgradeFromGit.sh</literal>
permettant la mise à jour de votre repos tout en concervant les adaptations
que nous ferons pour l'usage d'LdapSaisie adapté à notre annuaire ;</simpara>
</listitem>
<listitem><simpara>au dossier <literal>config.local</literal> dans
<listitem><simpara>au dossier <literal>config.local</literal> dans
lequel seront stockés vos fichiers et vos adaptations de l'application ;
</simpara></listitem>
<listitem><simpara>au dossier <literal>public_html</literal> qui
<listitem><simpara>au dossier <literal>src/public_html</literal> qui
correspond à la futur racine du site web de l'application.</simpara>
</listitem>
</itemizedlist>
@ -142,17 +156,17 @@
<literal>local.sh</literal> en copiant le fichier d'example
<literal>local.sh.example</literal>. Ce fichier est un script bash
déclarant les variables de configurations suivantes :
<variablelist>
<varlistentry>
<term>LOCAL_FILES</term>
<listitem>
<simpara>La liste des chemins des fichiers à installer dans l'arboressence
du site. Cette élément doivent être séparés par des espaces ou des
retour à la liste. Exemple :</simpara>
<programlisting>public_html/conf/config.inc.php
public_html/lang/fr_FR.UTF8/lang.php</programlisting>
<programlisting>conf/config.inc.php
lang/fr_FR.UTF8/lang.php</programlisting>
</listitem>
</varlistentry>
@ -192,19 +206,19 @@ concerne uniquement la compilation de la documentation. Elle peuvent
la variable bash <literal>$ROOT_DIR</literal> correspondant au chemin
du dossier d'installation, c'est à dire dans notre exemple
<literal>/var/www/ldapsaisie</literal>.</simpara></note>
</para>
</listitem>
<listitem><simpara>La deuxième étape concerne la configuration globale
de l'application : Cette partie est principalement contenue dans le
fichier <emphasis>conf/config.inc.php</emphasis> (ou
fichier <emphasis>src/conf/config.inc.php</emphasis> (ou
<emphasis>/etc/ldapsaisie/local/conf/config.inc.php</emphasis> en cas
d'installation à partir du paquet Debian). En cas d'installation à partir
du code source, il faut donc dans un premier temps copier ce fichier dans
le dossier <literal>config.local</literal> et le déclarer dans la liste
des fichiers à déployer lors des mises à jour
(variable <literal>LOCAL_FILES</literal> dans le fichier
(variable <literal>LOCAL_FILES</literal> dans le fichier
<literal>local.sh</literal>). Il s'agit en particulier dans ce fichier
de configurer la connexion à votre annuaire. Vous pouvez vous inspirer
du fichier d'exemple fourni et pour plus de détails, reportez-vous à
@ -213,20 +227,20 @@ du dossier d'installation, c'est à dire dans notre exemple
<note><simpara>Notez qu'il est possible de passer l'application en mode
<emphasis>debug</emphasis> ce qui peut être utile par la suite.</simpara></note>
</listitem>
<listitem><simpara>La troisième étape concerne la configuration des
types de &LSobjects; : Chaque type d'objet manipulé par LdapSaisie doit
correspondre avec un type de LSobject.</simpara>
<orderedlist>
<listitem><para>Création du fichier de classe : Ce fichier contient la
<listitem><para>Création du fichier de classe : Ce fichier contient la
déclaration de la classe PHP correspondant au type de LSobject. Cette classe
étend la classe <emphasis>LSldapObject</emphasis> qui contient pour ainsi dire
toute les méthodes et proprités nécessaires pour les types de LSobject simples
(sans &LSrelation;). Les fichiers des classes sont contenus dans le dossier
<emphasis>/includes/class/</emphasis> et portent les noms composés de la
manière suivante :
<emphasis>/includes/class/</emphasis> et portent les noms composés de la
manière suivante :
<programlisting>class.LSobjects.[nom du type d'LSobject].php</programlisting>
Le plus simple pour cette étape est de copier un des fichiers d'exemple afin
de l'adapter en changeant le nom du type d'objet dans l'ensemble du fichier.
@ -235,56 +249,56 @@ du dossier d'installation, c'est à dire dans notre exemple
ayant des &LSrelations; à gérer, le fichier de classe <emphasis>LSgroup
</emphasis> contient déjà les méthodes nécéssaires pour gérer ces cas.
</para></listitem>
<listitem><simpara>Configurer vos LSobject : Cette partie est certainement la
plus longue et consiste à déclarer l'ensemble des informations relatives aux
types des objets LDAP manipulés. Les fichiers d'exemples fournis vous seront
alors d'une aide précieuse. basé vous sur l'un de pour créer le votre. Pour
cela le fichier de configuration du type d'LSobjet <emphasis>LSpeople</emphasis>
est le plus complet et est un bon point de départ. Pour plus de détails sur les
élements de configuration de ce fichier, reportez-vous à
élements de configuration de ce fichier, reportez-vous à
<link linkend="config-LSobject">la section concernée</link>.</simpara>
</listitem>
<listitem><simpara>Configurer si nécessaire les relations entre les objets
appelés &LSrelations;. Cette opération consiste dans un premier temps à écrire
les méthodes PHP nécessaires pour gérer ces relations : pour cela regardez le
fichier de classe du type <emphasis>LSgroup</emphasis>. Il faudra ensuite
déclarer ces relations dans la configuration des types d'LSobjects : Pour plus
de détails, reportez-vous à <link linkend="config-LSobject-LSrelation">la
de détails, reportez-vous à <link linkend="config-LSobject-LSrelation">la
section concernée</link>.</simpara>
</listitem>
</orderedlist>
<important><simpara>En cas d'installation à partir du code source, pensez à déclarer
les fichiers que vous venez de créer dans la variable <literal>LOCAL_FILES</literal>
du fichier <literal>local.sh</literal>. Exemple pour le type d'LSobjet portant comme
nom <literal>LSexample</literal> :</simpara>
<programlisting>public_html/conf/LSobjects/config.LSobjects.LSexample.php
public_html/includes/class/class.LSobjects.LSexample.php</programlisting>
<programlisting>src/conf/LSobjects/config.LSobjects.LSexample.php
src/includes/class/class.LSobjects.LSexample.php</programlisting>
</important>
<note><simpara>Vous pouvez également personnaliser l'interface : Il est
possible de personnaliser à votre goût l'interface en écrivant votre
template ou en modifiant simplement les fichiers CSS. Une partie de
cette documentation concernera bientôt cette problématique. Patience...
</simpara></note>
</listitem>
<listitem><simpara>En cas d'installation à partir du code source, une dernière
étape à ce niveau consiste à lancer le script <literal>upgradeFromGit.sh</literal>
pour qu'il installe les fichiers que vous venez de créer. Ce script est conçu pour
dire tout ce qu'il fait donc en cas de problème vous devriez rapidement comprendre
où cela coince. Dans tout les cas, n'hésitez pas à poser vos questions à la
où cela coince. Dans tout les cas, n'hésitez pas à poser vos questions à la
communauté sur la liste <email>ldapsaisie-users@lists.labs.libre-entreprise.org</email>.
</simpara></listitem>
</orderedlist>
</sect1>
</chapter>