AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Overbyte FTPS und Datachannel
Thema durchsuchen
Ansicht
Themen-Optionen

Overbyte FTPS und Datachannel

Ein Thema von DelTurbo · begonnen am 10. Mär 2025 · letzter Beitrag vom 19. Mär 2025
Antwort Antwort
Seite 1 von 2  1 2      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.238 Beiträge
 
Delphi 2007 Architect
 
#1

Overbyte FTPS und Datachannel

  Alt 10. Mär 2025, 16:08
Hi,
ich versuche eine Datei mit Overbyte und FtpClient.PUT hochzuladen. Die Verbindung wird mit TLS aufgebaut. Ich kann auch Direcotrys erstellen. Aber nix hochladen. Es kommt immer 522 SSL/TLS required on the data channel.

Ich habe schon ChatGPT bemüht aber da kommt nur Mist. Und bei google finde ich nicht wie ich den Daten Kanal Protecten kann. Ich hoffe jemand von euch weiß das.

Vielen Dank im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#2

AW: Overbyte FTPS und Datachannel

  Alt 11. Mär 2025, 00:13
Hast du PBSZSize auf 0 gesetzt und PbszAsync ausgeführt sowie ProtLevel auf P gesetzt und ProtAsync ausgeführt?

Siehe Kommentar im Quelltext:
Zitat:
How to use FTPS (TLS/SSL/Implicit SSL) ? - V2.106
First you need to have ICS-SSL and recompile the component and your project
having symbol USE_SSL defined. Then specify the SSLType, either use
explicit command AUTH after Open command to request TLS/SSL protection of
the control channel on standard port from server, or you may use one of
the high level commands which will automatically invoke Auth TLS/SSl once
connected to the server. Implicit SSL is another method that establishes
always a secure control channel (no AUTH command is required). To protect
the data channel as well issue "PBSZ 0" and "PROT P" once the control
channel is protected, or "PROT C" to clear the data channel.
Currently there's only one spec available specifying explizit SSL (AUTH TLS)
it's RFC4217.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (11. Mär 2025 um 00:15 Uhr)
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.238 Beiträge
 
Delphi 2007 Architect
 
#3

AW: Overbyte FTPS und Datachannel

  Alt 11. Mär 2025, 10:07
Hi, erstmal danke für die Antwort. Wenn ich ehrlich bin habe ich diesen Text nicht verstanden.

Ich möchte mal meinen Quelltext zeigen. Vielleicht kann dann jemand sagen (oder du) wo das rein muss.

Erzeugen des FTPClient:
Delphi-Quellcode:
function CreateFTPClient(Host,Port,User,Pass:String):Boolean;
begin
    Result:=True;
    try
      FTPClient:=TSslFtpClient.Create(nil);
      FtpClient.HostName :=Host;
      FTPClient.Port:=Port;
      FtpClient.UserName:=User;
      FtpClient.PassWord:=Pass;
      FtpClient.SslType:=sslTypeAuthTls;
      FtpClient.SslContext:=TSslContext.Create(nil);
      FtpClient.SslContext.SslVerifyPeer := False; // Kein Zertifikatscheck
      FTPClient.Passive:=True;
      FTPClient.Connect;
    except
      Result:=False;
    end;
end;
Upload:
Delphi-Quellcode:
function FTPUpload(FName:String):Boolean;
begin
    Result:=True;
    FTPClient.Binary:=True;
    FTPClient.LocalFileName:=FName;
    FTPClient.HostFileName:=FTPFName;
    if ( not FTPClient.Put ) then begin
      WriteLn(FTPClient.LastResponse);
    end;
end;
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.238 Beiträge
 
Delphi 2007 Architect
 
#4

AW: Overbyte FTPS und Datachannel

  Alt 12. Mär 2025, 10:01
Ich habe das mal eingebaut, so wie ich das meine. Kommt eine Execption ProtAsync.

Hier mal der Quellcodeteil:

Delphi-Quellcode:
      FtpClient.Connect;
      FtpClient.PBSZSize:=0;
      FtpClient.PbszAsync;
      Writeln(FtpClient.LastResponse);
      Sleep(1000);
      FtpClient.ProtLevel:='P';
      FtpClient.ProtAsync; //<-- Hier kommt 'FTP component not ready, state Waiting Response'
      Writeln(FtpClient.LastResponse);
Was mach ich nun wieder falsch?!?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#5

AW: Overbyte FTPS und Datachannel

  Alt 12. Mär 2025, 10:34
Async heißt async. ICS ist eventbasiert. Du musst auf die Antwort reagieren (nicht warten) statt direkt den Wert in LastResponse anzuzeigen und 1 Sekunde fest zu warten, während du den Thread blockierst.

Stattdessen musst du auf OnRequestDone reagieren. Dort bekommst du den ausgeführten Befehl übergeben und kannst bei RqType = ftpPbsz den Prot Befehl ausführen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.238 Beiträge
 
Delphi 2007 Architect
 
#6

AW: Overbyte FTPS und Datachannel

  Alt 12. Mär 2025, 11:53
Hi,
erstmal danke für deine Hilfe. Ich habe das nun wie folgt eingebaut, aber im FTPLog steht immer noch: 2025-03-12 11:41:55,676 mod_tls/2.9.2[4886]: unable to open data connection: TLS negotiation failed

