# Envoi d’un fichier en R66

Nous allons maintenant mettre en place le second transfert : l’envoi d’un fichier avec Gateway vers un serveur R66. Nous allons pour cela utiliser un serveur Waarp R66 installé sur le serveur comme serveur de destination.

Pour pouvoir envoyer des fichiers, nous allons devoir ajouter un client R66 à la Gateway, y attacher un partenaire, puis créer un utilisateur, et une règle de transfert.

## Configuration du serveur R66 local

Pour notre exemple, nous supposerons qu’une installation de Waarp R66 basique est présente et active sur la machine. Pour plus d’information sur la marche à suivre pour installer Waarp R66, veuillez consulter la documentation Waarp R66. Dans notre exemple, l’instance de Waarp R66 s’appellera `r66_server`.

La première étape est de récupérer le mot de passe de notre instance Waarp-R66. Pour cela, ouvrons le fichier `authent.xml`. Celui-ci devrait contenir une entrée pour le serveur R66 lui-même, avec le mot de passe au niveau de la balise `<key>`. Ce mot de passe étant crypté, nous allons utiliser waarp-password pour le décrypter. En se plaçant dans le dossier racine de Waarp R66, et en fournissant le mot de passe écrit dans le fichier après l’option `-cpwd`, la commande est donc la suivante :

    $ ./bin/waarp-password.sh -ki "./etc/certs/cryptokey.des" -cpwd "04ebd92364b5aa60c29f04da512aca4be069dc6c6a842e25" -po "/dev/null" -clear
    ClearPwd: wm-clientpassword
    CryptedPwd: 04ebd92364b5aa60c29f04da512aca4be069dc6c6a842e25

Le mot de passe en clair devrait s’afficher dans la console (dans notre exemple wm-clientpassword).

Si votre instance de Waarp R66 n’a aucune règle de transfert définie, il vous faudra en créer une. Le plus simple est de copier le fichier `rule.xml` se trouvant dans les templates fournis avec Waarp R66 et de la coller dans le dossier de configuration de l’instance R66.

Maintenant, il nous faut ajouter la Gateway dans la liste des partenaires de l’agent Waarp R66. Pour cela, retournons dans le fichier `authent.xml`. Ajouter une entrée sous la forme suivante :

    <entry>
      <hostid>gw_r66user</hostid>
      <address>127.0.0.1</address>
      <port>6699</port>
      <isssl>false</isssl>
      <key>ff11b108880e33555a4b7c6a66065cbb622acefec8c3a302</key>
    </entry>

Note

La `<key>` renseignée ici est la forme cryptée du mot de passe gateway_password. Si vous souhaitez utiliser un mot de passe différent, il vous faudra le chiffrer avec la commande suivante avant de l’ajouter à la configuration :

    $ ./bin/waarp-password.sh -ki "./etc/certs/cryptokey.des" -pwd "$PASSWORD" -po "/dev/null"

Une fois le fichier sauvegardé, rechargez la configuration de Waarp R66 avec la commande suivante :

    $ ./bin/waarp-r66client.sh r66_server loadconf

C’est suffisant, on va maintenant pouvoir se connecter au serveur `r66_server` sur le port `6666`, avec l’utilisateur `gw_r66user` et le mot de passe `gateway_password`.

## Création d’un client R66

Pour pouvoir envoyer des fichiers en R66 avec la Gateway, nous allons commencer par ajouter un client R66 à la gateway :

    $ waarp-gateway client add --name "gw_r66_client" --protocol "r66"
    The client r66_client was successfully added.

Pour créer un client, nous devons, à minima, spécifier son nom et son protocole. Optionnellement, il est également possible de configurer certains paramètres du protocole via l’option `--config`. Il est également possible d’attribuer une adresse locale au client.

Une fois le client crée, nous devons le démarrer :

    $ waarp-gateway client start "gw_r66_client"
    The client r66_client was successfully started.

## Création d’un partenaire R66

Une fois le client créé, nous allons ajouter le partenaire R66 :

    $ waarp-gateway partner add --name "r66_server" --protocol "r66" --address "localhost:6666" --config "serverLogin:r66_server" --config "serverPassword:wm-clientpassword"
    The partner r66_server was successfully added.

