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.
Attention
Cette version du canal stockage ne fonctionne qu'avec un canal annuaire à partir de la version 3.0.
Le canal permet l'accès à une base de données pour le partage de documents, il est nécessaire de déployer le MAG, car le Canal Stockage utilise le système d'accès à des bases de données de celui-ci. Notons que même si vous ne comptez pas utiliser cette fonctionnalité, le déploiement du MAG est indispensable.
Une propriété du canal permet de passer en mode HTTPS lors de la saisie du mot de passe. Si vous utilisez cette option, vous devez vous assurer que votre version du portail possède la servlet HTTPSGateway utilisée. Elle est incluse dans les distributions esup-portail issues d'uportal 2.4 à partir de février 2005.
Note
Cette version du canal permet la gestion des partages en mode classique via les ACL WebDAV et l'attribution de droits de lecture en mode inJAC. Les anciennes versions du serveur WebDAV ESUP ne permettaient pas cette gestion. De ce fait, ces fonctionnalités ne sont disponibles que si vous utilisez un serveur WebDAV ESUP à partir de la version 3.5.
En revanche, pour les sites qui ont un serveur en production contenant des données. Il est possible de migrer vers une version 3.5 en gardant ces données. Mais, les ACL placées sur les espaces ainsi que la métadonnée owner doivent être mis à jour. Pour cela, un pattern a été écrit pour le client d'administration du serveur. Reportez-vous au guide d'utilisation du serveur, section 7.7. The ESUP storage channel (V4.2 and higher).
Si vous ne voulez pas utiliser ces fonctionnalités, il n'y a aucune contre-indication concernant les versions du serveur.
Important
Dans la version 4.3, le mode inJAC est maintenu mais son utilisation n'est pas pas encouragé et la fonctionnalité disparaîtra dans une version future.
Nous travaillons présentement sur le projet ORI-OAI (http://www.ori-oai.org) qui vise à développer un outil de référencement et d'indexation intégrable au sein de ESUP Portail. Ce projet s'inspire d'une partie des composants inJAC actuels en améliorant considérablement leurs fonctionnalités.
Le mode inJAC sera indisponible dans la prochaine version du canal stockage.
Important
Le canal d'administration des espaces est toujours disponible dans la version 4.3, mais n'est plus maintenu car toutes les fonctionnalités dont il disposait sont maintenant disponibles depuis le fichier de configuration.
Une routine d'exportation des espaces saisis depuis ce canal est disponible. Reportez-vous à Section " Migration de la base de données" .
Il est recommandé d'exporter les données dès la version 4.3 du canal, car le canal d'administration ne sera plus disponible dans les prochaines versions.
Plusieurs changements de configuration sont intervenus depuis la version 4.2. Voici brièvement la liste des modifications, reportez-vous à Section " Configuration du canal" pour plus de détails.
L'attribut key devient obligatoire pour chaque balise <SPACE>
Passage de certains attributs de <SERVER> dans des balises <PARAMETER>
Passage de l'attribut aclSecurity de <SPACE> vers <SERVER>
Ajout d'un attribut obliged pour rendre optionnel un espace à partir du fichier de config
Ajout de la balise <AUTHORIZATION> pour gérer les autorisations d'accès aux espaces depuis le fichier de config
Ajout de la balise <SHARING> pour la nouvelle interface de sélection des espaces partagés
Ajout de l'attribut showQuota dans <SPACE> pour rendre paramétrable l'affichage du quota
Ajout de allowPublicSharing dans <SPACE> pour rendre optionnel la possibilité pour un utilisateur de rendre public un dossier dans le cas d'un partage WebDAV
Ajout de cifsShowHiddenFiles pour afficher ou non les ressources cachées dans un espace CIFS
Ajout de cifsShowHiddenFilesList pour spécifier l'affichage de certaines ressources cachées dans un espace CIFS
Modification de la version de certaines librairies, voyez à avoir les bonnes versions.
Dans la base de données, il faut modifier la table storage_users_preferences, le foreign key est à supprimer.
Le driver pour Oracle n'est plus disponible dans cette version pour des causes de droits. Vous devez-vous le procurer sur le site d'Oracle directement.
Amélioration de l'interface de sélection des espaces préférés.
Modification de l'interface de partage. Le manager de groupes du portail n'est plus utilisé. Une interface a été développée afin d'intérroger directement les groupes du serveur WebDAV.
Les établissements utilisant la base de données dans le cas du partage avant la version 4.3 doivent OBLIGATOIREMENT apporter quelques modification à la base de données.
Il est nécessaire d'ajouter l'attribut server_principal. Reportez-vous au fichier de création des tables correspondant à votre type dans le dossier db.
Depuis la version 4.3 du canal, il est possible de saisir soi-même le libellé de l'espace que l'on ajoute dans ses espaces préférés. Pour cela, il est nécessaire d'ajouter l'attribut label. Reportez-vous au fichier de création des tables correspondant à votre type dans le dossier db.
De plus, le foreign key est à supprimer pour les bases de données déjà existantes.
Le format de certains attributs de la base de données à changé, pour cela, il est nécessaire de procéder à une migration des données après ajout des attributs cités ci-dessus. Reportez-vous à Section " Utilisation de la procédure de migration/exportation" pour l'utilisation de cette procédure.
Tous les espaces saisis depuis le canal d'administration version 4.2 et antérieures sont exportables dans un fichier texte.
La procédure d'exportation procède comme suit:
Exportation des espaces dans un fichier que vous spécifiez.
Suppression de ces espaces dans la base de données. Notez que seuls les espaces saisis avec le canal d'administration sont supprimés. Les espaces entrés par l'interface de partage en mode WebDAV ne sont pas touchés.
Il est vivement recommandé de faire une sauvegarde de toutes les tables de la base de données du canal stockage avant d'activer cette procédure. Ceci pour palier à d'éventuels bugs, surtout pour les premiers testeurs. Reportez-vous à Section " Utilisation de la procédure de migration/exportation" pour l'utilisation de cette procédure.
Le dossier db du package contient un dossier migration_4.3 qui permet la procédure. Ce dossier contient les sources de la procédure, ainsi qu'un fichier build.properties et build.xml pour ant.
Premièrement, compléter le fichier build.properties
Puis, lancer la tâche ant run dans le même dossier.
Dans le cas d'une exportation des espaces configurés via le canal d'administration, ouvrez le fichier créé (celui que vous avez spécifié dans build.properties) et copiez son contenu vers votre fichier de config du canal stockage en respectant bien l'emplacement des balises (<SERVER>/<SPACE>).
Vous pouvez alors déployez votre canal.
L'installation du Canal Stockage se repose sur les actions suivantes:
Recopie des libraires utilisées
Configuration du Canal
Déploiement du Canal
Ce canal utilise les librairies :
commons-httpclient.jar (pour ceux qui utilisent un accès DAV)
commons-httpclient-contrib.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)
esup-acl-manager-1.5.jar
db-ojb-1.0.1.jar
Ces librairies ne sont pas fournies par défaut avec le package uPortal esup. Il est donc nécessaire d'ajouter manuellement celles dont vous avez besoin, suivant l'utilisation du canal, à la librairie de votre portail. Celles-ci se trouve dans le répertoire lib du package CStockage.
Pour l'accès à la base de données pour le partage de documents, nous verrons par la suite qu'il est possible d'utiliser un pool de connexions JNDI ou une connexion JDBC classique. Le répertoire lib du package CStockage contient donc 2 drivers JDBC nécessaires:
mysql-connector-java-3.0.15-ga-bin.jar (MySQL)
pg74.1jdbc3.jar (Postgresql)
le driver oracle est à récupérer sur le site d'Oracle directement
Suivant le SGBD que vous utilisez, il vous faut recopier le bon driver dans la librairie de votre Tomcat.
La configuration générale du Canal Stockage se fait via le fichier properties/CStockage.xml. Celui-ci n'est pas présent dans le package, il faut renommer le fichier CStockage.xml.example en CStockage.xml.
La structure générale du fichier de configuration du canal est la suivante:
<CHANNEL_CONFIGURATION> <!-- Racine du fichier de configuration --> <!-- ########################### ## ## ## PARTIE DEVELOPEUR ## ## ## ########################### --> <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> <SPACE_ATTRIBUTES_CHECKED> <!-- Liste des attributs de la balise SPACE dont on vérifie si la valeur est de la forme {...} --> <ATTRIBUTE/> </SPACE_ATTRIBUTES_CHECKED> <ALLOWED_DOCUMENTS/> <!-- Format que les documents doivent respecter --> <!-- ########################### ## ## ## PARTIE INSTALLATION ## ## ## ########################### --> <SPACES> <!-- Les espaces accessibles via le Canal --> <SERVER> <SPACE/> </SERVER> </SPACES> <SHARING> <!-- Mapping des url des serveurs pour la sélection des partages --> <SERVER/> </SHARING> <LDAP_ACCESS/> <!-- Paramètres d'accès au LDAP --> <DATABASE_ACCESS/> <!-- Paramètres d'accès à la base de données --> <DIRECTORIES/> <!-- Liste des annuaires accessibles dans le canal annuaire --> <AUTHENTICATION/> <!-- 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 italique les balises destinées aux développeurs du canal et qui ne doivent en aucun cas être modifiées. Les autres balises sont les options de configuration qui doivent être éditées par l'administrateur du portail.
Voyons en détail ces différentes parties:
Chaque espace de stockage accessible dans le Canal Stockage se configure au sein de la balise <SPACES>
Cet attribut permet de dire si on utilise la fonction de personnalisation des espaces dans le Canal. Nous verrons que, dans un espace classique, nous pouvons utiliser la fonction de partage de dossiers. Cet attribut permet alors de dire si on utilisera ce mode dans le canal. Pour l'utiliser, la valeur doit être à true, sinon à false. Si la valeur est true, il faut absolument avoir configuré l'accès à la base de données via la balise <DATABASE_ACCESS>.
Pour chaque espace à définir, il faut tout d'abord définir une balise <SERVER>. Ensuite, au sein d'un serveur, on peut définir plusieurs balises <SPACE>. Voyons sa structure :
<SPACES personalization="true | false"> <SERVER url="http://URL:PORT/CONTEXT/" serverType="webdav | cifs" authenticationMode="trusted | asked" login="admin" password="trusted" > <PARAMETER name="aclNamespace" value="DAV:"/> <PARAMETER name="aclUserPrefix" value="/slide/users/"/> <PARAMETER name="aclGroupPrefix" value="/slide/roles/"/> <PARAMETER name="aclUportalGroup" value="uPortal"/> <PARAMETER name="aclSecurity" value="/slide/roles/local/root"/> <PARAMETER name="cifsDomain" value=""/> <PARAMETER name="cifsResolveOrder" value="DNS,BCAST"/> <PARAMETER name="cifsDisablePlainTextPassword" value="false"/> <PARAMETER name="unauthenticatedServerUrl" value="http://PUBLIC_URL:PORT"/> <PARAMETER name="injacPreviewUrl" value="http://URL:PORT/injac/preview"/> <SPACE key="home_dir_space_1_key" label="Espace à définir" path="chemin/vers/le/répertoire" pathRegexp="^(/slide/files)/.*:^(.).*:^/slide/files/(.).*:^(.).*:^/slide/files/(..).*:^(.).*:^/slide/files/(.*)" pathRegexpSeparator=":" actionType="classic | injac" sharing="simple | complex | none" obliged="true | false" showQuota="true | false" allowPublicSharing="true | false" > <AUTHORIZATION operator="or"> <ALLOWED attribute="attribut_uportal" value="valeur_de_l_attribut"/> <ALLOWED attribute="portal_group" value="pags.mon_pags"/> </AUTHORIZATION> </SPACE> </SERVER> </SPACES>
Il est possible de définir plusieurs balises <SERVER>. Pour chacune de ces balises, il faut définir au minimum une balise <SPACE>.
La balise <SERVER> correspond aux paramètres généraux du serveur comme l'url, le login et le password de connexion, etc.
Certains paramètres du serveur sont gérées en tant qu'attributs de <SERVER>, ce sont les attributs obligatoires pour tous les modes du canal. En revanche, les attributs propres un un mode d'utilisation, comme ceux du CIFS, sont contenus dans les balises <PARAMETER>.
Les balises <SPACE> correspondent quant à elles aux différents espaces accessibles sur ce serveur.
Les paramètres de connexion étant définis au niveau du serveur et non de l'espace, pour chaque espace défini, le mode de connexion ainsi que les paramètres seront les mêmes. Par exemple, si on défini un serveur accessible avec une saisie de mot de passe, et qu'il existe plusieurs espaces, le login et le mot de passe seront identiques pour tous les espaces et l'utilisateur n'aura pas besoin de saisir plusieurs fois ses paramètres.
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.
Dans les versions précédentes du canal, lors de l'utilisation d'un serveur avec contexte, comme le serveur Slide par exemple, il était possible de définir ce contexte dans l'url ou dans le path. Nous pouvions avoir les 2 syntaxes qui suivent:
url="http://localhost:8080/slide" et path="/files/"
url="http://localhost:8080" et path="/slide/files"
Dorénavant, le contexte devra absolument être défini dans le path. En reprenant l'exemple précédent, la syntaxe doit donc être:
url="http://localhost:8080" et path="/slide/files"
De plus, l'url ne doit pas se terminer par le caractère "/".
Cette version du canal peut 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
cifs
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 password. L'attribut login 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 mot de passe pour y accéder. Il est cependant possible de forcer le login défaut via l'attribut login. Si une valeur est donnée à cet attribut, l'utilisateur ne pourra pas modifier le champ "login" du formulaire. Si l'attribut login du fichier de configuration n'est pas saisi, le champ "login" du formulaire de saisie aura comme valeur son login de connexion au portail, sachant qu'il aura alors la possibilité de le modifier.
Il est possible en mode d'authentification trusted de forcer le login de connexion au serveur de fichiers. Si l'attribut login 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.
Tout comme pour l'attribut path, l'attribut login peut être basé sur un attribut uPortal autre que celui défini dans la balise AUTHENTICATION/usernameAttribute. Pour cela, il suffit de mettre entre accolades le nom de l'attribut uPortal. Par exemple, login="{mail}" si pour un espace en particulier le login de connexion est l'adresse mail de l'utilisateur.
Note
Lorsque l'on configure un espace en mode inJAC, le login à utiliser est celui d'un compte qui a tous les droits sur l'espace inJAC. Par exemple, un compte administrateur du serveur ou un compte explicite dans le LDAP. Ce login doit correspondre à adminLogin renseigné dans le fichier de template utilisé pour la création de l'espace inJAC sur le serveur (Voir ici), à la ligne
<permission subjectUri="/users/adminLogin" actionUri="all" negative="false"/>
En mode trusted, c'est le mot de passe utilisé par tous les utilisateurs qui accèdent à cet espace.
Les balises <PARAMETER> permettent de définir des attributs particuliers dans certains cas d'utilisation.
On utilise cette balise avec la syntaxe suivante:
<PARAMETER name="nom_parametre" value="valeur_parametre"/>
Toutes les valeurs et les cas d'utilisation possibles de nom_parametre sont listés ci-dessous.
Pour chaque espace, il est possible de dire si le serveur supporte les ACL, c'est-à-dire les droits donnés 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 cette version, il est possible de gérer les partages de documents et droits associés au sein d'un espace de type classic. Dans le cas où l'on souhaite profiter de cette fonctionnalité, les attributs aclNamespace, aclUserPrefix, aclGroupPrefix, aclUportalGroup et aclSecurity devront OBLIGATOIREMENT être renseignés.
Par exemple, pour un serveur Slide, <PARAMETER name="aclNamespace" value="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.
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.
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/.
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.
Cet attribut correspond à une ACL de sécurité lorsque l'on gère les droits dans le canal:
Dans le partage en mode classique
Dans la gestion des lecteurs en mode inJAC
<PARAMETER name="aclSecurity" value="/slide/roles/local/root"/>
Ceci n'est utilisé que lorsque serverType="cifs". Cet attribut correspond au domaine du serveur CIFS. OPTIONNEL.
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. OPTIONNEL. Exemple:
<PARAMETER name="cifsResolveOrder" value="DNS,BCAST"/>
Désactivée par défaut. OPTIONNEL. Pour permettre à la bibliothèque d'accès CIFS d'utiliser des mots de passe en clair, cette propriété doit être initialisée à:
<PARAMETER name="cifsDisablePlainTextPassword" value="false"/>
Ceci est utilisé si on veut utiliser l'unicode pour le serveur CIFS désigné. Les valeurs sont true ou false. OPTIONNEL.
Utilisé pour préciser l'encodage utilisé sur le serveur. OPTIONNEL. Exemple:
<PARAMETER name="cifsEncoding" value="UTF8"/>
Utilisé pour préciser que l'on veut afficher tous les fichiers ou dossiers cachés en mode CIFS. OPTIONNEL. Exemple:
<PARAMETER name="cifsShowHiddenFiles" value="false"/>
Utilisé pour préciser que l'on veut afficher certains fichiers ou dossiers cachés en mode CIFS. Chaque valeur doit être séparée par une virgule. OPTIONNEL. Exemple:
<PARAMETER name="cifsShowHiddenFilesList" value="fichier1,dossier2"/>
Lorsque l'on autorise les partages dans un espace, l'utilisateur peut rendre publique un de ses répertoires. Si c'est le cas, on peut donner un lien vers ce répertoire en mode non authentifié. Cette variable est optionnelle.
L'URL que doit contenir cette variable correspond donc à l'URL du serveur WebDAV ESUP en mode Unauthenticated. Attention à ne pas mettre le contexte dans la variable. Exemple:
<PARAMETER name="unauthenticatedServerUrl" value="http://public_slide.univ.fr:8181"/>
Lorsque l'on travaille dans un espace inJAC, il est possible d'avoir une prévisualisation des documents non encore publiés. En indiquant ici l'URL de prévisualisation du moteur de rendu, il y aura une icône devant le document permettant d'accéder à son rendu (optionnel). Exemple:
<PARAMETER name="injacPreviewUrl" value="http://injac.univ.fr/injac/preview"/>
A partir de la verson 4.3, cet attribut devient obligatoire. Il doit contenir une clef unique pour chaque espace défini.
Depuis cette version, il est possible de rendre optionnel un espace depuis le fichier de configuration. Dans ce cas d'utilisation, les utilisateurs vont pouvoir s'affecter ces espaces via l'interface de sélection associée dans le canal. L'affectation se fait alors dans la base de données en mémorisant la valeur de la clef définie ici. Lorsque vous utilisez un espace optionnel, il est donc IMPERATIF de ne JAMAIS changer la valeur de cette clef dans le fichier de configuration.
Intitulé de l'espace qui sera affiché à l'utilisateur dans sa liste déroulante de choix
Chemin d'accès au répertoire visé dans cet espace. Un exemple de chemin peut être "/files/mon_espace/".
La gestion des espaces peut se faire à travers des attributs uPortal mis entre accolades. Mis entre accolades, l'attribut est remplacé automatiquement par sa valeur.
Par exemple, nous pouvons utiliser l'attribut username correspondant au login de la personne afin de définir un espace de travail personnel. Le path de cet espace personnel serait alors "/{username}". Il est également possible de cette manière d'accéder à 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" ou path="/files/t/tn/ycolmant" suivant le hachage qui a été défini sur le serveur au moment de la création des "home dir".
Lors de l'utilisation du mode d'authentification asked, il est possible de changer le path en fonction du login saisi par l'utilisateur. En effet, dans ce mode, on peut laisser le choix à l'utilisateur de saisir un login en plus du mot de passe requis. Dans ce cas, en utilisant la chaine "{storageFormLogin}" dans le path, ce qui est entre accolade sera automatiquement replacé par le login saisi par l'utilisateur. Ceci peut être utile dans le cas d'un accès CIFS où le chemin d'accès sur le serveur CIFS est différent du login uPortal. Dans ce cas, on pourra mettre, par exemple, path="/home/{storageFormLogin}" dans le fichier de config, et si l'utilisateur saisi le login yohan dans le formulaire de connexion, le path sera automatiquement transformé en "/home/yohan".
Il est possible d'utiliser une expression régulière pour la transformation du path. Par exemple, si nous voulons reproduire un système de hachage depuis le canal.
Prenons l'exemple d'un serveur Slide où les espaces personnels des utilisateurs sont accessibles à "/slide/files/y/yc/ycolmant". Dans le canal, nous ne connaissons que "/slide/files" et "ycolmant", et pour ne pas implémenter "en dur" la logique de redirection, ceci peut être fait par une expression régulière. Voyons la logique pour l'exemple donné.
Puisque nous ne connaissons que "/slide/files" et "ycolmant", fixons le path à "/slide/files/ycolmant". Le traitement de ce chemin va être fait en 7 étapes par 7 expressions régulières différentes, chacune appliquée sur le path. Chaque traitement se fait indépendement des autres, et chaque nouveau résultat est concaténé au résultat précédent.
Expression 1: "^(/slide/files)/.*" Le traitement de cette expressions nous donne le résultat "/slide/files"
Expression 2: "^(.).*" Le traitement de cette expressions nous donne le résultat "/"
Expression 3: "^/slide/files/(.).*" Le traitement de cette expressions nous donne le résultat "y"
Expression 4: "^(.).*" Le traitement de cette expressions nous donne le résultat "/"
Expression 5: "^/slide/files/(..).*" Le traitement de cette expressions nous donne le résultat "yc"
Expression 6: "^(.).*" Le traitement de cette expressions nous donne le résultat "/"
Expression 7: "^/slide/files/(.*)" Le traitement de cette expressions nous donne le résultat "ycolmant"
La concaténation de tous ces résultats nous donne bien ce que l'on attendait: "/slide/files/y/yc/ycolmant".
Toutes ces expressions régulières peuvent être assemblées en utilisant un caractère de séparation, prenons pour notre exemple le ":".
Pour reproduire la description précédente, il suffit alors de donner à l'attribut pathRegexp comme valeur la concaténation de toutes les expressions régulières séparées par un caractère choisi. Ce caractère étant précisé par l'attribut pathRegexpSeparator:
pathRegexp="^(/slide/files)/.*:^(.).*:^/slide/files/(.).*:^(.).*:^/slide/files/(..).*:^(.).*:^/slide/files/(.*)"
Pour que tous les utilisateurs puissent être associés à cette expression régulière, il ne faut donc pas mettre "/slide/files/ycolmant", mais "/slide/files/{username}" dans le champ path. Ainsi, cette transformation sera effectuée pour la valeur de username de chaque utilisateur.
Pour le hachage inversé (/slide/files/t/tn/ycolmant), le champ pathRegexp doit être formé comme suit:
pathRegexp="^(/slide/files)/.*:^(.).*:^/slide/files/.*(.):^(.).*:^/slide/files/.*(.):^/slide/files/.*(.).:^(.).*:^/slide/files/(.*)"
Comme expliqué dans la description de l'attribut pathRegexp, pathRegexpSeparator est utilisé pour séparer chaque expression régulière.
Le canal a été enrichi avec différents modes d'utilisation. Il existe le mode par défaut qui est le mode classic, mais aussi le mode injac. 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 supplémentaire dans le canal, en revanche, si le mode injac est choisi pour un espace, nous verrons dans la suite du document les configurations particulières à faire en plus.
Comme nous l'avons vu pour l'attribut personalization, il est possible de permettre à des utilisateurs de partager des dossiers à d'autres usagers ou groupes d'usagers (uniquement si actionType="classic" et si "serverType=webdav" et que ce serveur est un serveur WebDAV ESUP).
L'utilisation du partage nécessite tout de même la saisie des balises et attributs suivants:
aclNamespace
aclUserPrefix
aclGroupPrefix
aclUportalGroup
aclSecurity
<DATABASE_ACCESS>
Pour utiliser le partage dans un espace, il faut dont définir l'attribut sharing. Pour cela, plusieurs valeurs sont possibles:
sharing="simple" : c'est un mode d'utilisation simple pour l'utilisateur. Il ne peut pas gérer l'héritage des ACL: elles sont toutes héritées par défaut.
sharing="complex" : c'est un mode d'utilisation avancé. L'utilisateur peut gérer l'héritage des ACL dans ses dossiers. Il peut aussi voir la liste des ACL héritées sur chaque dossier. C'est le mode qui était utilisé dans la version 4.2 du canal.
sharing="none" : on n'utilise pas le partage dans cet espace.
Tout comme on pouvait le faire en utilisant le canal d'administration, on peut à partir de la version 4.3 du canal rendre un espace optionnel pour les utilisateurs auxquels cet espace est destiné. Si l'attribut n'est pas défini, c'est true qui est pris par défaut.
Notons que pour utiliser cette option, il faut que personalization="true" dans la balise <SPACES>.
Si obliged="false", l'utilisateur devra s'affecter manuellement l'espace dans sa liste déroulante. S'il ne le fait pas, il ne verra pas cet espace lors de sa connexion.
Si obliged="true", c'est un espace classique qui se mettra automatiquement dans le menu déroulant de l'utilisateur si celui-ci y a accès.
Dans les versions précédentes à la version 4.3, l'affichage du quota disponible dans les espaces était affiché obligatoirement dès que l'information était disponible. A partir de la version 4.3, cet affichage peut être optionnel:
Si showQuota="false", l'utilisateur ne verra pas le quota disponible sur son espace, même si l'information est disponible.
Si showQuota="true", le quota sera affiché si disponible.
Lors du partage d'un espace, l'utilisateur a la possibilité de rendre son espace public. Ceci est rendu optionnel à partir de la version 4.3:
Si allowPublicSharing="false", l'utilisateur ne pourra pas modifier l'état public de son espace. Si son espace a été rendu public au préalable, une information lui est tout de même affichée.
Si allowPublicSharing="true", l'utilisateur peut modifier l'état public de son espace comme auparavant.
Balise <AUTHORIZATION>
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 utiliser la balise <AUTHORIZATION>.
Cette balise permet de définir des restrictions de droits d'accès sur l'espace courant. Elle contient des sous-balises <ALLOWED> permettant à chacune de définir une restriction. Toutes ces restrictions peuvent être associées par un opérateur dont les possibilités sont les suivantes:
Cet attribut permet d'associées entre elles les balises <ALLOWED> avec un opérateur ET ou OU. Si l'attribut n'est pas défini, c'est OU qui est pris par défaut.
Si operator="and", l'utilisateur accèdera à l'espace si son profil répond à tous les critères définis par les balises <ALLOWED>.
Si operator="or", l'utilisateur accèdera à l'espace si son profil répond à au moins un critère défini dans les balises <ALLOWED>.
Balise <ALLOWED>
Cette balise comporte les attributs attribute et value. Lors de la connexion d'une personne, les valeurs de ses attributs uPortal sont comparées à l'attribut cité avec la valeur donnée.
Le nom de l'attribut uPortal à vérifier. On peut également tester sur la valeur d'un groupe uPortal de l'utilisateur. Dans ce cas, attribute="portal_group".
Ceci représente la valeur que doit avoir l'attribut attribute de l'utilisateur pour que celui-ci puisse voir l'espace. Dans le cas où attribute="portal_group", on mettra la clef d'un groupe uPortal comme par exemple value="pags.mon_pags".
<SERVER url="http://mon_serveur:8080" serverType="webdav" authenticationMode="trusted" password="trustedPassword" /> <PARAMETER name="aclNamespace" value="DAV:"/> <PARAMETER name="aclUserPrefix" value="/slide/users/"/> <PARAMETER name="aclGroupPrefix" value="/slide/roles/"/> <PARAMETER name="aclUportalGroup" value="uPortal"/> <PARAMETER name="aclSecurity" value="/slide/roles/local/root"/> <PARAMETER name="unauthenticatedServerUrl" value="http://public_slide.univ.fr:8181"/> <SPACE key="home_dir_space_1_key" label="Mes documents WEBDAV" path="/slide/files/{username}" pathRegexp="^(/slide/files)/.*:^(.).*:^/slide/files/(.).*:^(.).*:^/slide/files/(..).*:^(.).*:^/slide/files/(.*)" pathRegexpSeparator=":" actionType="classic" sharing="simple" obliged="false" showQuota="true" allowPublicSharing="true" /> </SERVER>
<SERVER url="http://mon_serveur:8080" serverType="webdav" authenticationMode="trusted" login="loginAdminInjac" password="passwordAdminInjac" /> <PARAMETER name="aclNamespace" value="DAV:"/> <PARAMETER name="aclUserPrefix" value="/slide/users/"/> <PARAMETER name="aclGroupPrefix" value="/slide/roles/"/> <PARAMETER name="aclUportalGroup" value="uPortal"/> <PARAMETER name="aclSecurity" value="/slide/roles/local/root"/> <PARAMETER name="injacPreviewUrl" value="http://injac.univ.fr/injac/preview"/> <SPACE key="injac_space_key_1" label="Espace de publication inJAC" path="/slide/files/injac" actionType="injac" obliged="true" /> </SERVER>
<SERVER url="smb://192.192.192.192" serverType="cifs" authenticationMode="asked" /> <PARAMETER name="cifsDomain" value="univ.fr"/> <PARAMETER name="cifsResolveOrder" value="DNS,BCAST"/> <PARAMETER name="cifsDisablePlainTextPassword" value="false"/> <PARAMETER name="cifsShowHiddenFiles" value="false"/> <PARAMETER name="cifsShowHiddenFilesList" value="nom1,nom2"/> <SPACE key="cifs_192_space_key_1" label="Mes documents CIFS" path="/{storageFormLogin}" actionType="classic" obliged="false" showQuota="false" /> </SERVER>
Lorsque l'on partage des espaces, l'utilisateur doit sélectionnés ceux qu'il veut voir apparaître dans son menu déroulant. Pour cela, il accède à une interface qui liste tous ceux qui sont disponibles.
Pour distinguer les espaces provenant de serveurs différents, l'URL du serveur est affichée dans l'interface.
Certains établissements voudront masquer cette URL pour que l'utilisateur n'en ait pas connaissance. Pour cela, on peut définir une balise OPTIONNELLE <SHARING> qui va permettre de mapper les URL des serveurs par un libellé choisi par différentes sous-balises <SERVER>.
La structure de cette balise est la suivante:
<SHARING> <SERVER url="http://192.192.192.192:8081" mapping="Serveur de documents de la BU" /> <SERVER url="http://mon_serveur:8080" mapping="Espace de documents" /> </SHARING>
L'url du serveur que l'on veut mapper. Pour être sûr de la syntaxe, vous pouvez tester l'affichage qui est mis lorsque cette balise n'est pas utilisée.
Ceci représente le libellé à afficher à la place de l'URL. Il est possible de ne rien afficher à l'utilisateur, pour cela, il faut remplir le champ url et laisser une chaîne vide dans mapping.
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" />
L'url du serveur LDAP. Typiquement cet attribut est de la forme ldap://ldap.univ.fr:389.
Ceci représente le dn de la branche people du LDAP.
Attribut LDAP contenant le login de la personne connectée.
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.
Nous avons vu qu'il est possible d'utiliser le partage de documents dans un espace classic. Pour cela, les informations de partage sont stockées dans une base de données.
La première étape consiste à créer une base de données. Il existe 3 fichiers de création des tables dans le dossier db du package:
MySQL.sql
Postgres.sql
Oracle.sql
Il existe 2 possibilités de connexions à la base de données depuis le canal:
connexion JDBC classique
utilisation d'un pool de connexions JNDI
La structure de la balise de configuration de l'accès à la base de données est la suivante:
<DATABASE_ACCESS type="JNDI | JDBC" url="jdbc:mysql://localhost:3306/CStockage" driverClassName="com.mysql.jdbc.Driver" username="login" password="password" />
Le type de connexion que l'on veut pour l'accès à la base de données. La valeur est JNDI pour l'utilisation d'un pool de connexion, ou JDBC pour un accès classique.
Dans le cas d'un type="JNDI", url représente le nom du pool. Dans l'exemple fournir, url="CStockageDb". Pour type="JDBC", il faut donner l'URL d'accès à la base de données. Exemples:
jdbc:mysql://localhost:3306/cstockage (MySQL)
jdbc:postgresql://localhost:5432/cstockage (Postgresql)
jdbc:oracle:thin:@enee:1521:ISTV (Oracle)
Utilisé uniquement si type="JDBC". Ceci représente le nom du driver à utiliser. Suivant votre SGBD, la valeur est:
com.mysql.jdbc.Driver (MySQL)
org.postgresql.Driver (Postgresql)
oracle.jdbc.driver.OracleDriver (Oracle)
Utilisé uniquement si type="JDBC". Le login de connexion à la base de données.
Utilisé uniquement si type="JDBC". Le mot de passe de connexion à la base de données.
Nous avons vu qu'il est possible d'utiliser le partage de documents dans un espace classic ou de configurer un espace en mode injac. Il existe aussi un canal administration qui permet de saisir en ligne les espaces accessibles aux utilisateurs comme on le fait dans le fichier de configuration. Ces modes permettent la saisie d'utilisateurs via le canal annuaire.
Pour l'appel du canal annuaire depuis le canal stockage, nous devons préciser le nom de l'annuaire à appeler. Nous devons donc répérencer ici le(s) nom(s) d'annuaire(s) dans lequel(s) nous pouvons faire la recherche d'utilisateurs.
Le(s) nom(s) à présicer ici correspond(ent) au(x) nom(s) donné(s) dans le fichier de configuration du canal annuaire.
La structure de la balise est la suivante:
<DIRECTORIES list="etudPriv,persPriv" />
Contient la liste des noms d'annuaires accessibles dans l'interface de partage, d'injac, ou d'administration du canal. Tous les noms doivent être séparés par une virgule.
<AUTHENTICATION usernameAttribute="username" httpsRedirection="true | false" />
Attribut uPortal contenant le login de la personne qui cherche à se connecter.
Lors de l'utilisation d'espaces en mode asked, le mot de passe est demandé à l'utilisateur. Pour que le mot de passe ne circule pas "en clair" sur le réseau, on peut faire passer le portail en HTTPS au moment de l'envoi de celui-ci.
Si httpsRedirection="true", le portail passera automatiquement en HTTPS pour la saisie du formulaire de connexion. Une fois connecté, ou si vous basculez vers un espace où on ne demande pas de mot de passe, le portail repassera automatiquement en HTTP. Pour ce mode, vous devez IMPERATIVEMENT avoir un accès possible à votre portail à la fois en HTTP et en HTTPS. Votre portail doit aussi contenir la servlet HTTPSGateway.
Si httpsRedirection="false", l'envoi du mot de passe ne sera pas crypté et le portail ne passera jamais de HTTP vers HTTPS et vice-versa.
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" />
Vaut true si on demande confirmation avant de supprimer une ressource. Si false, on supprime sans demander confirmation.
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.
Afin de ne pas pouvoir accéder à certains fichiers propres au serveur (comme .htaccess dans Apache pour un mod_dav), nous pouvons définir un critère "d'invisibilité" de certaines ressources.
<INVISIBLE_FILES> <REG_EXP pattern="^\..*" /> </INVISIBLE_FILES>
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 invisibles à l'utilisateur.
Important
Dans la version 4.3, le mode inJAC est maintenu mais son utilisation n'est pas pas encouragé et la fonctionnalité disparaîtra dans une version future.
Nous travaillons présentement sur le projet ORI-OAI (http://www.ori-oai.org) qui vise à développer un outil de référencement et d'indexation intégrable au sein de ESUP Portail. Ce projet s'inspire d'une partie des composants inJAC actuels en améliorant considérablement leurs fonctionnalités.
Le mode inJAC sera indisponible dans la prochaine version du canal stockage.
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.
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 noms de fichiers des skins utilisables pour le rendu des documents d'un espace injac --> <RENDERING/> </RENDERINGS> </INJAC>
Voyons plus en détail ces balises.
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:
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".
Ceci est le label de ce profil qui est affiché au gestionnaire de l'espace inJAC.
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 label="Rendu par défaut" skinFile="File.xml" /> </RENDERINGS>
Pour chaque skin potentiellement utilisable dans le rendu, il faut définir une balise <RENDERING>.
Label affiché au gestionnaire lors de son choix.
Nom du fichier contenant le skin à utiliser pour un espace donné. Un skin est un fichier xml qui décrit le contenu optionnel, le style (fontes, couleurs) et la disposition des éléments du rendu inJAC.
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" />
Ceci est le nom réel de la méta-donnée au sein du serveur.
Un nom donné à la méta-donnée pour plus de compréhension par l'utilisateur.
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
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 de la valeur attendue pour la méta-donnée. Les valeurs possibles sont string et date.
Certaines méta-données peuvent être optionnelles (required="yes") et d'autres obligatoires (required="no").
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".
La méta-donnée peut prendre une valeur par défaut, c'est via cet attribut qu'elle est définie.
Afin d'apporter une certaine clareté à l'utilisateur, il est possible de mettre un commentaire qui sera affiché dans le canal à côté du champ de saisie.
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.
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.
Préparation du déploiement : modifier le fichier build.properties en fonction de la version de portail que vous utilisez.
Lancez la commande suivante relative au fichier build.xml contenu dans le package:
ant deploy
Il ne reste plus qu'à l'administrateur du portail de publier le canal.
La publication du canal stockage se fait en saisissant le nom de classe suivant:
org.esupportail.portal.channels.CStockage.CStockage
Important
Le canal d'administration des espaces est toujours disponible dans la version 4.3, mais n'est plus maintenu car toutes les fonctionnalités dont il disposait sont maintenant disponibles depuis le fichier de configuration.
Une routine d'exportation des espaces saisis depuis ce canal est disponible. Reportez-vous à Section " Migration de la base de données" .
Il est recommandé d'exporter les données dès la version 4.3 du canal, car le canal d'administration ne sera plus disponible dans les prochaines versions.
La publication du canal d'administration se fait en saisissant le nom de classe suivant:
org.esupportail.portal.channels.CStockage.CStockageAdministration