Modèle de flux dictionnaire
===========================

Modes de règle
--------------

==== ================================
Code Signification
==== ================================
send transfert en mode envoi (*push*)
recv transfert en mode réception (*pull*)
==== ================================

Types de tâches
---------------

Log et Trace
~~~~~~~~~~~~

==== ================================
Code Description
==== ================================
LOG  inscrit les logs dans le fichiers spécifiés en path
SNMP envoie une trap SNMP
==== ================================

Action sur la location fichier
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

============= ================================
Code          Description
============= ================================
COPY          Copie le fichier dans le dossier spécifié
COPYRENAME    Copie et renomme le fichier àla location spécifiée
MOVE          Change la location du fichier pour le dossier spécifié
MOVERENAME    Change et renomme la location du fichier pour le dossier spécifié
LINKRENAME    Crée un lien vers le fichier à l'emplacement spécifié
RENAME        Renomme le fichier
DELETE        Supprime le fichier
VALIDFILEPATH Teste si le fichier est dans l'une des locations spécifiées
============= ================================

Action sur le fichier
~~~~~~~~~~~~~~~~~~~~~

========= ========================
Code      Description
========= ========================
TRANSCODE Effectue une opération de transcodage
TAR       Crée une archive ``TAR``
ZIP       Crée une archive ``ZIP``
UNZEROED  Ajoute un octet vide si le fichier est vide (taille = 0)
CHKFILE   Vérifie certaines propriétés du fichier
CHMOD     Modifie le mode d'accès du fichier
========= ========================

=========== ========================
Code        Description
=========== ========================
EXEC        Execute une commande externe
EXECMOVE    Execute une commande externe
EXECOUTPUT  Execute une commande externe
EXECJAVA    Execute une classe Java externe
RESTART     Redémarre le server R66
=========== ========================

Action pour transférer le fichier
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

========== ========================
Code       Description
========== ========================
TRANSFER   Crée un nouveau transfert basé sur les informations données dans ``path``
RESCHEDULE Reprogramme la tâche de transfert d'un temps donné en millisecondes
FTP        Transfert synchrone utilisant le protocol FTP
========== ========================

Constantes
----------

========= =========== ================================
Code      Type        Signification
========= =========== ================================
flow_name String      Nom du flux
types     PartnerType Constantes correspondant aux types de partenaires existants. Trois valeurs sont possibles: ``types.R66``, ``types.GWFTP`` et ``types.FTP``
true      Bool        Valeur ``vrai``
false     Bool        Valeur ``faux``
default   Bool        Alias de ``true``
========= =========== ================================

Les types de partenaires (types de données ``PartnerType``) définis sont les suivants:

======== ================================
Type     Description
======== ================================
GW       Partenaires Waarp Gateway
TRANSFER Partenaires Waarp Transfer
FTP      Partenaires FTP
SFTP     Partenaires SFTP
HTTP     Partenaires HTTP
R66      Partenaires Waarp R66 (déprécié)
GWFTP    Partenaires Waarp Gateway FTP (déprécié)
GWSFTP   Partenaires Waarp Gateway SFTP (déprécié)
======== ================================

Variables concernant les transferts
-----------------------------------

Ces données correspondent aux propriétés d'un transfert. Elles sont
directement accessible pour le transfert en cours de définition
(ex: ``origin_id``). Pour les données de type ``Transfert`` listées
ci-dessous, elles sont accessibles en tant que propriété de l'objet
(ex: ``next.origin_id``).

=================== =========== ============================================
Nom                 Type            Description
=================== =========== ============================================
origin_id           Int         L'id interne de l'instance d'origine du transfert
origin              Instance    Les informations sur l'instance d'origine du transfert
origin_dir          String      Le chemin vers le dossier dans lequel se trouvent les fichiers sur le partenaire d'origine
destination_id      Int         L'id interne de l'instance de destination du transfert
destination         Instance    Les informations sur l'instance de destination du transfert
destination_dir     String      Le chemin vers le dossier dans lequel se trouvent les fichiers sur le partenaire de destination
next                Transfert   Données concernant le (les) transfert(s) suivants dans le flux. Quand cette variable est utilisée (en test ou en substitution), la règle est évaluée pour chaque transfert suivant (**Seulement disponible pour les tâches**)
final_destinations  []Int       La liste d'identifiants des partenaires de destination du flux
route_index         Int         Index du transfert dans la route courante
last_index          Int         Index du dernier transfert pour la route courante
flow_index          Int         Index du transfert courant dans le flux
flow_name           String      Le nom du flux
name                String      Le nom de la règle
connection          Int         Le sens de la connection entre le site d'origine
                                et le site de destination (``0``: les deux sens,
                                ``1``: envoi, ``2``: réception)
