server.xml

Le fichier server.xml contient les directives de configurations de l’instance serveur.

Note

Les changements dans ce fichier sont pris en compte au redémarrage du serveur.

Les directives de configuration sont réparties en 11 sections :

  • identity: données concernant l’identité de l’instance

  • server: données spécifiques au service

  • network: données concernant les paramètres réseaux

  • ssl: paramétrage des certificats SSL

  • directory: dossiers utilisés par le service

  • limit: paramétrage de l’utilisation des ressources et du comportement interne du serveur

  • db: paramétrage de la base de données

  • rest: paramétrage de l’interface REST

  • business: paramétrage des composantes métiers (Mode Embedded)

  • roles: paramétrage des rôles autorisés des partenaires

  • aliases: paramétrage d’alias (nom de remplacement) pour des partenaires

  • extendTaskFactory: paramétrage d’extension de tâches

  • monitor: paramétrage d’extension du monitoring en mode PUSH REST http(s)

Il existe également des options étendues à la JVM : ExtraOptions

Section identity

Balise

Type

Obl.

Défaut

Signification

hostid

string

O

Nom de l’hôte en mode non-SSL

sslhostid

string

N

Nom de l’hôte en mode SSL

cryptokey

string

O

Fichier contenant la clef de cryptage des mots de passe stockés, elle-même encryptée en DES

authentfile

string

N

Fichier XML contenant l’authentification des partenaires Waarp R66

Section server

Balise

Type

Obl.

Défaut

Signification

serveradmin

string

O

Nom d’utilisateur de l’administrateur utilisé pour accéder à l’interface web d’administration

serverpasswd

string

O

Mot de passe de l’administrateur encryptée avec la clef « cryptokey » utilisé pour accéder à l’interface web d’administration

usenossl

boolean

N

True

Active le mode non-SSL

usessl

boolean

N

False

Active le mode SSL

usehttpcomp

boolean

N

False

Si le mode SSL est activé, active la compression SSL

uselocalexec

boolean

N

False

Par défaut, Waarp R66 utilise System.exec() pour exécuter les processus externes. Cela peut poser des problèmes de performance (limitations de la JDK). L’utilisation de GoldenGate LocalExec Daemon peut permettre d’obtenir de meilleures performance par délégation d’exécution.

lexecadd

string

N

127.0.0.1

Adresse sur laquelle écoute le daemon LocalExec

lexecport

integer

N

9999

Port sur lequel écoute le daemon LocalExec

httpadmin

string

O

Chemin vers le dossier où sont stockées les sources de l’interface d’administration web

admkeypath

string

O

Chemin vers le fichier JKS contenant le certificat HTTPS pour l’interface web d’administration

admkeystorepass

string

O

Mot de passe du fichier JKS contenant le certificat HTTPS pour l’interface web d’administration

admkeypass

string

O

Mot de passe certificat HTTPS pour l’interface web d’administration contenu dans le fichier JKS.

checkaddress

boolean

N

False

Si « True », le serveur R66 vérifie l’adresse IP de l’hôte distant qui demande une connexion

checkclientaddress

boolean

N

False

Si « True », le serveur R66 vérifie l’adresse IP des clients qui demandent une connexion

multiplemonitors

integer

O

1

Nombre de serveurs qui agissent dans le même groupe comme une seule instance R66

pastlimit

integer

N

86400000

Profondeur maximale affichées dans l’interface HTTP de monitoring en ms

minimaldelay

integer

N

5000

Intervalle de rafraîchissement automatique de l’interface HTTP de monitoring en ms

snmpconfig

string

N

Chemin vers le fichier de configuration de l’agent SNMP (voir référence)

multiplemonitors

integer

N

1

Nombre d’instances dans un cluster de serveurs Waarp R66

businessfactorynetwork

string

N

null

Indique la classe Factory pour les comportements « métiers » à associer à Waarp (Embedded)

Section network

Nouveau dans la version 3.5.0: Ajout des options serveraddresses, serverssladdresses, serverhttpaddresses, serverhttpsaddresses.

Balise

Type

Obl.

Défaut

Signification

serverport

integer

N

6666

Port utilisé pour le protocole R66

serveraddresses

string

N

null

