[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 !
Finov
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 06 févr. 2011 21:00

[Basic] Communication FTP incompatible avec TLS 1.2

Message par Finov »

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 modification par micmac le 15 août 2018 17:43, modifié 2 fois.
Raison : Titre : [Basic] remplace [basic]
Apache Open Office Version 4.1.5, Linux Ubuntu, Windows 7 et 10
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

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

Message par Jurassic Pork »

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

# -*- 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 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9256
Inscription : 28 août 2010 08:45

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

Message par micmac »

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é.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Finov
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 06 févr. 2011 21:00

Re: [basic] Communication FTP incompatible avec TLS 1.2

Message par Finov »

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
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9256
Inscription : 28 août 2010 08:45

Re: [Basic] Communication FTP incompatible avec TLS 1.2

Message par micmac »

Bonjour,
[b][color=#404080]Finov[/color][/b] 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.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Finov
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 06 févr. 2011 21:00

Re: [Basic] Communication FTP incompatible avec TLS 1.2

Message par Finov »

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
Messages : 24
Inscription : 06 févr. 2011 21:00

Re: [Basic] Communication FTP incompatible avec TLS 1.2

Message par Finov »

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

Code : Tout sélectionner

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
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: [Basic] Communication FTP incompatible avec TLS 1.2

Message par Jurassic Pork »

hello,
voici un exemple de fonction qui peut faire l'équivalent en python :

Code : Tout sélectionner

# -*- 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

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 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04