Installation du Canal Stockage V3 (anciennement
Canal Webdav)
Présentation
Le Canal Stockage permet la gestion de documents au travers un
espace
de stockage personnalisé et/ou partagé.
Dans
le cadre du développement du projet inJAC, le canal a
été enrichi afin
de gérer des fonctionnalités avancées comme la
navigation entre
plusieurs espaces de stockage, la gestion des droits …
Pré-requis
Dans la mise en place de la gestion des droits, le Canal Annuaire
est utilisé pour sélectionner les utilisateurs. Il est
donc nécessaire d'installer ce Canal avant d'installer le Canal
Stockage.
Les versions suivantes du Canal Annuaire ont été
validées dans le Canal Stockage:
- CAnnuaire-1.0.1
- CAnnuaire-1.0.2
- CAnnuaire-1.0.3
- CAnnuaire-1.0.4
- CAnnuaire-1.0.5
ATTENTION: entre le passage de
la 3.2 à la 3.3, le namespace des méta-données des
espaces inJAC a été modifié dans le code. Cela
implique que toutes les méta-données positionnées
depuis un espace inJAC avec une version du canal inférieure
à 3.3 ne sont plus valides, et les fichiers deviennent
inutilisables.
Installation
L'installation du Canal Stockage se repose sur les actions suivantes:
- Recopie des libraires utilisées
- Configuration du Canal
- Déploiement du Canal
Recopie des librairies utilisées
Ce canal utilise les librairies :
- esup-acl-manager-1.0.1.jar
- commons-httpclient.jar (pour ceux qui utilisent un accès
DAV)
- jakarta-slide-webdavlib-2.4.1.jar (pour ceux qui utilisent un accès
DAV)
- jdom-1.0.jar
(pour ceux qui utilisent un accès DAV)
- jcifs-1.1.7.jar (pour ceux qui utilisent un accès
CIFS)
Ces librairies ne sont pas fournies par défaut avec le package
uPortal esup. Il est donc nécessaire de les ajouter manuellement
à la librairie de votre portail.
Celles-ci se trouve dans le répertoire lib du package CStockage.
Configuration du Canal
Configuration générale du Canal
La configuration générale du Canal Stockage se fait
via
le fichier properties/CStockage.xml
Structure générale
La structure générale du fichier de configuration du
canal est la suivante:
<CHANNEL_CONFIGURATION> <!-- Racine du fichier de configuration -->
<SERVER_ACCESS_CLASS> <!-- Définition des classes permettant l'accès à différents types de serveurs -->
<ACCESS/>
</SERVER_ACCESS_CLASS>
<CHANNEL_ACTION_CLASS> <!-- Les actions possibles du Canal liées à chaque espace -->
<ACTION/>
</CHANNEL_ACTION_CLASS>
<SPACES> <!-- Les espaces accessibles via le Canal -->
<SPACE/>
</SPACES>
<LDAP_ACCESS/> <!-- Paramètres d'accès au LDAP -->
<AUTH/> <!-- Paramètres liés à l'authentification -->
<DEFAULT_OPTIONS_INTERFACE/> <!-- Paramètres divers de suppression -->
<INVISIBLE_FILES> <!-- Définition des fichiers invisibles dans le Canal -->
<REG_EXP/>
</INVISIBLE_FILES>
</CHANNEL_CONFIGURATION>
Nous pouvons voir apparaître en caractères gras les
options de configuration qui doivent être éditées
par l'administrateur du portail.
Voyons en détail ces différentes parties:
Définition des espaces
Chaque espace de stockage accessible dans le Canal Stockage se
configure
au sein de la balise <SPACES>
Pour chaque espace à définir, une balise <SPACE>
est à décrire. Voyons sa structure :
<SPACE
key="key_1"
label="Espace à définir"
url="http://URL:PORT/CONTEXT/"
path="chemin/vers/le/répertoire"
serverType="webdav | cifs"
actionType="classic | injac"
authenticationMode="trusted | asked"
trustedLogin="admin"
trustedPassword="trusted"
aclNamespace="DAV:"
aclUserPrefix="/slide/users/"
aclGroupPrefix="/slide/roles/"
aclUportalGroup="uPortal"
cifsDomain=""
cifsResolveOrder="DNS,BCAST"
cifsDisablePlainTextPassword="false"
>
<ALLOWED
attribute="attribut_uportal"
value="valeur_de_l_attribut"
/>
</SPACE>
Balise
<SPACE>
key
Correspond à une clef unique à associer à chaque
espace
label
Intitulé de l'espace qui sera affiché à
l'utilisateur dans sa liste déroulante de choix
url
URL d'accès au serveur. Par exemple:
http://localhost:8080/slide/ dans le cas d'un serveur DAV.
Pour l'utilisation en mode CIFS, sur un serveur Samba par exemple, le
type d'URL est de la forme smb://votre_serveur ou smb://192.192.192.192
path
Chemin d'accès au répertoire visé dans cet espace.
La gestion des espaces peut se faire à travers des attributs
uPortal. Par exemple, nous pouvons utiliser l'attribut username
correspondant au login de la personne afin de
définir un espace de
travail personnel. Mis entre accolades, l'attribut est remplacé
automatiquement par sa valeur. Le path de cet espace personnel serait
alors /~{username}. Il
est également
possible de cette manière de créer des espaces de travail
partagés par
tous les étudiants d'une même promotion, il suffit pour
cela d'utiliser
l'attribut stockant le code étape de l'étudiant.
Pour un accès absolu à un répertoire, dans le cas
d'un serveur slide par exemple, le path est de la forme:
path="/files/y/yc/ycolmant"
serverType
Cette version du canal a été quelque peu modifiée
pour prendre en compte d'autres systèmes de
stockage que DAV, comme par exemple CIFS. Pour cela, il faut renseigner
l'attribut serverType
avec la valeur définie dans les balises <SERVER_ACCESS_CLASS>.
Dans cette version, les valeurs possibles sont webdav ou cifs.
actionType
Le canal a été enrichi avec différents modes
d'utilisation. Il existe toujours le mode par défaut qui est le
mode classic, mais le
mode injac a
également été ajouté. Le mode injac positionné sur un
espace permet l'apparition des actions particulières
liées à la publication de documents dans le CMS inJAC.
Le mode classic ne
demande aucune configuration particulière, en revanche, si le
mode injac est choisi
pour un espace, nous verrons dans la suite du document les
configurations particulières à faire.
authenticationMode
Dans cette version du Canal, il existe deux modes d'authentification:
- trusted
- asked
trusted est un mode
d'authentification via un mot de passe partagé par tous les
utilisateurs et renseigné dans le fichier de configuration.
Pour ce mode, il est OBLIGATOIRE
de renseigner l'attribut trustedPassword.
L'attribut trustedLogin
permet de forcer le cas échéant le login utilisé
pour la connexion au serveur.
Le mode asked permet de
demander les paramètres d'authentification de l'utilisateur
à chaque connection au portail. Si ce mode est choisi pour un
espace, l'utilisateur devra saisir manuellement le login et le mot de
passe pour y accéder.
Il est possible de donner un login par défaut via l'attribut trustedLogin.
trustedLogin
Il est possible en mode d'authentification trusted de forcer le login de
connexion au serveur de fichiers. Si l'attribut trustedLogin
est renseigné, ce login sera utilisé pour toutes les
connexions quelquesoit l'utilisateur qui se connecte au portail.
S'il n'est pas renseigné, le login utilisé sera celui de
la connexion au portail.
trustedPassword
En mode trusted, c'est le mot de passe utilisé par tous les
utilisateurs.
aclNamespace
Pour chaque espace, il est possible de dire si le serveur supporte les
ACL, c'est-à-dire les droits donné aux utilisateurs et
groupes d'utilisateurs sur les ressources au sein du serveur. Par
exemple, un serveur mod_dav ne supporte pas cette possibilité,
tandis qu'un serveur slide l'implémente.
Dans une prochaine version, il sera possible de gérer ces droits
au sein d'un espace de type classic.
Dans le cas où l'on souhaite profiter de cette
fonctionnalité, les attributs aclNamespace,
aclUserPrefix
et aclGroupPrefix
devront OBLIGATOIREMENT
être renseignés.
Par exemple, pour un serveur Slide, aclNamespace="DAV:".
Notons que dans le cas d'un espace de type injac, il est obligatoire de
prendre un serveur qui supporte les ACL, et de définir ces
attributs en fichier de configuration.
aclUserPrefix
Lors de l'utilisation des ACL dans un espace donné, il est
nécessaire de donner le préfixe utilisé pour la
gestion des utilisateurs sur le serveur. Pour être plus clair, ce
préfixe est nécessaire dans le chemin d'accès au
serveur pour que celui-ci sache où placer le droit.
Dans le cas d'un serveur slide, ce préfixe vaut par
défaut /slide/users/.
Attention, cette valeur pouvant être modifiée lors de
l'installation de slide, vérifier auprès de la
configuration du serveur avant.
aclGroupPrefix
Comme pour les utilisateurs, nous donnons ici le préfixe de
gestion des groupes pour les ACL au sein du serveur. Dans le cas de
slide, le préfixe vaut /slide/roles/.
aclUportalGroup
Lorsque l'on écrit un droit sur le serveur Slide, on le met dans
la branche correspondant aux groupes uPortal. Il faut donc renseigner
ici le noeud dans l'arborescence. Par défaut, cet attribut vaut uPortal.
cifsDomain
Ceci n'est utilisé que lorsque serverType="cifs". Cet attribut correspond
au domaine du serveur CIFS.
cifsResolveOrder
Une liste (chaines de caractères séparées par des
virgules) de noms de méthodes de résolution de noms
spécifiant quelles méthodes doivent être
utilisées et dans quel ordre pour résoudre les noms
d'hôtes. Les noms de méthodes possibles sont LMHOSTS, WINS, BCAST et DNS. Exemple: cifsResolveOrder="DNS,BCAST".
cifsDisablePlainTextPassword
Désactivée par défaut. Pour permettre à la
bibliothèque d'accès CIFS d'utiliser des mots de passe en
clair, cette propriété doit être initialisée
à cifsDisablePlainTextPassword="false".
Balise
<ALLOWED>
attribute
L'accès au Canal se définissant de façon globale
dans le gestionnaire de canaux d'uPortal, il est possible d'affiner
ceci en fixant des contraintes pour chaque espace. Pour cela, il faut
définir la balse <ALLOWED>.
Cette balise comporte les attributs attribute et
value.
Si la personne qui se connecte a, dans ses attributs uPortal,
l'attribute cité avec la valeur donnée, elle verra cet
espace, sinon, il lui sera masqué.
value
Ceci représente la valeur que doit avoir l'attribut attribute de
l'utilisateur pour que celui-ci puisse voir l'espace.
Exemple de
configuration pour un espace WEBDAV
<SPACE
key="space_0"
label="Mes documents WEBDAV"
url="http://mon_serveur:8080/slide/"
path="~{uid}"
serverType="webdav"
actionType="classic"
authenticationMode="trusted"
trustedPassword="trusted"
aclNamespace="DAV:"
aclUserPrefix="/slide/users/"
aclGroupPrefix="/slide/roles/"
aclUportalGroup="uPortal"
/>
Exemple de
configuration pour un espace CIFS
<SPACE
key="space_1"
label="Mes documents CIFS"
url="smb://192.192.192.192"
path="/{uid}"
serverType="cifs"
actionType="classic"
authenticationMode="asked"
cifsDomain="univ.fr"
cifsResolveOrder="DNS,BCAST"
cifsDisablePlainTextPassword="false"
/>
Accès au serveur LDAP
Lors de l'accès aux ACL via le Canal, il est possible de
visualiser celles qui ont déja été placées
précédemment.
Le mode de gestion des ACL fait que nous ne pouvons
récupérer que l'identifiant de la personne ou le groupe
visé par cette ACL. Pour avoir une meilleur visibilité,
il est donc nécessaire de définir les paramètres
d'accès au serveur LDAP pour récupérer le
véritable nom de l'utilisateur.
La structure de cette balise est la suivante:
<LDAP_ACCESS
serverUrl="ldap://ldap.univ.fr:389"
people="ou=people,dc=univ,dc=fr"
userKeyAttribute="uid"
userDisplayNameAttribute="displayName"
/>
serverUrl
L'url du serveur ldap. Typiquement cet attribut est de la forme ldap://ldap.univ.fr:389.
people
Ceci représente le dn de la branche people du LDAP.
userKeyAttribute
Attribut LDAP contenant le login de la personne connectée.
userDisplayNameAttribute
Attribut LDAP contenant le nom complet de la personne connectée
à afficher. ATTENTION:
le nom de cet attribut doit OBLIGATOIREMENT être défini
dans le canal annuaire afin que la valeur de celui-ci puisse être
passée entre les deux canaux.
Paramètres généraux d'authentification
<AUTH
usernameAttribute="username"
/>
usernameAttribute
Attribut uPortal contenant le login de la personne qui cherche à
se connecter.
Paramètres divers de suppression
Dans le cas d'un accès à un espace en mode classic, il
est possible de définir des options de suppression de ressources
sur le serveur.
<DEFAULT_OPTIONS_INTERFACE
confirmDel="true"
allowDelNonEmptyFolder="true"
/>
confirmDel
Vaut true si on demande
confirmation avant de supprimer une ressource. Si false, on supprime sans
demander confirmation.
allowDelNonEmptyFolder
Permet de dire si on peut supprimer des répertoires non vides.
Si true, on a le droit de
supprimer des répertoires non vides, si false, il est impossible de
supprimer un répertoire non vide.
Fichiers invisibles
Afin de ne pas pouvoir accéder à certains fichiers
propres au serveur (comme .htaccess dans Apache), nous pouvons
définir un critère "d'invisibilité" de certaines
ressources.
<INVISIBLE_FILES>
<REG_EXP
pattern="^\..*"
/>
</INVISIBLE_FILES>
pattern
Expression réguliére permettant de dire quels fichiers
doivent être masqué à l'utilisateur.
Dans l'exemple ^\.. les
fichiers commençant par un point sont interdits.
Configuration du module inJAC
Nous avons précédemment vu que certains espaces peuvent
être utilisés en mode injac. Pour l'utilisation de ce
mode, il est nécessaire de définir certaines
propriétés.
Structure générale
Le fichier de propriété propre à ce mode est properties/injac/injac.xml
Sa forme générale est la suivante:
<INJAC> <!-- Racine du fichier de configuration -->
<METADATA_PROFILES> <!-- Ensemble des profiles méta-données -->
<METADATA_PROFILE/>
</METADATA_PROFILES>
<RENDERINGS> <!-- Ensemble des uri des css utilisables pour le rendu des documents d'un espace injac -->
<RENDERING/>
</RENDERINGS>
</INJAC>
Voyons plus en détail ces balises.
Liste de méta-données
Lors de l'utilisation du CMS inJAC, des méta-données
doivent être positionnées par l'utilisateur qui cherche
à soumettre ou à publier un document. Ces
méta-données sont fixées par le gestionnaire de
l'espace.
Pour que le traitement du gestionnaire soit le moins lourd possible, le
choix qui a été fait est de définir des profils
type de méta-données. Le gestionnaire n'a alors
qu'à choisir le profil désiré.
Voyons la balise à éditer pour spécifier ces
méta-données:
<METADATA_PROFILES>
<METADATA_PROFILE
fileName="default.xml"
label="Méta-données par défaut"
/>
</METADATA_PROFILES>
Pour chaque profile de méta-données, il faut
définir une balise <METADATA_PROFILE>.
Voyons les attributs qui la composent:
fileName
Cet attribut contient le nom du fichier xml qui contient tout le
profile. Ce fichier doit IMPERATIVEMENT
se trouver dans le dossier properties/injac/metadata.
Nous verrons la forme de ce fichier dans la partie "Définitions
d'un profil de méta-données".
label
Ceci est le label de ce profil qui est affiché au gestionnaire
de l'espace inJAC.
Liste de feuilles de style pour rendu
Pour chaque espace, le gestionnaire peut choisir le rendu qui sera
associé grace à une feuille de style. Pour cela, le
gestionnaire a la possibilité de choisir ce rendu dans une liste
déroulante.
Cette liste est construite via la balise suivante:
<RENDERINGS>
<RENDERING
url="http://serveur/file1.css"
label="Rendu par défaut"
/>
</RENDERINGS>
Pour chaque feuille de style potentiellement utilisable, il faut
définir une balise <RENDERING>.
url
URL de la feuille de style à utiliser pour un espace
donné.
label
Label affiché au gestionnaire lors de son choix.
Définition d'un profile de méta-données
Un format a été défini pour la
définition des méta-données à saisir par
l'utilisateur au moment de la soumission, ou de la publication d'un
document.
La forme globale du fichier doit être de cette forme:
<?xml version="1.0" encoding="ISO-8859-1"?>
<metas>
<meta/>
</metas>
Chaque balise <meta>
représente une méta-donnée à positionner
lors de la soumission ou la publication d'un document.
Voyons plus précisémment sa forme.
<meta
name="---"
label="---"
input="text|textarea|select"
choiceList="a,b,c"
type="string|date"
required="yes|no"
level="edition|publication"
defaultValue="---"
comment="---"
format="regexp|dateFormat"
/>
name
Ceci est le nom réel de la méta-donnée au sein du
serveur.
label
Un nom donné à la méta-donnée pour plus de
compréhension par l'utilisateur.
input
Représente le type de saisie, cet attribut peut prendre 3
valeurs:
- text:
sera représenté par un champ de saisie de type "text"
dans un formulaire HTML.
- textarea: correspond à une zone de saisie
sur plusieurs lignes
- select: liste déroulante
choiceList
Utilisable uniquement et obligatoirement si input="select", cet attribut permet de
définir la liste des choix possible pour cette
méta-données. Toutes les valeurs doivent être
séparées par une virgule.
type
Type de la valeur attendue pour la méta-donnée. Les
valeurs possibles sont string
et date.
required
Certaines méta-données peuvent être optionnelles (required="yes") et d'autres obligatoires (required="no").
level
Indique le niveau de saisir pour cette méta-donnée,
c'est-à-dire la personne qui va devoir la saisir. Si level="edition", c'est le
rédacteur (lors de la soumission) qui devra la saisir, tandis
que ça sera l'éditeur (lors de la publication) si level="publication".
defaultValue
La méta-donnée peut prendre une valeur par défaut,
c'est via cet attribut qu'elle est définie.
comment
Afin d'apporter une certaine clarté à l'utilisateur, il
est possible de mettre un commentaire qui sera affiché dans le
canal à côté du champ de saisie.
format
Il est possible de définir un format pour les
méta-données à saisir. Pour cela, 2
possibilité:
- Si type="string", il faudra
définir une expression régulière (pour un email
par exemple)
- Si type="date", il daudra définir
un format de date correspondant à la classe DateFormat en Java.
Par exemple, "dd/MM/yyyy"
pour une date du type 15/06/2004.
Remarque
Sous windows, des problèmes d'encodage des caractères
accentués ont été relevés lors de
l'édition de ces fichiers via l'outil notepad. Préférez
l'utilisation de wordpad.
Déploiement du Canal
Préparation du
déploiement : modifier le fichier build.properties
en fonction de la version de
portail que vous utilisez.
Lancez la commande "ant deploy" relative au fichier build.xml
contenu dans le package.
Il ne reste plus qu'à
l'administrateur du portail de publier le canal.