params              FlowParams  Les paramètres additionels de flux
types               PartnerType Les types de partenaires
=================== =========== ============================================

Les paramètres de flux (type ``FlowParams``) sont accessibles avec la variable
``params``. Ils correspondent aux paramètres définis dans l':ref:`écran de
définition des paramètres de flux<flow-params>`.
Ils sont accessibles en séparant le nom du paramètre voulu séparé de l'objet
par un point (``.``). Par exemple, pour un paramètre nommé ``codepage_in``,
le paramètre peut-être utilisé avec ``{{params.codepage_in}}``.


Variables concernant les instances (``Instance``)
--------------------------------------------------

Les Instances representent un agent de transfert qui est à l'origine ou en
destination d'un transfert.

Les données du type ``Instance`` listées ci-dessus ont les propriétés
suivantes. Elles sont accessibles en les séparant de l'objet par un
point (``.``). Exemple: ``destination.Name``

=================== =========== ============================================
Nom                 Type           Description
=================== =========== ============================================
Name                String      Identifiant R66 d'un partenaire
Partner             Partner     Les informations sur le partenaire de l'instance
Interface           Interface   Les informations sur l'interface de l'instance
IsClient            Bool        ``true`` si le partenaire a un client actif
IsServer            Bool        ``true`` si le partenaire a un serveur actif
=================== =========== ============================================


Variables concernant les partenaires (``Partner``)
--------------------------------------------------

Les données du type ``Partner`` listées ci-dessus ont les propriétés
suivantes. Elles sont accessibles en les séparant de l'objet par un
point (``.``). Exemple: ``destination.Name``

=================== =========== ============================================
Nom                 Type           Description
=================== =========== ============================================
ID                  Int         L'identifiant interne du partenaire
Name                String      Identifiant R66 d'un partenaire
SiteId              Int         L'identifiant du site auquel le partenaire est rattaché
Type                PartnerType Le type du partenaire
IsClient            Bool        ``true`` si le partenaire a un client actif
IsServer            Bool        ``true`` si le partenaire a un serveur actif
Description         String      La descriptions données au partenaire
Data                PartnerData Liste des données additionnelles associées aux partenaires
Autosync            Bool        ``true`` si le partenaire est mis à jour via un référentiel externe, ``false`` sinon
IsExternal          Bool        ``true`` si le partenaire est un partenaire externe
Gateway             Int         L'identifiant interne du partenaire à laquelle le partenaire est rattaché (pour les partenaires FTP, SFTP et HTTP)
=================== =========== ============================================

Les  données additionnelles associées aux partenaires (type
``PartnerData``) sont accessibles en les séparant de l'objet par un
point (``.``). Les variables disponibles sont les suivantes :

======== ======= ============================================
Nom      Type         Description
======== ======= ============================================
env      String  L'environnement du partenaire
appName  String  Le nom de l'application correspondant au partenaire
idApp    String  L'identifiant de l'application correspondant au partenaire
hostName String  L'identifiant du serveur sur lequel est installé le partenaire
======== ======= ============================================


Variables concernant les interfaces (``Interface``)
---------------------------------------------------

Les données du type ``Interface`` listées ci-dessus ont les propriétés
suivantes. Elles sont accessibles en les séparant de l'objet par un
point (``.``). Exemple: ``destination.Interface.Name``

=================== ============= ============================================
Nom                 Type           Description
=================== ============= ============================================
ID                  Int           L'identifiant interne du partenaire
Name                String        Identifiant R66 d'un partenaire
Protocol            String        Le protocole de l'interface
IsClient            Bool          ``true`` si le partenaire a un client actif
IsServer            Bool          ``true`` si le partenaire a un serveur actif
Autosync            Bool          ``true`` si le partenaire est mis à jour via un référentiel externe, ``false`` sinon
Address             String        L'adresse IP ou le nom d'hôte pour joindre le serveur du partenaire
Port                Int           Le port pour joindre le serveur du partenaire
Data                InterfaceData Liste des données additionnelles associées aux partenaires
=================== ============= ============================================

Les  données additionnelles associées aux interfaces (type
``InterfaceData``) sont accessibles en les séparant de l'objet par un
point (``.``). Les variables disponibles dépendent du protocole de l'interface.

Pour le protocole R66 :

=================== ============= ============================================
Nom                 Type           Description
=================== ============= ============================================
serverLogin         String        Le nom d'utilisateur de l'interface quand elle est serveur
serverPassword      String        Le mot de passe de l'interface quand elle est serveur
clientLogin         String        Le nom d'utilisateur de l'interface quand elle est cliente
clientPassword      String        Le mot de passe de l'interface quand elle est cliente
=================== ============= ============================================

Pour le protocole R66-TLS :

=================== ============= ============================================
Nom                 Type           Description
=================== ============= ============================================
serverLogin         String        Le nom d'utilisateur de l'interface quand elle est serveur
serverPassword      String        Le mot de passe de l'interface quand elle est serveur
serverPrivateKey    String        La clé privée de l'interface quand elle est serveur
serverCertificate   String        Le certificat de l'interface quand elle est serveur
clientLogin         String        Le nom d'utilisateur de l'interface quand elle est cliente
authentMode         String        Le mode d'authentification pour l'interface
                                  ("password" ou "password-certificate")
clientPassword      String        Le mot de passe de l'interface quand elle est cliente
clientPrivateKey    String        La clé privée de l'interface quand elle est cliente
                                  et que le mode d'authentification est "password-certificate"
clientCertificate   String        Le certificat de l'interface quand elle est cliente
                                  et que le mode d'authentification est "password-certificate"
=================== ============= ============================================

Pour le protocole SFTP :

=================== ============= ============================================
Nom                 Type           Description
=================== ============= ============================================
serverPrivateKey    String        La clé privée de l'interface quand elle est serveur
serverCertificate   String        Le certificat de l'interface quand elle est serveur
clientLogin         String        Le nom d'utilisateur de l'interface quand elle est cliente
authentMode         String        Le mode d'authentification pour l'interface
                                  ("password", "publicKey" ou "password-publicKey")
clientPassword      String        Le mot de passe de l'interface quand elle est cliente
clientPrivateKey    String        La clé privée de l'interface quand elle est cliente
                                  et que le mode d'authentification utilise une
                                  clef publique
clientPublicKey     String        La clef publique de l'interface quand elle est cliente
                                  et que le mode d'authentification utilise une
                                  clef publique
=================== ============= ============================================

Pour le protocole HTTP :

=================== ============= ============================================
Nom                 Type           Description
=================== ============= ============================================
clientLogin         String        Le nom d'utilisateur de l'interface quand elle est cliente
clientPassword      String        Le mot de passe de l'interface quand elle est cliente
=================== ============= ============================================

Pour le protocole HTTPS :

=================== ============= ============================================
Nom                 Type           Description
=================== ============= ============================================
serverPrivateKey    String        La clé privée de l'interface quand elle est serveur
serverCertificate   String        Le certificat de l'interface quand elle est serveur
clientLogin         String        Le nom d'utilisateur de l'interface quand elle est cliente
authentMode         String        Le mode d'authentification pour l'interface
                                  ("basic", "certificate" ou "basic-certificate")
clientPassword      String        Le mot de passe de l'interface quand elle est cliente
                                  et que le mode d'authentification utilise un mot de passe
clientPrivateKey    String        La clé privée de l'interface quand elle est cliente
                                  et que le mode d'authentification utilise un
                                  certificat
clientPublicKey     String        La clef publique de l'interface quand elle est cliente
                                  et que le mode d'authentification utilise un
                                  certificat
=================== ============= ============================================

Pour le protocole FTP :

=================== ============= ============================================
Nom                 Type           Description
=================== ============= ============================================
clientLogin         String        Le nom d'utilisateur de l'interface quand elle est cliente
clientPassword      String        Le mot de passe de l'interface quand elle est cliente
serverMode          String        Le mode de transfert de données pour l'interface
                                  quand elle est serveur ("passive" ou "active")
passiveMinPort      Int           Le port passif minimum utilisé par l'interface
                                  et que le mode du serveur est "passive"
passiveMaxPort      Int           Le port passif maximum utilisé par l'interface
                                  et que le mode du serveur est "passive"
activeMinPort       Int           Le port actif minimum utilisé par l'interface quand
                                  elle est cliente et que le mode du serveur est "active"
activeMaxPort       Int           Le port actif maximum utilisé par l'interface quand
                                  elle est cliente et que le mode du serveur est "active"
=================== ============= ============================================

Pour le protocole HTTPS :

=================== ============= ============================================
Nom                 Type           Description
=================== ============= ============================================
serverCertificate   String        Le certificat de l'interface quand elle est serveur
secureMode          String        Le mode de connexion TLS pour l'interface
                                  ("implicit" ou "explicit")
clientLogin         String        Le nom d'utilisateur de l'interface quand elle est cliente
clientPassword      String        Le mot de passe de l'interface quand elle est cliente
serverMode          String        Le mode de transfert de données pour l'interface
                                  quand elle est serveur ("passive" ou "active")
passiveMinPort      Int           Le port passif minimum utilisé par l'interface
                                  et que le mode du serveur est "passive"
passiveMaxPort      Int           Le port passif maximum utilisé par l'interface
                                  et que le mode du serveur est "passive"
activeMinPort       Int           Le port actif minimum utilisé par l'interface quand
                                  elle est cliente et que le mode du serveur est "active"
activeMaxPort       Int           Le port actif maximum utilisé par l'interface quand
                                  elle est cliente et que le mode du serveur est "active"
=================== ============= ============================================



Variables de transfert R66
--------------------------

Les variables interprétées par Waarp R66, Waarp Transfer et Waarp Gateway sont
les suivantes:

================== ============================================
Nom                Description
================== ============================================
#TRUEFULLPATH#     Location complète du fichier
#TRUEFILENAME#     Current FILENAME (basename) (change in retrieval part)
#ORIGINALFULLPATH# Original full path FILENAME (before changing in retrieval part)
#ORIGINALFILENAME# Original FILENAME (basename) (before changing in retrieval part)
#FILESIZE#         Taille du fichier
#INPATH#           Location du dossier de réception
#OUTPATH#          Location du dossier d'envoie
#WORKPATH#         Location du dossier de travail (dossier des fichiers en cours de transfert)
#ARCHPATH#         Location du dossier d'archive
#HOMEPATH#         Home path (to enable for instance relative path commands)
#RULE#             Règle utilisée
#DATE#             La date actuelle au format yyyyMMdd
#HOUR#             L'heure actuelle au format HHmmss
#REMOTEHOST#       Remote host id (if not the initiator of the call)
#REMOTEHOSTIP#     Remote host IP (if not the initiator of the call)
#LOCALHOST#        Id du localhost
#LOCALHOSTIP#      IP du localhost
#TRANSFERID#       L'ID du transfert
#REQUESTERHOST#    Requester host Id
#REQUESTEDHOST#    Requested host Id
#FULLTRANSFERID#   Full Transfer Id as TRANSFERID_REQUESTERHOST_REQUESTEDHOST
#RANKTRANSFER#     Current or final RANK of block
#BLOCKSIZE#        La taille de bloc utilisée.
#ERRORMSG#         Le message d'erreur actuel ou NoError si aucune erreur ne s'est produite avant cet appel
#ERRORCODE#        Le code d'erreur actuel ou ``-`` (Unknow) si aucune erreur ne s'est produite avant cet appel
#ERRORSTRCODE#     Le message du code d'erreur actuel ou "Unknow" si aucune erreur ne s'est produite avant cet appel
#NOWAIT#           Used by Exec type task to specify that the command will be executed in asynchronous mode, without waiting any result from it
#LOCALEXEC#        Used by Exec type task to specify that the command will be executed not locally (within the JVM) but outside using a LocalExec
================== ============================================
