Synchronisation du référentiel
==============================

Waarp Manager offre la possibilité d'être synchronisé avec un
référentiel externe. La synchronisation permet de créer et de mettre à
jour les partenaires et les sites définis.

.. note::

   Seuls les partenaires de type Waarp R66 (client et serveurs) et Waarp
   Gateway FTP sont gérés.

Le référentiel en base de donnée doit être mis à jour par vos propres moyens.
Après chaque modification du référentiel, un script doit être exécuté pour
synchroniser la base de données interne avec le référentiel :

.. code-block:: bash

   ./waarp-manager db sync -c waarp-manager.ini

Opérations effectuées
---------------------

Le référentiel doit être injecté dans la table ``ref_instances`` de la
base de données utilisée par Waarp Manager.

Lors de l'exécution de la commande ``./waarp-manager db sync``, pour
chaque ligne créée dans la table ``ref_instances``, les opérations
suivantes sont effectuées :

* Si le site indiqué n'existe pas, celui-ci est créé.
* Si le partenaire n'existe pas, celui-ci est créé. Sinon, il est mis
  à jour.


Structure de la table
---------------------

La table ``ref_instances`` a la structure suivante :

====================== =========== ===========
Colonne                Type        Description
====================== =========== ===========
app_name               text        Le nom de l'application correspondant au partenaire
id_app                 text        Identifiant de l'application
env                    text        Environnement de l'application
tiers_id               text unique Identifiant du partenaire pour les transferts en clair
tiers_id_ssl           text unique Identifiant du partenaire pour les transferts SSL
host_name              text        Identifiant du serveur sur lequel le partenaire est installé
ip_address             text        Adresse IP du serveur sur lequel le partenaire est installé
site_name              text        Nom du site auquel le partenaire appartient
type                   text        Type du partenaire (valeurs possibles: ``transfer``, ``gw``, ``r66`` ou ``gwftp``)
is_server              bool        ``true`` si le partenaire est un serveur
port_rest              int64       Port utilisé par l'interface REST du moniteur R66
port_r66               int64       Port utilisé par le moniteur R66
port_r66_ssl           int64       Port utilisé par le moniteur R66 via SSL
port_ftp               int64       Port utilisé par la passerelle FTP
port_ftp_passive_min   int64       Port minimal utilisé par la passerelle FTP pour les flux de données passif
port_ftp_passive_max   int64       Port maximal utilisé par la passerelle FTP pour les flux de données passif
ftp_username           text        Nom d'utilisateur utilisé par la passerelle FTP
aes_key                text        Clé AES utilisée par les partenaires Gateway et Transfer
r66_tls_server_key     text        Clé TLS du serveur utilisée pour le protocole R66-TLS
r66_tls_server_cert    text        Certificat TLS du serveur utilisée pour le protocole R66-TLS
====================== =========== ===========

Elle peut être créée avec le code SQL suivant :

.. code-block:: sql

  CREATE TABLE IF NOT EXISTS ref_instances (
      app_name text not null default '',
      id_app text not null default '',
      env text not null default '',
      tiers_id text unique not null default '',
      tiers_id_ssl text unique not null default '',
      host_name text not null default '',
      ip_address text not null default '',
      site_name text not null default '',
      type text not null default '',
      is_server boolean,
      port_rest integer not null default 8088,
      port_r66 integer not null default 6666,
      port_r66_ssl integer not null default 667,
      port_ftp integer not null default 6621,
      port_ftp_passive_min integer not null default 30000,
      port_ftp_passive_max integer not null default 40000
      ftp_username character varying(255) DEFAULT ''::character varying,
      aes_key bytea DEFAULT '\x'::bytea,
      r66_tls_server_key text DEFAULT ''::text,
      r66_tls_server_cert text DEFAULT ''::text
   );
