# Envoi d’un fichier en R66

Nous allons maintenant mettre en place un premier transfert: l’envoi d’un fichier depuis Waarp Transfer vers un serveur R66.

## Login et mot de passe

L’authentification R66 étant bidirectionnelle (le client s’authentifie au serveur et le serveur s’authentifie au client), le client utilisera le login `r66_client` et le mot de passe `client_password`, le serveur utilisera le login `r66_server` et le mot de passe `server_password`.

## Configuration client

Pour pouvoir envoyer des fichiers, nous allons devoir ajouter un partenaire R66 à Waarp Transfer, un utilisateur associé à ce partenaire, et une règle de transfert en émission.

### Création d’un partenaire R66

Commençons par ajouter un partenaire R66 :

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

Pour créer un partenaire, nous devons préciser son nom, ainsi que des informations additionnelles pour contacter le serveur (ici l’adresse de connection, le port, ainsi que les informations d’authentification du serveur).

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-transfer partner update "r66_server" --config "serverLogin:r66_server" --config "serverPassword:server_password" --config "isTLS:true"
    The partner "r66_server" was successfully updated.

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, Waarp Transfer 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-transfer partner credential "r66_server" add --name "r66_server_cert" --type "trusted_tls_certificate" --value "r66.pem"
    The "r66_server_cert" credential was successfully added.

Il vous faudra également activer TLS dans la configuration du serveur.

### Création d’un utilisateur

Pour pouvoir s’authentifier auprès du partenaire, nous devons maintenant créer un utilisateur. Cela se fait en créant un « compte distant » dans Waarp Transfer. Cet utilisateur aura `r66_client` comme login et `client_password` comme mot de passe:

    $ waarp-transfer account remote "r66_server" add --login "r66_client" --password "client_password"
    The account "r66_client" 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’une règle

Enfin créons la règle `push` en mode `send` pour pouvoir envoyer des fichiers

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

    $ waarp-transfer rule add --name "push" --direction "send"
    The rule "push" was successfully added.

## Configuration du serveur

Dans cette partie nous allons paramétrer le serveur r66 sur la même instance de Waarp Transfer que celle portant le client. Cependant vous êtes libres d’utiliser une autre instance de Waarp Transfer ou une autre solution utilisant le protocol R66.

### Paramétrage du serveur

Mettons mettons en place le paramétrage du serveur et démarrons ce dernier. Les informations doivent correspondre à celle définies lors de la création du partenaire pendant la configuration du client.

    $ waarp-transfer server add --name "r66" --address "localhost:6666" --config "serverLogin:r66_server" --config "serverPassword:server_password"
      The server "r66" was successfully created.
    $ waarp-transfer server start "r66"
      The server "r66" was successfully started.

Optionnellement, si vous souhaitez sécuriser vos transfert vers ce partenaire avec TLS, il faut à la place créer un serveur `r66-tls` et lui ajouter des certificats

    $ waarp-transfer server add --name "r66-tls" --address "localhost:6667" --config "serverLogin:r66_server" --config "serverPassword:server_password"
    The server "r66-tls" was successfully created.
    $ waarp-transfer server credential "r66-tls" add --name "r66_tls_cert" --type "tls_certificate" --value "r66.crt" --secondary-value "r66.key"
    The "r66_tls_cert" credential was successfully added.
    $ waarp-transfer server restart "r66-tls"
    The server "r66-tls" was successfully restarted.

### Ajout de l’utilisateur

Nous ajoutons ensuite les informations d’authentification de l’utilisateur afin de l’autoriser à ce connecter:

    $ waarp-transfer account local "r66" add --login "r66_client" --password "client_password"
    The account "r66_client" was successfully added.

Attention si vous utilisez le serveur r66-tls de Waarp Transfer pensez à ajouter l’utilisateur au serveur `r66-tls` plutôt que `r66`:

    $ waarp-transfer account local "r66-tls" add --login "r66_client" --password "client_password"
    The account "r66_client" was successfully added.

### Ajout de la règle de transfert

Enfin créons la règle `push` en mode `receive` pour pouvoir recevoir des fichiers quand le client essaie de nous en envoyer avec cette règle.

    $ waarp-transfer rule add --name "push" --direction "receive"
     The rule "push" was successfully added.

Le sens des règles est toujours à prendre du point de vue de Waarp Transfer (si on envoie un fichier à un serveur, celui ci le reçoit). Attention, le nom de la règle doit être identique à celui de la règle définie sur le client (`push` dans notre exemple).

## Lancer le transfert

Maintenant que nous avons un client et un serveur configurés, nous pouvons effectuer un transfert. Créons d’abord un fichier à transférer, puis envoyons le avec Waarp Transfer :

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

    $ waarp-transfer transfer add --file "a-envoyer.txt" --way "send" --partner "r66_server" --login "r66_client" --rule "push"
    The transfer of file "a-envoyer.txt" was successfully added under the ID: 1

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

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

    $ waarp-transfer history list
    History:
    [...]
    ● Transfer 1 (send as client) [DONE]
     Remote ID:       1861832829562781696
     Rule:            push
     Protocol:        r66
     Requester:       r66_client
     Requested:       r66_server
     Local filepath:  /var/lib/waarp-transfer/out/a-envoyer.txt
     Remote filepath: a-envoyer.txt
     File size:       13
     Block size:      0
     Block check:     false
     Hash algo:
     Start date:      2024-11-27T19:01:52.406147+01:00
     Step:            StepNone
     Progress:        13
     Task number:     0

Le fichier disponible est maintenant dans le dossier `in` du serveur. 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 /var/lib/waarp-transfer/in/a-envoyer.txt
    -rw------- 1 waarp waarp 13 Nov 27 19:01 /var/lib/waarp-transfer/in/a-envoyer.txt