Ich habe das wie folgt eingebunden:
Delphi-Quellcode:
      FtpClient.HostName := 'pc238.lan'; // FTP-Server-Adresse
      FtpClient.UserName := 'ftpusr'; // FTP-Benutzername
      FtpClient.PassWord := '123456'; // FTP-Passwort
      FtpClient.SslType:= sslTypeAuthTls;
      FtpClient.SslContext:= TSslContext.Create(nil);
      FtpClient.SslContext.SslVerifyPeer := False; // Kein Zertifikatscheck
      FTPClient.Passive:=True;
      writeln('Verbinde mit FTP-Server...');
      FtpClient.Connect;
      writeln('Verbunden!');

      ReqDone:=False;
      FtpClient.PBSZSize:=0;
      FtpClient.PbszAsync;

      while ( not ReqDone ) do begin
        Application.ProcessMessages;
        Sleep(100);
      end;
Und im FtpClientRequestDone:
Delphi-Quellcode:
    if ( RqType=ftpPbszAsync ) then begin
      FtpClient.ProtLevel:='P';
      FtpClient.ProtAsync;
    end else
    if ( RqType=ftpProtAsync ) then begin
      ReqDone:=True;
    end;
Damit müsste ja sicher gestellt sein das die 2 sachen durch sind. Naja und beim FtpClient.Put kommt immer noch 425 (siehe FTPLog). Ist Falsch was ich gemacht habe? Oder fehlt noch etwas?

Edit: Ich gehe über mitm und kann sehen das die eigenglich Verbindung über TLS läuft. Aber die Daten werden im Klartext gesendet.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo (12. Mär 2025 um 12:18 Uhr)
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.238 Beiträge
 
Delphi 2007 Architect
 
#7

AW: Overbyte FTPS und Datachannel

  Alt 16. Mär 2025, 09:52
Hallo,
ich mache es sehr ungern. Aber ich möchte doch nochmal nach fragen ob wirklich keiner eine Idee hat, was ich Falsch mache? Ich bekomme den Datenkanal nicht dicht. Bei Indy weiß ich das man nur ein Flag setzen muss.

Aber weder bei ICS noch Synapse bekomme ich das hin. Es kommt beim versuch eine uploads immer:
Code:
425 Unable to build data connection: Die Operation ist nicht erlaubt
Es wird dann eine 0 Byte Datei auf dem FTP angelegt und das war es.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.238 Beiträge
 
Delphi 2007 Architect
 
#8

AW: Overbyte FTPS und Datachannel

  Alt 16. Mär 2025, 11:42
Hier noch ein Log mit ICSLogger gemacht.

Code:
11:27:21:556 ! HighLevelAsync 0
11:27:21:601 Control DNS Lookup Done - 192.168.0.238
11:27:21:615 Control Socket Connect, error=0 to 192.168.0.238:ftp
11:27:21:668 >|220 ProFTPD Server (Debian) [192.168.0.238]|

11:27:21:668 ! HighLevelAsync 0
11:27:21:668 Start command, Req=AuthAsync - AUTH TLS
11:27:21:670 >|234 AUTH TLS successful|

11:27:21:702 ! HighLevelAsync 0
11:27:21:702 Start command, Req=UserAsync - USER ftpusr
11:27:21:703 >|331 Password required for ftpusr|

11:27:21:704 ! HighLevelAsync 0
11:27:21:704 Start command, Req=PassAsync - PASS 123456
11:27:21:776 >|230 User ftpusr logged in|

11:27:21:776 ! HighLevelAsync 0
11:27:21:776 ! HighLevelAsync done
11:27:26:432 Start command, Req=PbszAsync - PBSZ 0
11:27:26:577 >|200 PBSZ 0 successful|

11:27:26:579 Start command, Req=ProtAsync - PROT P
11:27:26:701 >|200 Protection set to Private|

11:27:26:702 Start command, Req=TypeSetAsync - TYPE I
11:27:26:860 >|200 Type set to I|

11:27:27:022 ! HighLevelAsync 0
11:27:27:022 Start command, Req=PortAsync - PASV
11:27:27:023 >|227 Entering Passive Mode (192,168,0,238,179,33).|

11:27:27:023 ! HighLevelAsync 0
11:27:27:023 Start command, Req=Put/Append - libssl-1_1.zip
11:27:27:025 ! Data Session opened (Put)
11:27:27:027 >|150 Opening BINARY mode data connection for file.zip|

11:27:27:028 ! Send first block
11:27:27:028 DataSocketPutDataSent 65536
11:27:27:032 ! Data Session closed
11:27:27:032 ! Next3PutAsync
11:27:27:033 >|425 Unable to build data connection: Die Operation ist nicht erlaubt|

11:27:27:034 Start command, Req=QuitAsync - QUIT
11:27:27:036 >|221 Goodbye.|

11:27:27:038 Control Socket Closed, error=0
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.869 Beiträge
 
Delphi 12 Athens
 
#9

AW: Overbyte FTPS und Datachannel

  Alt 16. Mär 2025, 12:09
Kannst du das Log nicht mal mit Filezilla oder so vergleichen? Das gibt die Befehle ja auch aus.

Ich muss mal schauen, dass ich einen FTPS Server zum Testen aufsetze. Das sollte ja schnell gehen...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.238 Beiträge
 
Delphi 2007 Architect
 
#10

AW: Overbyte FTPS und Datachannel

  Alt 16. Mär 2025, 16:02
Hui,
danke erstmal. Ich hab ProFTP unter Debian genommen.
Filezilla muss ich erst besorgen. Werde ich dir morgen bescheid sagen.

Gruß und danke schonmal...

PS.: Emails scheinen immer noch nicht zu gehen, sonst hätte ich schneller geantwortet.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:05 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 by Thomas Breitkreuz