Pour créer un partenaire, nous devons préciser son nom, le protocole de ce serveur, ainsi que des informations additionnelles pour paramétrer le serveur (ici l’adresse écoutée et le port).

Voir aussi

Plus d’options de configuration sont disponibles pour les partenaires R66.

Le détail des options est disponible ici

### (Optionnel) Activation de TLS

Optionnellement, si vous souhaitez sécuriser vos transfert vers ce partenaire avec TLS, il faut altérer la configuration du partenaire en activant l’option `isTLS` ainsi :

    $ waarp-gateway partner update "r66_server" --config "serverLogin:waarp_r66" --config "serverPassword:sesame" --config "isTLS:true"

Note

Il est nécessaire de re-entrer la configuration en entier pour que les valeurs de `serverLogin` et `serverPassword` ne soient pas perdues.

Attention, Gateway refuse les certificats TLS auto-signés. Si votre partenaire R66 utilise un certificat auto-signé, il faudra l’ajouter à la liste des certificats de confiance du partenaire comme ceci :

    $ waarp-gateway partner cert "r66_server" add --name "r66_server_cert" --certificate "cert.pem"
    The certificate r66_server was successfully added.

Il vous faudra également activer TLS dans la configuration de l’agent Waarp R66, veuillez vous référer à la documentation Waarp R66 pour la marche à suivre.

### Création d’un utilisateur

Pour pouvoir se connecter au partenaire, nous devons maintenant créer un utilisateur. Cela se fait en créant un « compte distant » dans la Gateway. Cet utilisateur aura `gw_r66user` comme login et `gateway_password` comme mot de passe (ceux définis plus tôt lors de la configuration de l’agent R66) :

    $ waarp-gateway account remote "r66_server" add --login "gw_r66user" --password "gateway_password"
    The account gw_r66user was successfully added.

L’utilisateur est maintenant créé. Pour pouvoir faire un transfert, nous devons maintenant créer une règle de transfert

### Ajout d’un règle

Ici, nous voulons envoyer un fichier à la Gateway. La règle aura donc le sens `send` (« envoi ») : le sens des règles est toujours à prendre du point de vu de la Gateway (si on envoi un fichier à Gateway, celle-ci le reçoit). Attention, le nom de la règle doit être identique à celui de la règle définie dans l’instance Waarp R66 (`default` dans notre exemple).

Voici donc la commande pour créer la règle :

    $ waarp-gateway rule add --name "default" --direction "send"
    The rule default was successfully added.

### Premier transfert

Maintenant que nous avons un partenaire, un utilisateur et une règle, nous pouvons effectuer un transfert. Créons d’abord un fichier à transférer, puis envoyons-le avec Gateway :

    # echo "hello world!" > /var/lib/waarp-gateway/out/a-envoyer.txt

    $ transfer add --file "a-envoyer.txt" --way "send" --client "gw_r66_client" --partner "r66_server" --login "gw_r66user" --rule "default"
    The transfer of file a-envoyer.txt was successfully added.

Après avoir établi une connexion avec la Gateway, nous avons déposé un fichier dans le dossier `in` de l’agent Waarp R66 avec la règle `default`.

Nous pouvons vérifier que le transfert s’est bien passé dans l’historique des transferts de la Gateway :

    $ waarp-gateway transfer list
    Transfers:
    [...]
    * Transfer 2 (as client) [DONE]
        Way:             send
        Protocol:        r66
        Rule:            default
        Client:          gw_r66_client
        Requester:       gw_r66user
        Requested:       r66_server
        Local filepath:  /etc/waarp-gateway/out/a-envoyer.txt
        Remote filepath: /a-envoyer.txt
        Start date:      2020-09-17T17:27:44Z
        End date:        2020-09-17T17:27:45Z

Le fichier disponible est maintenant dans le dossier `in` de Waarp R66. Comme nous n’avons pas spécifié de dossier spécifique dans la règle, c’est le dossier par défaut de l’instance qui est utilisé :

    $ ls -l ./data/r66_server/in
    total 4
    -rw-rw-r--. 1 waarp waarp 13 Sep 17 17:27 a-envoyer.txt