[Basic] Communication FTP incompatible avec TLS 1.2

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Basic] Communication FTP incompatible avec TLS 1.2

Messagepar Finov » 07 Août 2018 21:40

Bonjour,
Depuis que mon hébergeur a activé le protocole de sécurité TLS 1.2, il est impossible d'échanger des fichiers via un lien ftp généré par une macro commande.

Du coup, les commandes de type storetourl (lorsque l'URL est une adresse ftp, soit une destination sur un serveur distant) ne fonctionne plus.

Notez que je me suis assuré d'avoir la dernière version JAVA en 32 bits, laquelle, semble-t-il, devait être compatible avec le protocole TLS 1.2. Au cas où....

J'utilise la dernière version d'Ooo sur différents OS. J'ai aussi fait un essai avec Libre Office. Le problème est constant.

Quelqu'un a-t-il expérimenté le même problème? A-t-on trouvé une solution ou une piste de solution?

Merci.
Dernière édition par micmac le 15 Août 2018 18:43, édité 2 fois.
Raison: Titre : [Basic] remplace [basic]
Apache Open Office Version 4.1.5, Linux Ubuntu, Windows 7 et 10
Finov
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 06 Fév 2011 22:00

Re: [Issue] [url] Communication FTP incompatible avec TLS 1.

Messagepar Jurassic Pork » 08 Août 2018 05:51

hello,
pour que l'on puisse vérifier ce que tu nous dis, il faudrait que tu nous donnes l'adresse d'un serveur ftp uniquement accessible en TLS 1.2.
En tout cas si cela s'avère exact, il a moyen de s'en sortir avec une macro en python grâce à l'excellent module ftplib.
Voici un exemple de macro en python dans writer qui va chercher un fichier sur un serveur ftp en TLS 1.2, et qui l'écrit dans un répertoire. Pendant le transfert le status est écrit dans la barre de status de writer. Le serveur FTP utilisé est un serveur de test qui accepte tous les types de ftp (ex : TLS 1.2).
Code : Tout sélectionner   AgrandirRéduire
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uno
import ssl
from ftplib import FTP_TLS

def recupFtpTLS():
   odoc = XSCRIPTCONTEXT.getDocument()
   ostatusbar = odoc.CurrentController.StatusIndicator
   ostatusbar.reset
   myftps = FTP_TLS()
   myftps.set_debuglevel(1)
   res = myftps.connect('test.rebex.net', 21, 5);
   ostatusbar.start("ftp connect : " + res,0)
   # ssl version - https://docs.python.org/3/library/ssl.html
   #myftps.ssl_version = ssl.PROTOCOL_SSLv2
   #myftps.ssl_version = ssl.PROTOCOL_SSLv3
   #myftps.ssl_version = ssl.PROTOCOL_TLSv1
   #myftps.ssl_version = ssl.PROTOCOL_TLSv1_1
   myftps.ssl_version = ssl.PROTOCOL_TLSv1_2
   myftps.login('demo', 'password')
   #myftps.retrlines('LIST')
   filename = 'readme.txt'
   file = open('M:/temp/' + filename, 'wb')
   res = myftps.retrbinary('RETR %s' % filename, file.write)
   ostatusbar.start("ftp recup fichier : " + res,0)
   myftps.close()
   file.close()
   
g_exportedScripts = recupFtpTLS,


La macro fonctionne dans writer avec LibreOffice 5.4.4.2 sous Windows 10

Ami calmant, J.P
LibreOffice 6.1.x sous windows 10 et LibreOffice 6.0.x sous linux - OpenOffice 4.1.5 sous windows 10
Avatar de l’utilisateur
Jurassic Pork
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 192
Inscrit le : 09 Août 2017 23:15

Re: [Issue] [url] Communication FTP incompatible avec TLS 1.

Messagepar micmac » 08 Août 2018 07:20

Bonjour,

Merci de ne pas inventer votre propre balisage.

  1. La balise [Issue] s'utilise dans un cas très particulier : https://forum.openoffice.org/fr/forum/v ... f=1&t=3299
  2. Relisez le lien indiqué dans le bandeau rouge en haut de la page de la présente section et précisez l'application utilisée.

A corriger lors de votre prochain passage. A défaut, votre sujet sera verrouillé.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 5272
Inscrit le : 28 Août 2010 09:45

Re: [basic] Communication FTP incompatible avec TLS 1.2

Messagepar Finov » 15 Août 2018 18:36

Pour MicMac
Merci de me rappeler les règles de balisage. Je vais faire la correction.

Pour Jurassic Park (l'ami calmant)
J'avoue ne pas être familier avec la programmation en Python mais vous venez sans doute de me motiver à y jeter un coup d’œil pour voir comment il pourrait être possible de l'intégrer au code actuel. De mon côté, j'ai également trouvé une alternative opérationnelle en appelant le programme externe FreeFileSync et un fichier paramétrage qui s'exécute automatique. Mais ça ne fait pas la même chose puisque la synchronisation ne permet pas de cibler certains fichiers.... Il me faut donc revoir la logique de programmation puisqu'elle est nettement différente.

Avec votre permission, je vais simplifier mon code pour en faire un exemple simple et vous le faire parvenir en privé

Merci pour votre aide
Apache Open Office Version 4.1.5, Linux Ubuntu, Windows 7 et 10
Finov
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 06 Fév 2011 22:00

Re: [Basic] Communication FTP incompatible avec TLS 1.2

Messagepar micmac » 15 Août 2018 18:51

Bonjour,
Finov a écrit:un exemple simple et vous le faire parvenir en privé
Les problèmes et la recherche de solutions s'exposent sur le forum et non par messages privés.
  • D'abord parce que d'autres personnes peuvent être intéressées par les réponses apportées, que ce soit dans l'immédiat ou plus tard en faisant une recherche dans ce forum ;
  • Ensuite parce que vous restreignez le taux de réponses à une seule personne, alors que d'autres pourraient peut-être vous proposer de meilleures solutions.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 5272
Inscrit le : 28 Août 2010 09:45

Re: [Basic] Communication FTP incompatible avec TLS 1.2

Messagepar Finov » 15 Août 2018 19:32

MicMac: Je partage en tout point votre point de vue et il était déjà prévu de partager la solution... si on la trouve. J'ai cependant une certaine réticence à partager les codes sur le forum puisqu'il s'agit d'un hébergement sur serveur partagé. Je vais voir ce que je peux faire car, effectivement, on se prive de la force de la communauté. Et j'en suis parfaitement conscient. Merci encore pour cette remarque pertinente et très constructive
Apache Open Office Version 4.1.5, Linux Ubuntu, Windows 7 et 10
Finov
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 06 Fév 2011 22:00

Re: [Basic] Communication FTP incompatible avec TLS 1.2

Messagepar Finov » 15 Août 2018 21:44

Voici un code à exécuter dans un fichier dont l'extension est ods (un fichier calc).

Code : Tout sélectionner   AgrandirRéduire
Sub ArchiverSurServeurDistant
   Dim sFileName As String
   Dim sPath As String
   Dim sSaveToURL as string
   Dim oDoc as Object

   oDoc = thisComponent
   sSaveToURL = ConvertToURL("ftp://DossierTest%40pharmaciemagog.com:BeMyGuest@ftp.pharmaciemagog.com/Test.ods")
   oDoc.storeToUrl(sSaveToURL, Array)
   end Sub


Cette macro fonctionnait très bien avant la mise en vigueur exclusive du protocole de sécurité TLS 1.2.

Notez que la fonction Dir (interrogation d'un dossier contenant des fichiers) ne fonctionne plus non plus avec une adresse FTP. Il semble que ces fonctions sont toutes lancées de façon non encryptée, ce que refuse maintenant le serveur.
Apache Open Office Version 4.1.5, Linux Ubuntu, Windows 7 et 10
Finov
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 06 Fév 2011 22:00

Re: [Basic] Communication FTP incompatible avec TLS 1.2

Messagepar Jurassic Pork » 17 Août 2018 07:24

hello,
voici un exemple de fonction qui peut faire l'équivalent en python :
Code : Tout sélectionner   AgrandirRéduire
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uno
import os
import ssl
import io
from ftplib import FTP_TLS

def envoiFtpTLS(host,user,pwd):
    odoc = XSCRIPTCONTEXT.getDocument()
    ostatusbar = odoc.CurrentController.StatusIndicator
    ostatusbar.reset
    myftps = FTP_TLS()
    myftps.set_debuglevel(1)
    res = myftps.connect(host, 21, 5);
    ostatusbar.start("ftp connection  : " + res,0)
    myftps.ssl_version = ssl.PROTOCOL_TLSv1_2
    myftps.login(user,pwd)
    filename = uno.fileUrlToSystemPath(odoc.getURL())
    file = open(filename, 'rb')
    res = myftps.storbinary('STOR %s' %  os.path.basename(filename),file  )
    ostatusbar.start("ftp envoi fichier : " + res,0)
    myftps.close()
    file.close()
    return res

la fonction :
1 - se connecte en TLS 1.2 au site FTP avec un login , mot de passe
2 - on ouvre le document courant en lecture seule
3 - on envoie le fichier au site FTP avec comme nom le nom du fichier sans le chemin
4 - on récupère le status

on peut inclure la fonction dans un script en python ou la mettre dans un module python que l'on pourra appeler à partir d'un script en basic par exemple avec l'extension easydev :
Code : Tout sélectionner   AgrandirRéduire
Sub EnvoiFTPS()
util = createUnoService("org.universolibre.EasyDev")
macro = createUnoStruct("org.universolibre.EasyDev.Macro")
macro.Library = "MonModulePython"
macro.Name = "envoiFtpTLS"
macro.Thread = False
'envoi du document courant vers le site FTP
res = util.callMacro(macro, Array("ftp.monsite.com", _
                        "DossierTest@ftp.monsite.com", _
                        "Maux2Paße"))
'on affiche le status de fin de transfert
util.msgbox(res)
End Sub


Ami calmant, J.P
LibreOffice 6.1.x sous windows 10 et LibreOffice 6.0.x sous linux - OpenOffice 4.1.5 sous windows 10
Avatar de l’utilisateur
Jurassic Pork
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 192
Inscrit le : 09 Août 2017 23:15


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)