Adresses utilisées pour le protocole R66 (séparées par des virgules)

serversslport

integer

N

6667

Port utilisé pour le protocole R66 en SSL

serverssladdresses

string

N

null

Adresses utilisées pour le protocole R66 en SSL (séparées par des virgules)

serverhttpport

integer

N

8066

Port utilisé pour l’interface web de supervision (la valeur 0 désactive l’interface)

serverhttpaddresses

string

N

null

Adresses utilisées pour l’interface web de supervision (séparées par des virgules)

serverhttpsport

integer

N

8067

Port utilisé pour l’interface web HTTPS d’administration (la valeur 0 désactive l’interface)

serverhttpsaddresses

string

N

null

Adresses utilisées pour l’interface web HTTPS d’administration (séparées par des virgules)

Il est possible de définir avec précision les interfaces (IP) utilisées pour chacun des ports via les options serveraddresses, serverssladdresses, serverhttpaddresses, serverhttpsaddresses. Chacune spécifie optionnellement la liste des IP à associer (avec le port défini optionnellement) avec la virgule comme séparateur.

Si cette option n’est pas spécifiée ou vide pour un port de service, toutes les interfaces disponibles seront associées à ce service avec ce port.

Exemple :

<network>
  <serverport>6666</serverport>
  <!-- 1 adresse définie en loop -->
  <serveraddresses>127.0.0.1</serveraddresses>
  <serversslport>6667</serversslport>
  <!-- 2 adresses définies -->
  <serverssladdresses>192.168.0.2,10.1.0.10</serverssladdresses>
  <serverhttpport>8066</serverhttpport>
  <!-- Toutes les interfaces seront utilisées, idem si non spécifié -->
  <serverhttpaddresses/>
  <serverhttpsport>8067</serverhttpsport>
  <!-- 1 adresse définie en local -->
  <serverhttpsaddresses>192.168.0.2</serverhttpsaddresses>
</network>
<network>
  <!-- Toutes les interfaces seront utilisées -->
  <serverport>6666</serverport>
  <serversslport>6667</serversslport>
  <serverhttpport>8066</serverhttpport>
  <serverhttpsport>8067</serverhttpsport>
</network>

Section ssl

Cette section est optionnelle et peut être omise si le mode SSL est désactivé (server/usessl est false)

Balise

Type

Obl.

Défaut

Signification

keypath

String

O

Chemin vers le fichier JKS qui contient la clef privée du serveur

keystorepass

String

O

Mot de passe du fichier JKS qui contient la clef privée du serveur

keypass

String

O

Mot de passe de la clef privée du serveur

trustkeypath

String

O

Chemin vers le fichier JKS qui contient la clef publics des hôtes autorisés à se connecter à ce serveur

trustkeystorepass

String

O

Mot de passe du fichier JKS qui contient la clef publics des hôtes autorisés à se connecter à ce serveur

trustuseclientauthenticate

boolean

N

False

Force la connexion des clients en SSL

Section directory

Note

Les dossiers par défaut indiqués sont relatifs au dossier serverhome.

Balise

Type

Obl.

Défaut

Signification

serverhome

String

O

Chemin vers le répertoire de base du serveur Waarp R66

in

String

N

IN

Chemin du dossier par défaut dans lequel sont déposés les fichiers reçus par défaut (chemin relatif à « serverhome »)

out

String

N

OUT

Chemin du dossier par défaut dans lequel sont pris les fichiers envoyés (chemin relatif à « serverhome »)

arch

String

N

ARCH

Chemin du dossier utilisé pour les archives (chemin relatif à « serverhome »)

work

String

N

WORK

Chemin du dossier utilisé par défaut pour stocker les fichiers en cours de réception (chemin relatif à « serverhome »)

conf

String

N

CONF

Chemin vers le dossier contenant la configuration du serveur

Section limit

Nouveau dans la version 3.6.0: Ajout de l’option compression : Active ou Désactive la compression à la volée des blocs transmis, puis en fonction du partenaire.

Balise

Type

Obl.

Défaut

Signification

serverthread

Integer

N

8

Nombre de threads utilisés par les serveur Waarp R66 (valeur recommandée: nombre de cœurs du processeur) (si 0, la valeur sera autmatiquement calculée en fonction)

clientthread

Integer

N

80

Nombre de threads utilisés par le client Waarp R66 (valeur recommandée: serverthread*10) (si 0, la valeur sera autmatiquement calculée en fonction)

memorylimit

Integer

N

1000000000

Quantité maximale de mémoire utilisée pour les services Web et REST (en octets)

sessionlimit

Integer

N

1GB

Bande passante maximale utilisée pour une session (en octets)

globallimit

Integer

N

100GB

Bande passante globale maximale utilisée (en octets)

delaylimit

Integer

N

10000

Délais entre deux vérifications de bande passante. Plus cette valeur est faible, plus le contrôle de la bande passante sera précis. Attention toutefois à ne pas donner de valeur trop faible (en ms)

runlimit

Integer

N

1000

Nombre maximal de transferts actifs simultanés (maximum 50000)

delaycommand

Integer

N

5000

Délais entre deux exécutions du Commander (en ms)

delayretry

Integer

N

30000

Délais entre deux tentatives de transfert en cas d’erreur (en ms)

timeoutcon

Integer

N

30000

Délais de timeout d’une connexion (en ms)

blocksize

Integer

N

65536

Taille de bloc utilisée par le serveur Waarp R66. Une valeur entre 8KB et 16MB est recommandée (en octets)

gaprestart

Integer

N

30

Nombre de blocs écartés lors de la reprise d’un transfert.

usenio

boolean

N

False

Activation du support de NIO pour les fichiers. Selon le JDK, cela peut améliorer les performances.

usecpulimit

boolean

N

False

Utilisation de la limitation de l’utilisation du CPU en jouant sur la bande passante globale pour limiter l’usage des processeurs

usejdkcpulimit

boolean

N

False

Utilisation du support natif du JDK pour contrôler l’utilisation du CPU. Si « False », la librairie Java Sysmon est utilisée

cpulimit

Decimal

N

0.0

Pourcentage maximal d’utilisation du CPU au-delà duquel une demande de transfert est refusée. Les valeurs 0 et 1 désactivent la limite.

connlimit

Integer

N

0

Nombre maximal de connexions. La valeur 0 désactive la limite.

lowcpulimit

decimal

N

0.0

Seuil minimal de consommation de CPU (en pourcentage)

highcpulimit

decimal

N

0.0

Seuil maximal de consommation de CPU (en pourcentage). La valeur 0 désactive le contrôle.

percentdecrease

decimal

N

0.01

Valeur de diminution de la bande passante quand le seuil maximal de consommation CPU est atteint (en pourcentage)

delaythrottle

integer

N

1000

Intervalle de contrôle de la consommation de ressources (en ms)

limitlowbandwidth

integer

N

1000000

Seuil minimal de consommation de bande passante (en octets)

digest

Integer

N

2

Algorithme de hashage utilisé par défaut. CRC32=0, ADLER32=1, MD5=2, MD2=3, SHA1=4, SHA256=5, SHA384=6, SHA512=7 (SHA512=7 est recommandé)

usefastmd5

boolean

N

False

Utilisation de la librairie FastMD5 (cette option n’est plus active)

usethrift

integer

N

0

Active le serveur RPC Apache Thrift (0 désactive le serveur RPC, une valeur supérieure à 0 indique le port sur lequel écouter)

checkversion

boolean

N

True

Vérifie la version de ses partenaires pour s’assurer de la compatibilité du protocole

globaldigest

boolean

N

True

Active ou non le contrôle d’intégrité de bout en bout

localdigest

boolean

N

True

Active ou non le contrôle d’intégrité de bout en bout en fin de transfert localement (optionnel, False est autorisé sans restreindre les capacités)

compression

boolean

N

False

