Qu’est ce qu’un plugin de la GUI ?
Un plugin permet de rediriger un flux HTTP reçu par FlowerDocs GUI vers une autre URL. Pour cela, FlowerDocs GUI inclut un module reverse proxy
basé sur le produit open source Zuul de Netflix. Un plugin est exposé sous le chemin /plugins/
en fonction des routes définies.
Un plugin de la GUI se configure à travers deux types d’information :
- Le chemin des requêtes à intercepter (
Path
) - L’URL vers laquelle les requêtes interceptées sont redirigées (
URL
)
Pour accéder à une route définie par un plugin, le client doit être authentifié auprès de la GUI.
Définir un plugin
Un plugin de la GUI peut être configuré pour un scope spécifique ou pour l’ensemble des scopes d’une instance FlowerDocs.
Plugin spécifique à un scope
Un plugin peut être configuré à travers un document de classe Route
avec les tags Path
et URL
.
La configuration de ces plugins est exposée dans la section Administration > Configuration > Les plugins de la console d’administration.
En définissant un plugin avec le chemin /my-route/**
et l’URL https://flowerdocs.com/my-plugin
pour le scope <scope>
, la requête exécutée sur /plugins/<scope>/my-route/test
est redirigée vers https://flowerdocs.com/my-plugin/test
.
Plugin global
Un plugin global est accessible depuis n’importe quel scope. Il doit être configuré à travers le fichier de propriété gui.properties
.
Pour définir un nouveau plugin global, il est nécessaire de définir la route correspondante telle que :
zuul.routes.<plugin-id>.path=<plugin path>
zuul.routes.<plugin-id>.url=<external plugin URL>
Exemple : Définition d’un plugin nommé myplugin
zuul.routes.myplugin.path=/plugins/sample/**
zuul.routes.myplugin.url=http://localhost:3006/sample
Avec cet exemple, les requêtes émises sur <gui>/plugins/sample
sont redirigées vers http://localhost:3006/sample
.
Le timeout sur les plugins peut être configuré à l’aide des propriétés zuul.host.connect-timeout-millis
et zuul.host.socket-timeout-millis
.
Plugins par défaut
Par défaut, plusieurs plugins sont ajoutés permettant de consommer des ressources FlowerDocs. Ils sont listés dans le tableau ci-dessous.
Chemin | URL cible | Description |
---|---|---|
/plugins/plume |
${gui.client.plume.url} |
Redirige vers plume |
/plugins/soap |
${core}/services |
Redirige vers les services SOAP exposés par FlowerDocs Core |
/plugins/rest |
${core}/rest |
Redirige vers les services REST exposés par FlowerDocs Core |
/plugins/external |
${core}/external |
Redirige vers des plugins exposés par FlowerDocs Core |
Sécurité
Pour accéder à un plugin, à travers FlowerDocs GUI, le client qui émet la requête doit être authentifié (à travers le cookie SESSION
). Cette authentification est transmise au plugin sous la forme d’une en-tête HTTP token
dont la valeur est le jeton de l’utilisateur effectuant la requête.
Avec le framework Spring MVC, il est possible de récupérer ce token en ajoutant le paramètre suivant à la méthode d’entrée : @RequestHeader("token") String token
.