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

Web & réseau Delphi Discussion :

[D7] Connexion sur ftps


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : dilettant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 220
    Par défaut [D7] Connexion sur ftps
    Bonjour,

    J'ai un FTPS qui fonctionne correctement en locale. J'arrive bien à m'y connecter avec WinSCP.
    Il s'agit d'un protocole FTP avec i, chiffrement "SSL/TLS implicite".

    Je voudrais maintenant m'y connecter avec Delphi 7 (Indy 10).

    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
    (*
      Composants
          IdFTP1: TIdFTP;
          IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
    *)
    procedure TForm1.ConfigFtp;
    // appelé depuis le FormCreate
    begin
      IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv23;
      IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmClient;
      IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode := [sslvrfPeer];
      IdSSLIOHandlerSocketOpenSSL1.PassThrough := False;
     
      IdFTP1.AutoLogin := False;
      IdFTP1.Passive := True;
      IdFTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
      IdFTP1.UseTLS := utUseExplicitTLS;
      IdFTP1.DataPortProtection := ftpdpsPrivate;
     
      IdFTP1.Host := FHost;  // 192.168.1.xxx
      IdFTP1.Port := FPort;  // 990
      IdFTP1.Username := FUserName;
      IdFTP1.Password := FPassword;
      IdFTP1.ConnectTimeout := 5;
     
    //  IdSSLIOHandlerSocketOpenSSL1.Destination := IdFTP1.Host;
    //  IdSSLIOHandlerSocketOpenSSL1.Host := IdFTP1.Host;
    //  IdSSLIOHandlerSocketOpenSSL1.Port := IdFTP1.Port;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Label1.Caption := 'Connexion...';
     
      try
        try
          IdFTP1.Connect;
          Label1.Caption := 'ok';
     
          // traitement à venir
        except
          on e: Exception do
            Label1.Caption := Format('Error : %s', [e.Message]);
        end;
      finally
        IdFTP1.Disconnect;
      end;
    end;
    J'obtiens le message "Error : Connect time out"

    Savez-vous ce qui n'est pas correcte dans mon code ?

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Le composant TIDFTP gère le FTPS (qui n'est pas du FTP mais du SSH) ?

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    FTPS est le protocole FTP avec une partie de connexion chiffrée avec le protocole SSL/TLS. Le début de la connexion FTP se fait en clair, le temps d'établir le chiffrement.
    C'est l'équivalent du HTTPS coté web.

    A ne pas confondre avec SFTP, qui, lui, est le protocole FTP classique mais à l'intérieur d'une connexion chiffrée avec le protocole SSH. L’établissement de la connexion chiffrée se fait d'abords, avant d’établir la connexion FTP à l'intérieur de cette connexion chiffrée.

    Perso, j'ai jamais mis en place de FTPS avec D7, le cas que j'avais fiat, il y a quelques années c'était du SFTP, en pilotant justement winSCP via sa ligne de commande.

  4. #4
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    A ne pas confondre avec SFTP

    oups, oui, effectivement, me suis laisser piéger par ma dyslexie. merci pour la correction

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    oneDev> j'avais zappé un truc dans ton code.

    Dans un tout autre langage, avec un tout autre composant, j'ai eu un soucis aussi avec TLS sur du FTPS. Si j'utilisais le FTPS sur le port 21, alors il fallait mettre l'option TLSExplicit à Vrai, mais par contre, si la connexion se faisait sur le port 990, il ne fallait surtout mettre cette option à Vrai, ça s'appelle, à priori du TLS implicite.
    Moi, le message d'erreur était un refus systématique du login/mot de passe alors qu'ils étaient bons.

    C'est peut-être une piste pour ton problème car apparement tu semble utiliser le port 990, mais visiblement tu positionne l'option UseTLS à explicite en même temps.

  6. #6
    Membre éprouvé Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : dilettant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 220
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    oneDev> j'avais zappé un truc dans ton code.

    Dans un tout autre langage, avec un tout autre composant, j'ai eu un soucis aussi avec TLS sur du FTPS. Si j'utilisais le FTPS sur le port 21, alors il fallait mettre l'option TLSExplicit à Vrai, mais par contre, si la connexion se faisait sur le port 990, il ne fallait surtout mettre cette option à Vrai, ça s'appelle, à priori du TLS implicite.
    Moi, le message d'erreur était un refus systématique du login/mot de passe alors qu'ils étaient bons.

    C'est peut-être une piste pour ton problème car apparement tu semble utiliser le port 990, mais visiblement tu positionne l'option UseTLS à explicite en même temps.
    Effectivement, j'avais sélectionné la mauvaise option.
    J'ai modifié mon code, voici ce qui fonctionne.

    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
    procedure TForm1.ConfigFtp;
    begin
      IdFTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
      IdFTP1.UseTLS := utUseImplicitTLS;
     
      IdFTP1.Host := FHost;  // 192.168.1.xx
      IdFTP1.Port := FPort;  // 990
      IdFTP1.Username := FUserName;
      IdFTP1.Password := FPassword;
      IdFTP1.ConnectTimeout := 10;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Label1.Caption := 'Connexion...';
     
      if (IdFTP1.Connected) then
        IdFTP1.Disconnect;
     
      try
        try
          IdFTP1.Connect;
          Label1.Caption := 'ok';
        except
          on e: Exception do
            Label1.Caption := Format('Error : %s', [e.Message]);
        end;
      finally
        IdFTP1.Disconnect;
      end;
    end;

    Merci de vos réponses.

    Questions subsidiaire, savez-vous si il est possible de faire du sftp avec delphi7 sans composants payants ?
    J'ai commencé à regardé, mais je n'ai rien trouvé pour le moment.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/10/2016, 16h58
  2. [AC-2010] Connexion sur un serveur ftp
    Par Gandus dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/04/2013, 08h29
  3. Connexion sur AS400
    Par fdloisel dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/01/2004, 15h18
  4. Paramétrer le nombre de connexion sur mon serveur Mysql
    Par Zerga dans le forum Installation
    Réponses: 2
    Dernier message: 12/12/2003, 19h21
  5. [Débutant] Connexion sur une machine distante protégée
    Par arthix dans le forum Développement
    Réponses: 3
    Dernier message: 28/08/2003, 09h46

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