Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Reading TimeOut ABER NUR bei SSL und Internet zugriff (https://www.delphipraxis.net/180243-reading-timeout-aber-nur-bei-ssl-und-internet-zugriff.html)

gee21 4. Mai 2014 12:35

Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Hallo Leute

Bin zwar an meinem FTP Clienten schon um einiges Vorwärtsgekommen Aber leider stehe ich schon wieder an einem Problem an und zwar:

Wenn ich mit IdFTP und IdSSLIOHandlerSocketOpenSSL1 zu meinem FTP Server verbinde, so funktioniert das auch wunderbar. (Egal ob ich Lokal oder übers Internet verbinde).

Dateien herunterladen kann ich aber nur LOKAL. Übers Internet kommt der Fehler: Reading Time Out

Lustig ist auch noch: Wenn ich SSL deaktiviere funktioniert das herunterladen der Daten, Lokal wie auch Übers Internet...?


Dachte zuerst es sein ein Port Problem aber dann wäre es ja nicht Logisch, das ich per SSL übers Internet erfolgreich verbinden kann (Sehe es auf dem LOG meines Servers)

Weiss jemand an was das liegen kann? (Ich arbeite seit heute mit XE6 und nutze alle Standartkomponenten, SSL Dateien sind: 1.0.1.7)


So verbinde ich zum Server:
Delphi-Quellcode:
if idftp1.Connected =false then begin
//Idftp verbindet über IO Handler SSL V3 utUseExplicitTLS
idftp1.Host:=memo1.Lines[0];
idftp1.Username:=memo1.Lines[1] ;
idftp1.Password:=form2.Edit2.Text;
idftp1.port:=strtoint(memo1.Lines[4]);
form1.IdSSLIOHandlerSocketOpenSSL1.Port:= strtoint(memo1.Lines[4]);
idftp1.Connect;
if form1.IdSSLIOHandlerSocketOpenSSL1.Connected then showmessage('SSL Connected');
end;
und so möchte ich eine Datei herunterladen:
Delphi-Quellcode:
idftp1.Get('geetransferupdateinfo.txt',ExtractFilePath(Application.Exename)+'\bin\UpdateInfo.txt',true );



Hat mir jemand einen Tipp? :x

mjustin 4. Mai 2014 12:48

AW: Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Zitat:

Zitat von gee21 (Beitrag 1257869)
Dateien herunterladen kann ich aber nur LOKAL. Übers Internet kommt der Fehler: Reading Time Out
Wenn ich SSL deaktiviere funktioniert das herunterladen der Daten, Lokal wie auch Übers Internet...?

Das sieht für mich nach einem Firewallproblem auf dem FTP Server oder in der lokalen Firewall aus.

gee21 4. Mai 2014 12:52

AW: Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Dachte ich zuerst auch.

aber dann dürfte es ja ohne ssl auch nicht funktionieren. (tut es aber)

mkinzler 4. Mai 2014 12:55

AW: Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Delphi-Quellcode:
if form1.IdSSLIOHandlerSocketOpenSSL1.Connected then showmessage('SSL Connected');
überprüft nur ob SSL verbunden ist und sagt nichts über die FTP-Verbindung aus.
BTW.
Eine Boolean-Eigenschaft ist schon Boolean. Man kann deshalb direkt mit
Delphi-Quellcode:
if not idftp1.Connected then begin
abfragen. Auf true sollte man nie prüfen, da true nicht eindeutig definiert ist. False ist 0 und True nicht 0. In delphi ist das ein in C das binäre Gegenteil also -1.

gee21 4. Mai 2014 13:00

AW: Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Zitat:

Zitat von mkinzler (Beitrag 1257878)
Delphi-Quellcode:
if form1.IdSSLIOHandlerSocketOpenSSL1.Connected then showmessage('SSL Connected');
überprüft nur ob SSL verbunden ist und sagt nichts über die FTP-Verbindung aus.
BTW.
Eine Boolean-Eigenschaft ist schon Boolean. Man kann deshalb direkt mit
Delphi-Quellcode:
if not idftp1.Connected then begin
abfragen. Auf true sollte man nie prüfen, da true nicht eindeutig definiert ist. False ist 0 und True nicht 0. In delphi ist das ein in C das binäre Gegenteil also -1.


OK Danke. Habe es nun geändert.
Delphi-Quellcode:
if not idftp1.Connected then begin


Diese Zeile habe ich gelöscht (war nur zum testen da)
Delphi-Quellcode:
if form1.IdSSLIOHandlerSocketOpenSSL1.Connected then showmessage('SSL Connected');


Problem ist "natürlich" aber noch immer da.

mjustin 4. Mai 2014 13:08

AW: Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Zitat:

Zitat von gee21 (Beitrag 1257869)
Wenn ich mit IdFTP und IdSSLIOHandlerSocketOpenSSL1 zu meinem FTP Server verbinde...

Ist der Server denn mit einem Standard-FTP Client wie FileZilla über SSL erreichbar (im Internet)? Da es mit SFTP und FTPS zwei verschiendene SSL/TLS Varianten für FTP gibt muss natürlich die passende FileZilla-Einstellung zum Test verwendet werden. Indy unterstützt FTPS (FTP über SSL), aber nicht SFTP (FTP über SSH).

gee21 4. Mai 2014 13:16

AW: Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Also ich benutze

FTPS (Über ssl Explizit) und NICHT SFTP

Hmmm. Filezilla bringt genau den selben Fehler... OHNE SSL gehts, mit SSL sagt Filezilla:

Fehler: Zeitüberschreitung der Verbindung
Fehler: Verzeichnisinhalt konnte nicht empfangen werden

Aber bei meinem FTP Server ist SSL aktiviert. Und wenn ich mit Delphi zu meinem Server per SSL verbinde, funktionierts ja auch. Erst beim Download einer Datei erhalte ich den Fehler.

mjustin 4. Mai 2014 13:40

AW: Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Zitat:

Zitat von gee21 (Beitrag 1257884)

Aber bei meinem FTP Server ist SSL aktiviert. Und wenn ich mit Delphi zu meinem Server per SSL verbinde, funktionierts ja auch. Erst beim Download einer Datei erhalte ich den Fehler.

Ok, aber wie sieht es in der Firewall aus?

Zitat:

In order to maintain compatibility with existing non-TLS/SSL-aware FTP clients, implicit FTPS was expected to listen on the IANA Well Known Port 990/TCP for the FTPS control channel, and to 989/TCP for the FTPS data channel. This allowed administrators to retain legacy-compatible services on the original 21/TCP FTP control channel.
(Quelle: http://en.wikipedia.org/wiki/FTPS)

Sind Port 990 und 989 freigeschaltet?


Zitat:

Fehler: Verzeichnisinhalt konnte nicht empfangen werden
könnte an einem Problem mit Active / Passive Mode liegen.

Für die Übertragung des Verzeichnisinhalts wird der DATA Channel verwendet. Das Delphi Programm stellt die Verbindung nur auf dem Control-Channel her, testet also nur die eine "Hälfte" der Verbindung. Es kann sein, dass nur der Control-Channel Port freigegeben ist.

gee21 6. Mai 2014 16:10

AW: Reading TimeOut ABER NUR bei SSL und Internet zugriff
 
Zitat:

Zitat von mjustin (Beitrag 1257888)
Zitat:

Fehler: Verzeichnisinhalt konnte nicht empfangen werden
könnte an einem Problem mit Active / Passive Mode liegen.

Für die Übertragung des Verzeichnisinhalts wird der DATA Channel verwendet. Das Delphi Programm stellt die Verbindung nur auf dem Control-Channel her, testet also nur die eine "Hälfte" der Verbindung. Es kann sein, dass nur der Control-Channel Port freigegeben ist.



Besten Dank für eure Hilfe. :thumb::thumb::thumb:

MJustin hatte recht. Es lag daran das nur Port 21 freigegben war und nicht der Passive Port bereich. Anscheinend spielt dies erst eine relevante Rolle wenn man per SSL zugreifen will. Ohne SSL reicht Port "21" aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz