Historique des versions

Note

Pour mettre à jour votre installation, la procédure standard peut s’appliquer. Si des étapes complémentaires doivent s’appliquer, celles-ci seront notées ci-dessous.

0.13.0 2019-04-11

  • [Feature]: Une migration de base de données est nécessaire pour la mise à jour vers la version 0.12.0. Le script SQL suivant doit être exécuté dans la base de données de Waarp Manager (installés dans ROOT/share/migration par les archives et /usr/share/waarp-manager/migration par les packages) :
    1. 20181204_add_connection_direction_default_templates.sql
  • [Feature] #159: Les transferts depuis un partenaire SFTP vers un partenaire SFTP sont maintenant possibles
  • [Feature] #164: Autorise les définitions de flux depuix un client FTP
  • [Bug] #151: Dans les historiques de flux et de transfert, on ne pouvait pas filtrer par nom de fichier si le nom de fichier saisi n’est composé que de nombre
  • [Bug] #149: La durée des transferts pouvait être négative ou nulle (en cas d’erreur R66). Ceci est maintenant impossible
  • [Bug] #155: Les modèles par défaut prennent en compte les sens de connexion
  • [Bug] #163: La relance de transferts à destination de passerelles SFTP ne fonctionnait pas

0.12.2 2018-11-21

  • [Bug]: Le rafraîchissement des historiques des transfert et des flux met maintenant à jour chaque transfert dans sa propre transaction
  • [Bug]: Réactivation de la regénération des mots de passe des partenaires
  • [Bug]: Le détail des lignes d’historique ne se referme pas

0.12.1 2018-07-06

  • [Bug]: Fixes LDAP support
  • [Bug]: Autorise l’administration à définir l’en-tête HTTP à utiliser pour communiquer au proxy l’hôte de destination de la requête
  • [Bug]: Correction du bug qui empêchait les utilisateurs de changer leur mot de passe

0.12.0 2018-05-14

  • [Feature]: Une migration de base de données est nécessaire pour la mise à jour vers la version 0.12.0. Le script SQL suivant doit être exécuté dans la base de données de Waarp Manager (installés dans ROOT/share/migration par les archives et /usr/share/waarp-manager/migration par les packages) :

    1. 20180511_rest_http_proxy_support.sql

      BEGIN;
      
      DO $$
          BEGIN
              BEGIN
                  ALTER TABLE sites ADD COLUMN "has_http_proxy" boolean DEFAULT false;
              EXCEPTION
                  WHEN duplicate_column THEN
                  --do nothing
              END;
          END;
      $$;
      
      DO $$
          BEGIN
              BEGIN
                  ALTER TABLE sites ADD COLUMN "http_proxy" varchar(255) NOT NULL DEFAULT '';
              EXCEPTION
                  WHEN duplicate_column THEN
                  --do nothing
              END;
          END;
      $$;
          
              
      
      
      COMMIT;
      
  • [Feature]: Support de proxy HTTP pour les sites (requêtes REST)

  • [Feature]: Création d’un onglet de configutation des filewatchers dans le formulaire d’édition des flux

  • [Feature]: Évolution des filewatchers : TLS peut être activé pour le premier transfert

  • [Feature]: Évolution des filewatchers : le filewatcher peut également surveiller les sous-dossiers du docssier cible (mode récursif)

  • [Feature]: Évolution des filewatchers : la regex de filtrage peut être paramétrée

  • [Feature]: Évolution des filewatchers : Le filewatcher peut être paramétré pour lancer des transferts synchrones ou asynchrones

0.11.4 2018-03-26

  • [Bug]: Une migration de base de données est nécessaire pour la mise à jour vers la version 0.11.4. Les scripts SQL suivants doivent être exécutés dans la base de données de Waarp Manager (installés dans ROOT/share/migration par les archives et /usr/share/waarp-manager/migration par les packages) :

    1. 20180326_remove_flow_speed.sql

      BEGIN;
      
      ALTER TABLE flow_log DROP COLUMN IF EXISTS speed;
      
      COMMIT;
      
    2. 20180323_fix_default_template.sql

      BEGIN;
          delete from template_tasks where rule_id IN (
              SELECT id from template_rules where tpl_id IN (1, 2)
          );
          DELETE from template_rules where tpl_id IN (1, 2);
      
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (1, 0, 'auto', '{{flow_name}}', 'route_index == 1 and origin.Type == types.FTP and not origin.Type == types.SFTP and origin.IsClient and not origin.IsServer');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'FTPCOMMAND', 30000, 'R66PREPARETRANSFER -to {{next.destination.HostIdSsl}} -file #BASEPATH##FILE# -rule #ACCOUNT#_2', NULL);
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (1, 1, 'auto', '{{flow_name}}', 'route_index == 1');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'COPYRENAME', 0, '#OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'next.destination.Type != types.FTP and next.destination.Type != types.SFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 1, 'TRANSFER', 0, '-file #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME# -to {{next.destination.HostIdSsl}} -rule {{next.name}} -copyinfo', 'next.destination.Type == types.R66 and next.destination.IsServer or next.destination.Type == types.GWFTP or next.destination.Type == types.GWSFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 2, 'COPYRENAME', 0, '#INPATH#/#ORIGINALFILENAME#', 'destination.Type == types.R66 and destination_id in final_destinations'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'DELETE', 0, NULL, NULL);
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (1, 2, 'auto', '{{flow_name}}_2', 'origin.Type == types.GWFTP or origin.Type == types.GWSFTP and route_index == 2');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'COPYRENAME', 0, '#OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'next.destination.Type != types.FTP or next.destination.Type != types.SFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 1, 'TRANSFER', 0, '-file #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME# -to {{next.destination.HostIdSsl}} -rule {{next.name}} -copyinfo', 'next.destination.Type == types.R66 and next.destination.IsServer or next.destination.Type == types.GWFTP or next.destination.Type == types.GWSFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 2, 'COPYRENAME', 0, '#INPATH#/#ORIGINALFILENAME#', 'destination.Type == types.R66 and destination_id in final_destinations'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'DELETE', 0, NULL, NULL);
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (1, 3, 'auto', '{{flow_name}}_{{flow_index}}', 'route_index == last_index - 1');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'COPYRENAME', 0, '#OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'next.destination.Type != types.FTP and next.destination.Type != types.SFTP or next.destination.IsServer'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 1, 'COPYRENAME', 0, '#HOMEPATH#/ftp/{{next.destination.FtpClientUsername}}/{{flow_name}}/#ORIGINALFILENAME#', 'next.destination.Type == types.FTP or next.destination.Type == types.SFTP and next.destination.IsClient and not next.destination.IsServer'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 2, 'TRANSFER', 0, '-file #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME# -to {{next.destination.HostIdSsl}} -rule {{next.name}} -copyinfo', 'next.destination.Type == types.R66 and next.destination.IsServer or next.destination.Type == types.GWFTP or next.destination.Type == types.GWSFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'FTP', 30000, '-to {{next.destination.Ip}} -port {{next.destination.FtpServerPort}} -user {{next.destination.FtpServerUsername}} -pwd {{next.destination.FtpServerPassword}} -ssl {{next.destination.FtpServerSecure}} -file #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME# -cwd {{next.destination.FtpServerDirectory}} -command put', 'next.destination.Type == types.FTP and next.destination.IsServer'),
      	  (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'EXEC', 600000, './bin/sftpc.sh #HOSTID# --put --host {{next.destination.Ip}} --port {{next.destination.SftpServerPort}} --username {{next.destination.SftpUsername}} --password {{next.destination.SftpPassword}} #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'next.destination.Type == types.SFTP and next.destination.IsServer and next.destination.SftpAuthent == 1'),
      	  (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'EXEC', 600000, './bin/sftpc.sh #HOSTID# --put --host {{next.destination.Ip}} --port {{next.destination.SftpServerPort}} --username {{next.destination.SftpUsername}} #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'next.destination.Type == types.SFTP and next.destination.IsServer and next.destination.SftpAuthent == 2'),
      	  (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'EXEC', 600000, './bin/sftpc.sh #HOSTID# --put --host {{next.destination.Ip}} --port {{next.destination.SftpServerPort}} --username {{next.destination.SftpUsername}} --password {{next.destination.SftpPassword}} #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'next.destination.Type == types.SFTP and next.destination.IsServer and next.destination.SftpAuthent == 3'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 4, 'COPYRENAME', 0, '#INPATH#/#ORIGINALFILENAME#', 'destination.Type == types.R66 and destination_id in final_destinations'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 5, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 6, 'EXECOUTPUT', 30000, 'rm #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'next.destination.Type == types.FTP or next.destination.Type == types.SFTP and next.destination.IsServer');
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (1, 4, 'auto', '{{flow_name}}_FINAL', 'route_index == last_index and destination.Type != types.FTP and destination.Type != types.SFTP and not destination.IsServer');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'MOVERENAME', 0, '#INPATH#/#ORIGINALFILENAME#', 'destination.Type == types.R66 and destination_id in final_destinations');
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (1, 5, 'auto', '{{flow_name}}_FINAL', 'route_index == last_index and destination.Type != types.FTP and destination.Type != types.SFTP and destination.IsServer');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'MOVERENAME', 0, '#INPATH#/#ORIGINALFILENAME#', 'destination.Type == types.R66 and destination_id in final_destinations');
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (1, 6, 'auto', '{{flow_name}}', 'destination.Type == types.FTP or destination.Type == types.SFTP and route_index == last_index and destination.IsClient and not destination.IsServer');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'FTPCOMMAND', 0, 'NONE', NULL);
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (1, 7, 'auto', '{{flow_name}}_{{flow_index}}', 'default');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'COPYRENAME', 0, '#OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'next.destination.Type != types.FTP and next.destination.Type != types.SFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 1, 'TRANSFER', 0, '-file #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME# -to {{next.destination.HostIdSsl}} -rule {{next.name}} -copyinfo', 'next.destination.Type == types.R66 and next.destination.IsServer or next.destination.Type == types.GWFTP or next.destination.Type == types.GWSFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 2, 'COPYRENAME', 0, '#INPATH#/#ORIGINALFILENAME#', 'destination.Type == types.R66 and destination_id in final_destinations'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'DELETE', 0, NULL, NULL);
      
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (2, 0, 'auto', '{{flow_name}}', 'route_index == 1');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'COPYRENAME', 0, '#OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', 'route_index != last_index'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 1, 'DELETE', 0, NULL, 'route_index != last_index'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 2, 'TRANSFER', 0, '-file #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME# -to {{next.destination.HostIdSsl}} -rule {{next.name}} -copyinfo', 'route_index != last_index'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'EXECJAVA', 1, 'org.waarp.manager.tasks.UpdateConfExtended #HOSTID#', 'route_index == last_index and destination.Type != types.GWSFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 3, 'EXECJAVA', 1, 'org.waarp.manager.tasks.UpdateConfExtendedSFTP #HOSTID#', 'route_index == last_index and destination.Type == types.GWSFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 4, 'DELETE', 0, NULL, 'route_index == last_index');
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (2, 1, 'auto', '{{flow_name}}_{{flow_index}}', 'route_index == last_index');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'EXECJAVA', 1, 'org.waarp.manager.tasks.UpdateConfExtended #HOSTID#', 'destination.Type != types.GWSFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'EXECJAVA', 1, 'org.waarp.manager.tasks.UpdateConfExtendedSFTP #HOSTID#', 'destination.Type == types.GWSFTP'),
            (currval('template_rules_id_seq'), 'receiver', 'post', 1, 'DELETE',  0, NULL, NULL);
      
      insert into template_rules (tpl_id, rule_order, rule_mode, name, rule_when) values
            (2, 2, 'auto', '{{flow_name}}_{{flow_index}}', 'default');
      insert into template_tasks (rule_id, task_where, task_when, task_order, type, task_delay, task_path, task_condition) values
            (currval('template_rules_id_seq'), 'sender', 'post', 0, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 0, 'COPYRENAME', 0, '#OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME#', NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 1, 'DELETE', 0, NULL, NULL),
            (currval('template_rules_id_seq'), 'receiver', 'post', 2, 'TRANSFER', 0, '-file #OUTPATH#/{{next.destination.HostId}}/#ORIGINALFILENAME# -to {{next.destination.HostIdSsl}} -rule {{next.name}} -copyinfo', NULL);
      
      COMMIT;
      
  • [Bug]: Corrections du modèle de flux par défaut

  • [Bug]: Correction de traductions

  • [Bug]: Correction d’une erreur 404 causée par une erreur SQL

  • [Bug]: La reprise de transfert entre une gateway SFTP et un serveur R66 est maintenant possible

  • [Bug]: Correction de l’erreur de calcul de la signature des requêtes REST à destination ds serveurs Waarp r66

  • [Bug]: Correction de bug d’affichage suite à l’édition d’un objet

  • [Bug]: Affichage de la date de build réelle dans le « À propos »

  • [Bug]: Correction de l’affichage du formulaire d’ajout d’un modèle de flux

  • [Bug]: Correction de l’erreur causant une vitesse nulle pour les flux

  • [Bug]: Correction du modèle de flux par défaut

0.11.3 2017-10-05

  • [Bug]: Correction de l’ordre d’envoi des packages de configuration
  • [Bug]: Correction des modèles de flux pour le SFTP
  • [Bug]: Correction de l’ajout de partenaires SFTP client

0.11.2 2017-10-03

  • [Bug]: Rétablit le fonctionnement de l’éditeur de modèles et de l’ajout de partenaires SFTP pur IE 11

0.11.1 2017-10-03

  • [Bug]: Les nouveaux serveurs R66 sont automatiquement intégrés au rafrachissement des historiques

0.11.0 2017-10-02

  • [Feature]: Prise en charge de la configuration des filewatchers
  • [Feature]: Prise en charge des sens de connexion entre les sites

0.10.1 2017-09-30

  • [Bug]: Les packages de configuration des gateways SFTP n’étaient pas générés

0.10.0 2017-09-28

  • [Feature]: Waarp Manager peut écouter en HTTPS
  • [Feature]: Support des passerelles SFTP

0.9.3 2017-04-26

  • [Bug]: Une migration de base de données est nécessaire pour la mise à jour vers la version 0.9.3. Le script SQL suivant doit être exécuté dans la base de données de Waarp Manager :

    BEGIN;
    
        DROP INDEX IF EXISTS transfer_log_find_existing;
        CREATE INDEX transfer_log_find_existing ON transfer_log(
            filename,
            origin_hostid,
            destination_hostid,
            rulename,
            origin_transfer_id,
            destination_transfer_id
        );
    
    
        DROP INDEX IF EXISTS flow_log_find_existing;
        CREATE INDEX flow_log_find_existing ON flow_log (
            flowname, filename
        );
    
    COMMIT;
    
  • [Bug]: Affichage erroné du nombre de page dans les écrans d’historique

  • [Bug]: Ajout d’indexes sur les tables d’historique pour accélérer le rafraichissement

  • [Bug]: L’historique des transferts ne supporte pas les transferts à soi

  • [Bug]: Le script de lancement windows a des fins de ligne Linux

  • [Bug]: La conf du package windows a des fins de lignes Linux

  • [Bug]: La valeur par défaut de R66Cmd est erronée dans la conf du package Windows

  • [Bug]: La commande de lancement windows est mal formée

0.9.2 2017-03-07

  • [Bug]: Le mot de passe du cient Waarp R66 utilisé par Waarp Manager était chiffré deux fois dans les fichiers authent.xml générés.
  • [Bug]: Ajout de locale manquantes

0.9.1 2017-02-20

  • [Bug]: Correction de coquilles dans l’interface web
  • [Bug]: Les infobulles d’aide sont plus larges pour être plus lisibles
  • [Bug]: Correction d’une erreur d’échappement des antislash en base de données
  • [Bug]: Correction de l’acran des rapports qui n’était plus fonctionnel
  • [Bug]: Le mot de passe du client Waarp R66 utilisé par Waarp Manager n’est plus forcé par Waarp Manager. celui défini dans le partenaire est utilisé
  • [Bug]: Durant le déploiement de la configuration, l’envoi aux serveurs Waarp R66 s’arrête à la première erreur renontrée
  • [Bug]: Les erreurs de déploiement de la configuration sont plus visibles
  • [Bug]: Le déploiement de la configuration ne s’exécute plus si le script de lancement de Waarp R66 client n’est pas trouvé
  • [Bug]: Le bouton pour démarrer le déploiement de la configuration est désactivé quand un déploiement est en cours

0.9.0 2016-12-08

  • [Feature]: Les clefs d’activations ne tiennent plus compte des hostnames
  • [Feature]: Le chargement de la configuration par les serveurs R66 ne passe plus par un script
  • [Feature]: Appel direct à Waarp manager sans passer par un script (« install-conf.sh »)
  • [Feature]: La table ref_instances est créée par défaut
  • [Feature]: Authentification LDAP
  • [Feature]: Compatibilité Windows
  • [Feature]: Internationalisation de l’interface
  • [Bug]: Correction d’un buffer overflow sur les délais des tâches