Active ou Désactive la compression à la volée des blocs transmis, en fonction du partenaire. (nécessite le mot clef #COMPRESS# dans chaque règle où l’on veut le voir actif)

Section db

Note

Si taskrunnernodb est à True, les autres balises peuvent être omises.

Si taskrunnernodb est à False, où si la balise est absente, toutes les autres balises doivent être renseignées.

Balise

Type

Obl.

Défaut

Signification

taskrunnernodb

boolean

N

False

Indique si le serveur utilise une base de données ou non

dbdriver

String

N

Type de base de données utilisé. Sont supportés : oracle, mysql, postgresql, h2

dbserver

String

N

Chaîne de connexion JDBC à la base de données. Consulter le manuel du pilote JDBC utilisé pour la syntaxe exacte.

dbuser

String

N

Utilisateur de la base de données

dbpasswd

String

N

Mot de passe de l’utilisateur de la base de données.

autoUpgrade

boolean

N

True

Vérifie que le modèle de données est à jour au démarrage, et effectue la mise à jour le cas échéant

dbcheck

boolean

N

True

(déprécié) Utiliser autoUpgrade à la place

Section rest

Balise

Type

Obl.

Défaut

Signification

restaddress

string

N

Adresse IP sur laquelle le serveur écoute pour servir l’API REST

serverrestport

integer

N

8068

Port sur lequel le serveur écoute pour servir l’API REST

restssl

boolean

N

False

Active le mode HTTPS pour l’interface REST

restauthenticated

boolean

N

False

Active l’authentification des requêtes vers l’API REST

resttimelimit

integer

N

-1

Active la limitation de validité dans le temps des requêtes (en ms). -1 désactive cette limitation.

restsignature

boolean

N

True

Active la signature des requêtes REST

restsigkey

string

N

Chemin vers le fichier contenant la clef de signature des requêtes REST (cf. restsignkey)

restmethod

O

Voir ci-dessous.

Les balises restmethod peuvent être renseignées plusieurs fois. Elles permettent d’activer chaque fonctionnalités de l’API REST individuellement.

Chaque ocurrence de restmethod doit contenir deux balises :

  • restname: le nom de la fonctionnalité à paramétrer (plusieurs fonctionnalités peuvent être renseignées, séparées par des espaces)

  • restcrud: les actions actives pour la (les) fonctionnalités en question.

Par exemple :

<restmethod>
     <restname>ALL</restname>
     <restcrud>R</restcrud>
</restmethod>
<restmethod>
   <restname>DbHostAuth DbRule</restname>
   <restcrud>CRU</restcrud>
</restmethod>
<restmethod>
   <restname>Bandwidth</restname>
   <restcrud>RU</restcrud>
</restmethod>

Les fonctionnalités sont les suivantes :

Fonctionnalité

Description

All

Alias regroupant toutes les fonctionnalités ci-dessous

DbTaskRunner

Actions sur les transferts

DbHostAuth

Actions sur la liste des partenaires

DbRule

Actions sur les règles de transfert

DbHostConfiguration

Actions sur la configuration des hôtes

DbConfiguration

Actions sur les limitations de bandes passantes

Bandwidth

Actions sur les limitations de bandes passantes

Business

Actions sur l’intégration métier

Config

Import/export de la configuration

Information

Récupère des informations sur les transferts

Log

Actions sur les logs

Server

Actions sur le serveur

Control

Actions sur les transferts

Pour chaque fonctionnalités, les actions à activer sont indiquées par une combinaison des lettres C, R, U et D (C pour création, R pour lecture, U pour mise-à-jour et D pour suppression) ou seules les actions voulues doivent être indiquées.

Section business

Balise

Type

Obl.

Défaut

Signification

businessid

string

N

Id d’un partenaire autorisé à déclencher des opérations Business

Section roles

Il s’agit d’une liste de role, contenant chacun:

Balise

Type

Obl.

Défaut

Signification

roleid

string

O

Id d’un partenaire

roleset

string

O

liste de rôles autorisés, séparés par un « blanc » ou un « | », parmi: NOACCESS,READONLY,TRANSFER,RULE,HOST,LIMIT,SYSTEM,LOGCONTROL,PARTNER(READONLY,TRANSFER),CONFIGADMIN(PARTNER,RULE,HOST),FULLADMIN(CONFIGADMIN,LIMIT,SYSTEM,LOGCONTROL)

Section aliases

Il s’agit d’une liste de alias, contenant chacun:

Balise

Type

Obl.

Défaut

Signification

realid

string

O

Id d’un partenaire

aliasid

string

O

liste de noms alias équiavelents, séparés par un « blanc » ou un « | »

Section ExtendTaskFactory

Nouveau dans la version 3.6.0: Ajout du sous-ensemble extendTaskFactory qui contient l’option extendedtaskfactories : pour la Factory org.waarp.openr66.s3.taskfactory.S3TaskFactory, si la classe est dans le claspath, il n’est pas nécessaire de l’ajouter.

Balise

Type

Obl.

Défaut

Signification

extendedtaskfactories

String

N

vide

Liste (séparée par des virgules) des TaskFactory en tant qu’extension pour ajouter des tâches à WaarpR66

Section pushMonitor

Cette section décrit comment monitorer R66 via des appels REST HTTP(s) vers un serveur tiers (en mode PUSH).

Nouveau dans la version 3.6.0: Ajout du sous-ensemble pushMonitor qui contient les options communes url, delay, intervalincluded, transformlongasstring, token, apiKey, les options spécifiques``endpoint``, keepconnection et basicAuthent sont liées à une API REST en destination, les options spécifiques``index``, prefix, username, paswd et compression sont liées à Elasticsearch en destination.

Balise

Type

Obl.

Défaut

Signification

Partie commune

url

string

N

null

URL de base pour les exports du moniteur en mode POST HTTP(S) JSON

delay

integer

N

1000

Délai entre deux vérifications de changement de statuts sur les transferts

intervalincluded

boolean

N

True

Si « True », les informations de l’intervalle utilisé seront fournies

transformlongasstring

boolean

N

False

Si « True », les nombres « long » seront convertis en chaîne de caractères, sinon ils seront numériques

token

string

N

null

Spécifie si nécessaire le token dans le cadre d’une authentification via Token

apiKey

string

N

null

Spécifie si nécessaire le password dans le cadre d’une authentification via ApiKey (format apiId:apiKey)

Partie API REST

endpoint

string

N

null

End point à ajouter à l’URL de base

keepconnection

boolean

N

True

Si « True », la connexion HTTP(S) sera en Keep-Alive (pas de réouverture sauf si le serveur la ferme), sinon la connexion sera réinitialisée pour chaque appel

basicAuthent

string

N

null

Spécifie si nécessaire l’authentification basique

Partie Elasticsearch

index

string

N

null

Contient le nom de l’index avec de possibles substitutions, dont %%WARPHOST%% pour le nom du host concerné, et les %%DATETIME%%, %%DATEHOUR%%, %%DATE%%, %%YEARMONTH%%, %%YEAR%% pour des substitutions de date et heure partiellement (yyyy.MM.dd.HH.mm à yyyy)

prefix

string

N

null

Spécifie si nécessaire un prefix global dans le cas d’usage d’un Proxy devant Elasticsearch

username

string

N

null

Spécifie si nécessaire le username (et son password) dans le cadre d’une authentification basique

paswd

string

N

null

Spécifie si nécessaire le password dans le cadre d’une authentification basique

compression

boolean

N

True

Spécifie si les flux sont compressés (par défaut True)

Voir aussi

Une documentation complète de la configuration du monitoring en mode export REST HTTP(S) ou en mode Elasticsearch (JRE >= 8) est disponible ici

Section ExtraOptions

Mise à jour automatique de la base de données

Par défaut, le champ <root><version>version</version></root> du fichier de configuration XML est géré par Waarp pour vérifier la configuration de la base de données et sa version par rapport à celle du programme, afin de permettre une mise à jour automatique.

Cette mise à jour automatique peut être empêchée par l’option <db><autoUpgrade>False</autoUpgrade>...</db> ou grâce à la propriété Java -Dopenr66.startup.dbcheck=0.

Partage d’une même base entre plusieurs moniteurs Waarp

Dans le cas où une base est partagée entre plusieurs moniteurs R66, afin d’être capable de voir tous les transferts dans la console web d’administration, vous pouvez indiquer une option spéciale dans « Autres informations » avec l’identifiant qui sera utilisé pour se connecter à cette interface Web.

<root>...<seeallid>id1,id2,...,idn</seeallid></root>

Exemple complet

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:x0="http://www.w3.org/2001/XMLSchema">
    <comment>Configuration file for a server with a Postgresql database</comment>
    <identity>
        <hostid>monserveur</hostid>
        <sslhostid>monserveur-ssl</sslhostid>
        <cryptokey>/etc/waarp/cryptokey.des</cryptokey>
    </identity>
    <server>
        <serveradmin>admin</serveradmin>
        <serverpasswd>5a4b7c6a66065cbb622acefec8c3a302</serverpasswd>
        <usenossl>True</usenossl> <!-- Might be False if not needed -->
        <usessl>True</usessl> <!-- Might be False if not needed -->
        <usehttpcomp>False</usehttpcomp>
        <uselocalexec>False</uselocalexec>
        <httpadmin>/etc/waarp/admin</httpadmin>
        <admkeypath>/etc/waarp/adminkey.jks</admkeypath>
        <admkeystorepass>password</admkeystorepass>
        <admkeypass>password</admkeypass>
        <checkaddress>False</checkaddress>
        <checkclientaddress>False</checkclientaddress>
        <pastlimit>86400000</pastlimit>
        <minimaldelay>5000</minimaldelay>
        <multiplemonitors>1</multiplemonitors>
        <!-- Might be removed if not needed -->
        <snmpconfig>/etc/waarp/snmpconfig.xml</snmpconfig>
    </server>
    <network>
        <serverport>6666</serverport>
        <serversslport>6667</serversslport>
        <serverhttpport>8066</serverhttpport>
        <serverhttpsport>8067</serverhttpsport>
    </network>
    <ssl>
        <keypath>/etc/waarp/key.jks</keypath>
        <keystorepass>password</keystorepass>
        <keypass>password</keypass>
        <trustkeypath>/etc/waarp/trustkey.jks</trustkeypath>
        <trustkeystorepass>password</trustkeystorepass>
        <trustuseclientauthenticate>True</trustuseclientauthenticate>
    </ssl>
    <directory>
        <serverhome>/var/lib/waarp</serverhome>
        <in>in</in>
        <out>out</out>
        <arch>arch</arch>
        <work>work</work>
        <conf>conf</conf>
    </directory>
    <rest>
        <restaddress>0.0.0.0</restaddress>
        <restport>8088</restport>
        <restssl>true</restssl>
        <restauthenticated>true</restauthenticated>
        <resttimelimit>3000</resttimelimit>
        <restsignature>true</restsignature>
        <restsigkey>/etc/waarp/restsigning.key</restsigkey>
        <restmethod>
            <restname>ALL</restname>
            <restcrud>CRUD</restcrud>
        </restmethod>
        <restmethod>
           <restname>Bandwidth</restname>
           <restcrud>CRUD</restcrud>
        </restmethod>
        <restmethod>
           <restname>Information</restname>
           <restcrud>CRUD</restcrud>
        </restmethod>
        <restmethod>
           <restname>Server</restname>
           <restcrud>CRUD</restcrud>
        </restmethod>
        <restmethod>
           <restname>Control</restname>
           <restcrud>CRUD</restcrud>
        </restmethod>
    </rest>
    <limit>
        <!-- Might be changed to number of cores -->
        <serverthread>8</serverthread>
        <!-- Might be changed to number of cores x 10 -->
        <clientthread>80</clientthread>
        <usefastmd5>False</usefastmd5>
        <timeoutcon>10000</timeoutcon>
        <delayretry>10000</delayretry>
        <!-- Might be changed to 100000 -->
        <memorylimit>1000000</memorylimit>
        <!-- Might be changed to 100 to 1000 according to activity -->
        <runlimit>1000</runlimit>
    </limit>
    <db>
        <dbdriver>postgresql</dbdriver>
        <dbserver>jdbc:postgresql://localhost:5432/waarp_r66</dbserver>
        <dbuser>username</dbuser>
        <dbpasswd>password</dbpasswd>
        <autoUpgrade>false</autoUpgrade>
    </db>
    <extendTaskFactory>
        <extendedtaskfactories>org.waarp.openr66.s3.taskfactory.S3TaskFactory</extendedtaskfactories>
    </extendTaskFactory>
    <pushMonitor>
        <url>http://127.0.0.1:8999</url>
        <endpoint>/log</endpoint>
        <delay>1000</delay>
        <keepconnection>true</keepconnection>
        <intervalincluded>true</intervalincluded>
        <transformlongasstring>false</transformlongasstring>
    </monitor>
</config>