AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Delphi 10.4 - Indy und SFTP
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 10.4 - Indy und SFTP

Ein Thema von H.Bothur · begonnen am 11. Jul 2021 · letzter Beitrag vom 2. Mai 2023
Antwort Antwort
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
266 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Delphi 10.4 - Indy und SFTP

  Alt 22. Jan 2023, 15:09
Moin Klaus,

.. vielleicht magst Du ja mal (testhalber) diese Einträge in der tgputtylib.pas
kommentieren ( so das sie nicht mehr wirksam sind):
Nachdem ich die Einträge auskommentiert habe kann ich das Programm starten und bekomme erst beim Connect einen Fehler:

"Im Projekt SFTPTest.exe ist eine Exception der Klasse TGPuttySFTPException mit der Meldung 'tgsftp_connect: Unknown Error.
Connecting with ssh.strato.de, port 22, as user h.bothur********
Looking up host "ssh.strato.de" for SSH connection
connecting to <ip-Adresse> port 22
we claim version: SSH-2.0-tgputtylib_Release_0.76
Connecting to 81.169.145.126
Remote version: SSH-2.0-OpenSSH_8.2
Using SSH protocol version 2
No GSSAPI security context available
Doing ECDH key exchange with curve25519 and hash SH-256 (SHA-NI accelerated)
Server aslo has ecdsa-sha2-nistp256/rsa-ahs2-512/rsa-sha2-256/ssh-rsa host keys, but we don't know any of them
Host key fingerprint is: ssh-ed25519 255 SHA256: <fingerprint>
User aborted at host key verification
psftp_connect result is 1
tgsftp_connect final result is

Die fette Zeile habe ich markiert - da wird der Grund sein, allerdings weiß ich nicht was man da macht. Ich werde jetz einmal die - funktionierede Deo debuggen und kucken ob ich als Laie was sehe.

Zitat:
Welche Delphi Version benutzt denn Du?
Delphi 10.4 Community Edition

Gruss
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Delphi 10.4 - Indy und SFTP

  Alt 22. Jan 2023, 15:27
Hallo,

im einfachsten Fall kannst Du das so lösen:

Delphi-Quellcode:
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    function onVerifyHostKey(const host:PAnsiChar;const port:Integer;
                               const fingerprint:PAnsiChar;
                               const verificationstatus:Integer;
                               var storehostkey:Boolean): Boolean;
  public
    { Public declarations }
  end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 GPSFTP :TTGPuttySFTP;
begin
  GPSFTP := TTGPuttySFTP.Create(true);
  gpsftp.HostName := '192.168.178.43';
  gpsftp.UserName := 'pi';
  gpsftp.Password := '****';
  gpsftp.Port := 22;
  gpsftp.OnVerifyHostKey := onVerifyHostkey;
  gpsftp.Connect;
end;
Delphi-Quellcode:
function TForm1.onVerifyHostKey(const host: PAnsiChar; const port: Integer;
  const fingerprint: PAnsiChar; const verificationstatus: Integer;
  var storehostkey: Boolean): Boolean;
begin
  storeHostKey := true;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
266 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Delphi 10.4 - Indy und SFTP

  Alt 22. Jan 2023, 20:15
Danke - teste ich morgen aus!

Gruß
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
266 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 10:43
Moin,

hat lange gedauert - aber jetzt habe ich es ausprobiert - und ich bekomme ein Connect hin. Allerdings stoße ich gleich auf das nächster Problem das ich nicht verstehe (was allerdings auch an meinen beschränkten Fähigkeiten liegt):

In der Demo gibt es ein StringGrid. Sobald es zum Connect kommt wird dieses Grid mit Dateinamen auf dem Server gefüllt. An der entsprechende Stelle in Souce steht aber nur:

Delphi-Quellcode:
begin
  sgRemoteFiles.RowCount:=1;
  sgRemoteFiles.ColCount:=3;
  sgRemoteFiles.ColWidths[0]:=480;
  sgRemoteFiles.ColWidths[1]:=300;
  sgRemoteFiles.ColWidths[2]:=150;
  sgRemoteFiles.Cells[0,0]:='Name';
  sgRemoteFiles.Cells[1,0]:='Timestamp';
  sgRemoteFiles.Cells[2,0]:='Size';

  TGPuttySFTPClient1.ListDir('');

end;
Die ersten Zeilen sind ja nur "Beiwerk", passieren tut es in "TGPuttySFTPClient1.ListDir('');".

Aber wie kommt der Inhalt des Servers in das StringGrid ? Ich finde da nix wo das passiert

Kann mir da jemand auf die Sprüge helfen ?

Danke
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 11:01
function TVCLSFTPClientComponentDemoForm.TGPuttySFTPClient1SFTPListing(Sender: TObject; const Items: TSFTPItems): Boolean; Vermutlich ist das ein Ereignis, das irgendwo ausgelöst wird, so genau habe ich nicht in den Code geschaut.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
266 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 11:36
Das hatte ich gesehen - und in der Items sind auch die entsprechenden Dateinamen. Die ganze Procedure sieht so aus:

Delphi-Quellcode:
function TVCLSFTPClientComponentDemoForm.TGPuttySFTPClient1SFTPListing(Sender: TObject; const Items: TSFTPItems): Boolean;
var StartRow,i:Integer;
begin
  StartRow:=sgRemoteFiles.RowCount;
  sgRemoteFiles.RowCount:=StartRow+Length(Items);
  for i:=0 to Length(Items)-1 do begin
    sgRemoteFiles.Cells[0,StartRow+i]:=Items[i].filename;
    sgRemoteFiles.Cells[1,StartRow+i]:=DateTimeToStr(TTimeZone.Local.ToLocalTime(UnixToDateTime(Items[i].attrs.mtime)));
    if Items[i].attrs.permissions and $F000 = $4000 then
       sgRemoteFiles.Cells[2,StartRow+i]:='<dir>'
    else
       sgRemoteFiles.Cells[2,StartRow+i]:=IntToStr(Items[i].attrs.size);
    end;
  Result:=true;
end;
Da wird das StringGrid gefüllt - nur woher hat die Produre die Items ?

Gruss
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
151 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Delphi 10.4 - Indy und SFTP

  Alt 20. Apr 2023, 12:17
Die Items bekommt die Funktion direkt vom TTGPuttySFTPClient Objekt übergeben:
Code:
OnSFTPListing = TGPuttySFTPClient1SFTPListing
siehe DelphiVCLComponentDemo/VCLSFTPClientComponentMainForm.dfm#L285
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz