Tags : connexion, ftps
13 mars 2025
publié par 

A partir de la version 2025 "Update 2", les projets en mode SaaS profitent d'une procédure de trace pour les échanges FTPS.

Cette procédure est extrêmement pratique :

  • pour connaître les données liées au chiffrement de la connexion (négociation TLS, handshake, cipher, certificat...),
  • pour rechercher l'origine d'un échec de connexion sur un serveur particulier.

La propriété ProcédureTrace était déjà disponible pour les échanges HTTPS (type HttpRequête et fonction HTTPEnvoie).

 

Voici un exemple de code de connexion, avec la procédure de trace et le nouveau type ftpConnexion :

 

FTPParamètre(ftpParamètreMode, 1)

MonFTP est une ftpConnexion
MonFTP.Serveur = "ftps://monserveur"
MonFTP.Utilisateur = "utilisateur"
MonFTP.MotDePasse = "motdepasse"
MonFTP.DuréeNonRéponse = 5 s
MonFTP.NuméroPort = 990
MonFTP.ProcédureTrace = ProcTrace


SI MonFTP.Connecté() ALORS
MonFTP.Déconnecte()
Trace("OK")
SINON
Erreur(ErreurInfo(errComplet))
FIN


PROCEDURE INTERNE ProcTrace(nTypeInfo est entier, bufByData est un Buffer)

SELON nTypeInfo

CAS httpTraceEntêteEnvoyé:
Trace("Entête envoyé : ", UTF8VersChaîne(bufByData))
CAS httpTraceDonnéeEnvoyée:
Trace("Données envoyées : ", bufByData)
CAS httpTraceEntêteRecu:
Trace("Entête reçu : ", UTF8VersChaîne(bufByData))
CAS httpTraceDonnéeRecue:
Trace("Données reçues : ", bufByData)

CAS httpTraceInfo :
Trace("Info : ", bufByData)
FIN
FIN

 

 

On aura par exemple dans la trace :

 

========== Mise à jour 25/3/2025 ==========

Bon à savoir : exactement comme avec le type HttpRequete la procédure callback indiquée à la propriété ..ProcédureTrace est également appelée pour les données.

 

On peut l'expérimenter facilement avec l'exemple ci-dessus en ajoutant un transfert de fichier :

 

 

SI MonFTP.Connecte() ALORS
fSauveTexte(fRepDonnées()/"test.txt", "Contenu fichier à transférer")
SI MonFTP.Envoie(fRepDonnées()/"test.txt", "test.txt") ALORS
Trace("OK fichier envoyé avec succès")
SINON
Trace("KO "+ErreurInfo(errMessage))
FIN

MonFTP.Déconnecte()

FIN

 

 

La trace montre la totalité de l'échange y compris les données :

 

 

On pourrait donc si besoin avoir une action sur le contenu des données, durant le transfert !

 

Par exemple si on doit récupérer des données voluminueuses qui vont transiter avec de nombreuses trames, il sera possible de faire un traitement sur ces données de façon continue tout au long de la récupération, et pas seulement après l'achèvement complet du transfert.

 

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée