Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Le Canal Stockage évolue pour devenir Esup File Manager (anciennement Esup Portlet Stockage (Portlet JSR168) et apporter de nouvelles fonctionnalités.

Portlet JSR286, Utilisation de Esup Commons V2  allié à Spring MVC Portlet, Web 2.0, interdace interface WAI, interface pensée pour mobiles (JQuery Mobile) et interaction avec ESUP-ECM (support de CMIS) font parties des points importants de cette évolution.

La version esup-portlet-stockage-1.1.1 est filemanager 3.2.0 est maintenant disponible.

Spécifications

On peut retrouver les premières spécifications d'Esup Portlet Stockage File Manager ici .

Fonctionnalités

  • full ajax pour les navigateurs (utilisation de jquery, upload via jquery également).
  • interface WAI (accessible) spécifique
  • look (et ergonomie) portlet mobile spécifique sans ajax : on propose une navigation simple pour consultation uniquement (pas de copier/coller/uploads ...)
  • copier/couper/coller, renommage, création de répertoire, upload/download de fichier.
  • copier/couper/coller inter-serveurs
  • utilisation de apache commons vfs pour l'accès aux serveurs de fichiers et donc supporte théoriquement les différents files systems supportés par vfs : cf http://commons.apache.org/vfs/filesystems.html -> la configuration du serveur utilise pour uri le format vfs ( file:///home/bob fonctionne par exemple );
  • support de CMIS via Apache Chemistry (connexion avec Esup-ECM/Nuxeo disponible)
  • support de WEBDAV via Sardine
  • support de CIFS via JCIFS
  • pensé techniquement pour pouvoir implémenter d'autres supports que via apache commons vfs et Apache Chemistry
  • utilise au mieux spring v3, mvc (2.5 pour la portlet), les annotations, etc.
  • propose un fichier de configurations pour les différents serveurs / "drives" disponibles (en portlet, peut être fonction de l'appartenance à un groupe, de la présence d'un attribut utilisateur ou/et de la présence d'un "token" dans les préférences du context de la portlet).
  • supporte 4 modes d'authentification : pas d'authentification, authentification username/password donné en dur dans le fichier de configuration, authentification username/password récupéré de l'utilisateur par un formulaire,  authentification proxy cas en portlet via uPortal (testé et validé sur du sftp cassifié).
  • supporte également une authentification supplémentaire spécifique 2 authentifications supplémentaires spécifiques pour Esup-ECM / Nuxeo (CMIS) :
    • 1 qui peut être utilisée lorsque Nuxeo est doté du plugin nuxeo-platform-login-shibboleth :
    propagation d'authentification via les entêtes HTTP, méthode similaire à ce que fait
    • pour ce faire esup-filemanager a le même comportement que le mod shib d'apache
    avec
    • vis à vis de Nuxeo
    • 1 autre qui utilise "NuxeoPortalSSOAuthenticationProvider" (cf doc Nuxeo à ce propos) et requiert donc le plugin nuxeo-platform-login
    -shibboleth
    • -portal-sso
      A noter que dans les 2 cas, l'authentification se fait en propageant les paramètres d'authentification via les entêtes HTTP. A noter également que CMIS étant sans état, la session avec Nuxeo n'est pas maintenue et une (ré)authentification est requise pour chaque commande CMIS, aussi l'authentification par ProxyCAS parait trop coûteuse à l'usage et esup-filemanager ne la propose tout simplement pas pour CMIS (Nuxeo).

TODO

Téléchargement

Vous pouvez trouver la dernière version d'esup-portlet-stockage archivée sur sourcesup :-filemanager sur Github :

https://github.com/uPortal-contrib/esup-filemanager/releases

Depuis la version 3.1.1, vous pouvez également retrouver une version packagée sur le maven central : 

https://sourcesuprepo1.cru.fr/frs/?group_id=206

Dépôt subversion

maven.org/maven2/org/esupportail/portlet/filemanager/esup-filemanager

Gestion des sources

Afin de faciliter la collaboration autour de ce projet, nous utilisons GITHUB pour gérer le développement d'esup-filemanager La version en cours de développement est actuellement la branche esup-portlet-stockage :

https://subversion.cru.fr/esup-stockage/branches/esup-portlet-stockage

La dernière version taguée est également disponible par subversion ici :

https://subversion.cru.fr/esup-stockage/tags

github.com/uPortal-contrib/esup-filemanager

  1. master branch
    Branche de développement d'esup-filemanager - elle utilise "portlet 2.0" API (JSR 286).

  2. esup-filemanager-portlet_1_0 branch (déprécié)
    Branche de développement de la version compatible "portlet 1.0" (JSR 168) - les releases d'esup-filemanager en 2.x.x proviennent de cette branche directement.
    La version 2.2.2 sortie fin 2012 devrait être la dernière version issue de cette branche et donc la dernière version supportant "portlet 1.0", c'est à dire compatible avec les ENT Esup/uPortal de version inférieur à 4.x.
    [pour infos : sur cette version d'esup-filemanager vous devez appeler mvn jetty:run pour tester rapidement esup-filemanager]

Déploiement Test

...

Une fois dézippée, vous pouvez directement tester esup-portlet-stockage filemanager ... en mode servlet avec pluto !

Pour cela il vous faut avoir un apache maven de disponible sur votre machine, en ligne de commande et depuis le répertoire dans lequel se trouve le fichier pom.xml tapez simplement

Bloc de code

mvn clean jettyportlet-prototyping:run

Depuis un navigateur, vous pouvez alors appeler une URL du type :

http://localhost:8080/esup-portlet-stockage/servlet-ajax/pluto

Notez que le "drive" Bob correspond à file:/// par défaut.

Volet

Note: le ce mode servlet de fonctionnement d'esup-portlet-stockage filemanager embarqué dans un pluto est un mode "dégradé" de cette application, en effet en mode servlet vous ne bénéficiez pas :

  • du CAS : la servlet n'est pas cassifiée ; la portlet fait du proxy-cas.
  • de l'interface accessible WAI 
  • de la vue mobile/smartphone 
  • de la récupération d'attributs utilisateurs depuis le portail (récupération des groupes comprise)

Aussi voyez le mode servlet comme Ce mode est donc une facilité de mise au point, de développement d'esup-portlet-stockage filemanager qui reste (actuellement en tout cas) destinée à fonctionner en portlet JSR168dans un ENT complet.

Déploiement

...

- Esup

...

v4 / uPortal

...

4

Les fichiers que l'exploitant est amené à modifier sont les suivant :

  • src/main/webapp/WEB-INF/context/drives.xml
    C'est le fichier de configuration principale de l'application, il vous permet de définir les catégories et les drives ("serveurs") associés. Pour un usage en portlet, donnez dans ce fichier la valeur java.lang.Boolean.TRUE à la constante  isPortlet
  • src/main/webapp/WEB-INF/portlet.xml
    Les balises user-attribute peuvent être à modifier selon votre configuration - pour les préférences portlet, privilégiez leur configuration lors de la publication de la portlet - esup-filemanager est pensé pour être publié plusieurs fois avec des configurations différentes.
  • src/main/webapp/WEB-INF/web.xml
    Si vous souhaitez utiliser une authentification ProxyCas, vous devrez indiquer l'adresse de votre serveur CAS dans web.xml

Pour déployer esup-portlet-stockage filemanager en portlet dans un Esup / uPortal, vous devrez lancer une commande similaire à celle-ci :

Bloc de code

mvn clean package ; cd /opt/uPortal-runn/ ; ant deployPortletApp -DportletApp=/home/esup/esup-portlet-stockagefilemanager/target/esup-portlet-stockagefilemanager.war

Déploiement Portlet - Esup v2 / uPortal 2

Nous avons testé le déploiement de la portlet sur un uPortal_rel-2-6-1-GA-quick-start de la même façon que pour une version 3, cela fonctionne bien.

Il faudra cependant faire attention aux points suivants :

  • le ant deployPortletApp permet comme en V3 (en plus de déployer le war) de modifier comme nécessaire le web.xml en y spécifiant les paramètres pluto adéquates. le web.xml ainsi modifié nous indique que le guid est positionné à esup-portlet-stockage.esup-portlet-stockage  -> utile à savoir pour la publication de la portlet en 2.6
  • le tomcat d'uPortal 2.6 de ce quickstart embarque déjà un jstl-1.1.2.jar dans ses librairies (shared/lib de tomcat) aussi il faut supprimer la librairie esup-portlet-stockage/WEB-INF/lib/jstl-1.2.jar sous peine d'obtenir des exceptions du type javax.servlet.ServletException: javax/el/ELException (la portlet ne fonctionnant alors pas).

Note: esup-portlet-stockage peut fonctionner avec un JDK1.5 même si nous utilisons usuellement un JDK1.6 dans nos tests/développements et déploiements.

Support de webdav et cifs

Avec esup-portlet-stockage-1.0.0, on proposait d'activer le support de webdav et cifs sur commons-vfs via sandbox-vfs (http://commons.apache.org/vfs/filesystems.html ).

Portlet preferences

Lors de la publication de la portlet Esup File Manager dans le portail Esup / uPortal, vous pouvez (re)définir quelques préférences :

  • le choix de la vue ("standard", "wai" ou "mobile") au travers de la préférence defaultPortletView
  • le répertoire à afficher par défaut à l'utilisateur au travers de la préférence "defaultPath" qui sera donnée de la forme "FS:Homedir~UStock". En multi-valuant cette préférence, la portlet affichera en répertoire par défaut le premier de la liste de disponible pour l'utilisateur courant.
  • la préférence contextToken en concordance avec le positionnement de "contextToken" dans drives.xml peut permettre de n'afficher que certains "drives".
  • la préférence showHiddenFiles permet d'afficher ou non les fichiers/répertoires considérés comme "cachés"
  • la préférence useDoubleClick permet d'utiliser ou non le double click lors de la navigation dans la vue standard (Ajax) ; la navigation par double click étant recommandé.
  • la préférence useCursorWaitDialog provoque l'affichage d'une boite de dialogue d'attente entre chaque chargement de pages (vue standard à nouveau).

Une partie de ces préférences peut également être configurée par l'utilisateur lui-même si lors de la publication vous activez le mode Edit.

Portlet Timeout

esup-filemanager fait les upload/download en utilisant les nouvelles possibilités de portlet2.0 et donc en passant par le portail/socle.
Le timeout positionné lors de la publication d'une portlet dans le portail est actif à la fois pour les uploads sans prendre en compte le fait qu'un échange de flux est en cours. Cela fait en effet l'objet d'un ticket sur le jira uPortal : https://issues.jasig.org/browse/UP-3552

Aussi, pour contourner ce problème, vous devez positionner un timeout (très) élevé lors de la publication d'esup-filemanager : positionné par défaut à 5000 (5 sec), vous pouvez le positionner par exemple à 7200000 (équivalent donc à 2 heures).

Sécurité

Rappel : faire fonctionner un ENT "en clair" (http) implique de fait que toutes les informations que l'on rend accessibles ou que l'on saisies dans l'ENT passent en clair, username/password potentiellement saisis dans la portlet Esup File Manager compris. On rappelle aussi que faire fonctionner un ENT en clair implique de faire circuler son cookie de session tomcat JSESSIONID en clair, ce qui peut permettre à un instant t (le temps de la session) une usurpation de session (session d'esup-filemanager comprise) ... cela suivant la sécurité/isolation du réseau utilisé ...

Support de webdav et cifs

esup-filemanager propose A partir de la version 1.1.0, esup-portlet-stockage propose désormais des implémentations spécifiques pour ces protocoles (s'appuyant sur les librairies Sardine et JCIFS).

Encodage / URIEncoding

esup-portlet-stockage utilise filemanager peut utiliser des requêtes HTTP de type GET en passant en paramètre HTTP le nom des répertoires consultés.

Lorsque ces répertoires comportent des accents, vous pouvez alors être confrontés sur certaines actions à des problèmes d'encodage au niveau de cette portlet.

ou fichiers.
En fait il ne le fait maintenant plus (V2 et supérieur) que lors de l'upload de fichiers en utilisant "XHR" : le navigateur fait alors bien un POST, mais le contenu de ce POST contient alors directement le contenu du fichier lui-même, alors que le nom du fichier est passé en paramètre HTTP, c'est à dire codé directement dans l'URL de la forme : "...&qqfile=lenom_du_fichier_qui_peut_avoir_des_accents_héhô.pdf"

esup-filemanager esup-portlet-stockage utilise UTF-8 dans l'ensemble de l'application, on considère cela comme une bonne pratique, malheureusement Tomcat utilise par défaut l'ISO-8859-1 pour ce qui concerne l'encodage des url en elles-mêmes.

Aussi, nous vous conseillons de configurer votre Tomcat pour utiliser l'UTF-8 comme encodage des urls.

Pour ce faire, dans votre fichier server.xml, ajoutez dans vos balises Connector l'attribut URIEncoding="UTF-8"

-> Nous estimons que c'est une bonne pratique à généraliser sur vos installations Tomcat.

Plus d'infos ici : http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q2A partir de la version 1.1.1 d'esup-portlet-stockage, les noms des dossiers et fichiers passés en paramètre HTTP sont préalablement encodés via java.net.URLEncoder.

Il n'est ainsi plus nécessaire d'ajouter dans la balise Connector l'attribut URIEncodin="UTF-8".

Screenshots

Galerie
columns3

Annexes

Notes pour cassifier rapidement un service SFTP.

Montage d'espaces Windows

Récupération et affichage du quota

Remarques et demandes d'évolution

Présentation (Vidéo et Slides) lors de Esup Days n°11 "Nouveau canal stockage"

English page on jasig.org.

Contacts

Merci de vous abonner et d'utiliser la liste mail "esup-utilisateurs" pour nous contacter (problèmes techniques notamment) :

https://listes.esup-portail.org/sympa/info/esup-utilisateurs

Crédits & Licence

Copyright (C) 2011 2018 Esup Portail http://www.esup-portail.org
Copyright (C) 2011 2018 UNR RUNN http://www.unr-runn.fr
Copyright (C) 2018 RECIA http://www.recia.fr
@Author (C) 2011 2018 Vincent Bonamy <Vincent.Bonamy dot Bonamy@univ-rouen.fr>fr>
@Contributor (C) 2011 2018 Jean-Pierre Tran <Jean-Pierre.Tran dot Tran@univ-rouen.fr>fr>
@Contributor (C) 2011 2018 Julien Marchal <Julien.Marchal dot Marchal@univ-nancy2.fr>fr>
@Contributor (C) 2011 2018 Julien Gribonvald <Julien.Gribonvald dot Gribonvald@recia.fr>fr>
@Contributor (C) 2011 2018 David Clarke <david.clarke dot clarke@anu.edu.au>.au>
@Contributor (C) 2018 Pierre Bouvret <pierre.bouvret@u-bordeaux4.fr>
@Contributor (C) 2018 Franck Bordinat <franck.bordinat@univ-jfc.fr>
@Contributor (C) 2018 Pascal Rigaux <pascal.rigaux@univ-paris1.fr>
@Contributor (C) 2018 Olivier Franco <olivier.franco@insa-lyon.fr>
@Contributor (C) 2018 Maxime Bossard <maxime.bossard@recia.fr>
@Contributor (C) 2018 Guillaume Colson <guillaume.colson@univ-lorraine.fr>
@Contributor (C) 2018 Denis Elbaz <denis.elbaz@univ-perp.fr>
@Contributor (C) 2018 Dominique Lalot <dominique.lalot@univ-amu.fr>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.