IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

FTPS : qu'utilisez-vous ?


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut FTPS : qu'utilisez-vous ?
    Hello,

    Je cherche à faire du FTPS en .NET. Il ne me semble pas qu'il y a des classes toutes faites pour cela (pour le FTP oui mais pas FTPS ou alors j'ai mal regardé).

    Quelqu'un a-t-il déjà testé cet outil créer par Kellerman Software ?

    Est-ce fiable ?

    Sinon, que recommanderiez-vous pour faire des transferts en FTPS en .NET ?
    Kropernic

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Tu peux regarder ici : An FTP secure client library for C#.

    Si tu veux créer ta propre librairie, il faut utiliser le client classique FtpWebRequest, et paramétrer les options pour qu'il utilise SSL. En parallèle, il faut forcer la validation des certificats X509 (il y a plein d'exemples sur le net pour faire ça).
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Merci je vais jeter un œil !
    Kropernic

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    La librairie sur codeproject que tu donnes n'a pas l'air super au point quand on regarde les commentaires ^^.

    Je vais probablement partir sur la création de ma propre "librairie" (ça couvrira juste mes besoins, j'appelle difficilement ça une libraire ) mais j'attends un retour de la maison mère pour savoir s'ils n'ont pas un truc tout fait sous le coude.

    Par contre, ils sont pas pressés pour répondre '-_-.

    En attendant, si d'autres ont des retours positifs sur des libraires permettant le FTPS, ils sont les bienvenus !
    Kropernic

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Le problème avec FTPS c'est que ça requiert certaines configurations que peu de développeurs maîtrisent puisque ça relève plus de l'IT pure (administration de serveur), d'où à mon avis les commentaires peu glorieux

    Sinon, pour l'option basique avec FtpWebRequest + gestion des X509 est dispo ici : Using FtpWebRequest to do FTP over SSL. Mais comme tu peux le voir encore une fois les commentaires ne sont pas top, pourtant si tu sais configurer un serveur comme il faut, ça fonctionne
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello,

    Je reviens sur le sujet car j'ai enfin du temps pour tenter de programmer cet outil pour me connecter en ftps sur un server distant (et surtout car les données sont enfin à disposition dessus^^).

    Bref, j'ai écrit un peu de code et tout se passe pas trop mal jusqu'ici mais pas moyen de connecter au server.

    Je reçois le message "Unable to connect to the remote server" sans plus de détail...

    C'est un peu léger pour trouver la cause du problème... Ca pourrait venir de plein de chose...

    Voici le code jusqu'ici (c'est vraiment pas grand chose) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Imports System.Net
    Imports System.Net.Security
    Imports System.Security.Cryptography.X509Certificates
     
    Module Module1
     
        Sub Main()
            Console.WriteLine("tentative de connexion")
            Dim ftps As FtpWebRequest = Nothing
            ConnectFTPS(ftps)
            Console.WriteLine("fin")
            Console.ReadLine()
        End Sub
     
        'Private Function CertificateValidationCallBack(sender As Object, certificate As System.Security.Cryptography.X509Certificates.X509Certificate, chain As System.Security.Cryptography.X509Certificates.X509Chain, sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean
        '    ' If the certificate is a valid, signed certificate, return true.
        '    If sslPolicyErrors = System.Net.Security.SslPolicyErrors.None Then
        '        Return True
        '    End If
        '    ' If there are errors in the certificate chain, look at each error to determine the cause.
        '    If (sslPolicyErrors And System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) <> 0 Then
        '        If chain IsNot Nothing AndAlso chain.ChainStatus IsNot Nothing Then
        '            For Each status As System.Security.Cryptography.X509Certificates.X509ChainStatus In chain.ChainStatus
        '                If (certificate.Subject = certificate.Issuer) AndAlso (status.Status = System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot) Then
        '                    ' Self-signed certificates with an untrusted root are valid.
        '                    Continue For
        '                Else
        '                    If status.Status <> System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError Then
        '                        ' If there are any other errors in the certificate chain, the certificate is invalid,
        '                        ' so the method returns false.
        '                        Return False
        '                    End If
        '                End If
        '            Next
        '        End If
        '        ' When processing reaches this line, the only errors in the certificate chain are
        '        ' untrusted root errors for self-signed certificates. These certificates are valid
        '        ' for default Exchange Server installations, so return true.
        '        Return True
        '    Else
        '        ' In all other cases, return false.
        '        Return False
        '    End If
        'End Function
     
        Private Sub ConnectFTPS(ByRef ftps As FtpWebRequest)
            Try
                ServicePointManager.ServerCertificateValidationCallback = Function(obj As Object, certificate As X509Certificate, chain As X509Chain, errors As SslPolicyErrors) True
                ftps = DirectCast(FtpWebRequest.Create("ftp://ftps.monserveur.be"), FtpWebRequest)
                ftps.Method = WebRequestMethods.Ftp.DownloadFile
                ftps.Credentials = New NetworkCredential("XXXX", "XXXX")
                ftps.Proxy = GlobalProxySelection.GetEmptyWebProxy
                ftps.EnableSsl = True
                Dim response As WebResponse = ftps.GetResponse
                Console.WriteLine(response.ContentLength.ToString)
            Catch ex As WebException
                Console.WriteLine(ex.Message)
            End Try
        End Sub
     
        Private Sub ListFTPS()
     
        End Sub
    End Module
    J'en suis donc à tenter d'établir la connexion. J'avançais à taton jusque là mais maintenant, avec ce message on ne peut plus général, je ne sais pas vers quel côté regardé...

    J'avais déjà le même message avant d'ajouter la première ligne du bloc Try..Catch alors je ne sais même pas si elle sert à quelque chose ou pas.

    Je cherche donc un moyen d'établir un diagnostic sur ce genre de connexion. C'est tout nouveau pour moi.

    Merci d'avance.
    Kropernic

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    As-tu vérifié que ton antivirus/firewall laisse bien passer les communications ? Ports 21, 989 et 990 en général, sauf configuration custom...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Filezilla arrive à se connecter. Ca suffit comme vérification ? XD (j'ai pas la main sur l'antivirus )
    Kropernic

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Totalement par hasard, je suis tombé sur cette librairie.

    Si j'ai bien compris, c'est encore en version alpha mais au moins, c'est gratuit et ça me connecte.

    Prochaine étape, obtenir la liste des fichiers car pour le moment, ça me file une erreur...

    Pour ceux qui veulent continuer à suivre le problème, c'est ici que ça se passe.

    Je laisse la discussion ouverte vu que ce n'est pas résolu.
    Kropernic

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Voilà, ça fonctionne.

    Pour les prochains qui rencontreraient des soucis pour des connexions FTPS, j'ai utilisé la libraie System.Net.FtpClient présent ici.

    Et voici mon code pour, dans mon cas, récupérer les fichiers CSV d'un folder précis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Imports System.Net
    Imports System.Security.Cryptography.X509Certificates
    Imports System.Net.Security
     
    Imports System.Net.FtpClient
     
    Module Module1
     
        Sub Main()
            Console.WriteLine("début")
     
            Dim ftps As FtpClient = Nothing
            GetCsvFiles(ftps)
     
            Console.WriteLine("fin")
            Console.ReadLine()
        End Sub
     
        Private Sub GetCsvFiles(ByRef ftps As FtpClient)
            Try
                ftps = New FtpClient
                ftps.Host = "ftps.LeBonServeur.be"
                ftps.Credentials = New Net.NetworkCredential("XXXX", "YYYY")
                ftps.Port = 990
                ftps.DataConnectionType = FtpDataConnectionType.PASVEX
                ServicePointManager.ServerCertificateValidationCallback = Function(obj As Object, certificate As X509Certificate, chain As X509Chain, errors As SslPolicyErrors) True
     
                ftps.EncryptionMode = FtpEncryptionMode.Implicit
     
                For Each item In ftps.GetListing("/LeBonFolder")
                    If item.Type = FtpFileSystemObjectType.File Then
                        If item.Name.EndsWith(".CSV") Then
                            Console.WriteLine("file : " & item.FullName)
                            Dim reader As New IO.StreamReader(ftps.OpenRead(item.FullName), Text.Encoding.Default)
                            Dim writer As New IO.StreamWriter("c:\test\" & item.Name, False, Text.Encoding.Default)
                            Dim line As String = reader.ReadLine
                            While Not reader.EndOfStream
                                writer.WriteLine(line)
                                line = reader.ReadLine()
                            End While
                            writer.WriteLine(line)
                            writer.Close()
                            writer.Dispose()
                            reader.Close()
                            reader.Dispose()
                        End If
                    End If
                Next
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            End Try
        End Sub
     
    End Module
    J'espère que ça en aidera quelques uns... Perso, j'ai bien galéré !
    Kropernic

  11. #11
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Hello,

    Bien en retard sur le sujet mais chez nous, nous utilisons winscp.

    Bonne journée.

  12. #12
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    C'est une librairie ça ??? Je connais ce nom mais c'est un soft qu'on utilise de temps en temps.
    Kropernic

  13. #13
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Yep :
    The WinSCP .NET assembly winscpnet.dll is a .NET wrapper around WinSCP’s scripting interface that allows your code to connect to a remote machine and manipulate remote files over SFTP, SCP, and FTP sessions from .NET languages, such as C#, VB.NET, and others, or from environments supporting .NET, such as PowerShell and SQL Server Integration Services (SSIS).

  14. #14
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Si la description que tu cites est exhaustive, cette libraire ne permet pas de faire du FTPS. Attention à ne pas confondre avec SFTP car ce n'est pas la même chose ;-)
    Kropernic

  15. #15
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    C'est vrais que moi j'utilise le SFTP
    Mais d'après cette page, il sait le faire.
    WinSCP supports TLS and SSL 3.02).
    ...
    FTPS (also known as FTP Secure and FTP-SSL) is an extension to the commonly used File Transfer Protocol (FTP) that adds support for the Transport Layer Security (TLS) and the Secure Sockets Layer (SSL) cryptographic protocols.1)

  16. #16
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    T'aurais pas pu me donner le nom de cette librairie y a 1 semaine non ?
    Kropernic

  17. #17
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Excuse moi d'avoir pris une semaine de congé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/05/2015, 23h56
  2. [Templates] Quel système utilisez-vous ? Pourquoi ?
    Par narmataru dans le forum Bibliothèques et frameworks
    Réponses: 270
    Dernier message: 26/03/2011, 00h15
  3. Réponses: 10
    Dernier message: 15/01/2003, 01h06
  4. Utilisez vous la base de registres ?
    Par gRRosminet dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/06/2002, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo