Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [gelöst] FXP bzw. SiteToSite Transfer (https://www.delphipraxis.net/145576-%5Bgeloest%5D-fxp-bzw-sitetosite-transfer.html)

DelTurbo 4. Jan 2010 17:30


[gelöst] FXP bzw. SiteToSite Transfer
 
Hi,

ich habe ein prob. Und zwar mit einem SiteToSite tranfser. Ich lese einfach die Source und fange an zu flashen. Dabei ist es mir egal ob das file schon vorhanden ist oder nicht. Sollte es vorhanden sein braucht garnix zu passieren.

Als erstes habe ich Indy10 probiert. Läuft im grunde sehr gut. Aber ist das file vorhanden kommt rückmeldung 553. Wenn das passiert ist kann ich nix mehr machen. Nichtmal mehr die directory einlesen. Da kommen dann leider nur noch exceptions. Leider steht da nicht drin warum und wieso.

Dann habe ich mal Clever Internet Suite probiert. Die änderungen sind ja überschaubar. Dort habe ich das selbe problem.

Nun zu meiner eigentlichen frage. Muss ich irgendwas Reseten oder sonstwas machen damit es wieder richtig auf die füsse kommt? Oder muss ich wirklich das Object IdFTP bzw. clFtp löschen und neu anlegen???

Da Indy Opensource ist habe ich mal bissl durchgetraced. Soweit ich erkenne konnte liegt es an der rückmeldung 553. Die kennt Indy nicht und wohl auch Clever Internet Suite scheint die nicht zu kennen.

Hat jemand eine Idee???

Danke im voraus

EDIT: Nun habe ich mal die excetion wie folgt ausgeben.

Delphi-Quellcode:
    try
        Server.GetList(l,'',True);
    except
      on E: Exception do WriteLn(E.Message);
    end;
Da kommt "200 PORT command successful.".... :gruebel:

DelTurbo 5. Jan 2010 11:37

Re: FXP bzw. SiteToSite Transfer
 
Sooo,

da ich offene Threads hasse, oder wenn einer einfach drunterschreibt "ich habs gefunden, danke" antworte ich mal.

Also in dem speziellen fall hilft nur ein abbruchkommando an den server. Das würde dann wie folgt aussehen

Delphi-Quellcode:
     try
     clftp2.FxpGetFile(FName,FName,clftp1);
     except
       on E: Exception do begin
        WriteLn(E.Message); <-- muss nicht sein, ist nur für debug
        clftp2.SendCommand('ABOR'); <-- danach klappt es wieder.
     end;
     end;
ein clftp2.Abort geht nicht.

Gruss

EDIT: Irgendwie geht bei mir immer die formatierung vom quelltext flöten.

DelTurbo 5. Jan 2010 12:29

Re: [gelöst] FXP bzw. SiteToSite Transfer
 
Nachtrag:

Ich habe nun ca. 7 Server probiert. Das scheint was zeitkritisch zu sein. Ein sleep(1000) nach dem Command und es lief danach auf allen severn.

Assertor 5. Jan 2010 12:39

Re: [gelöst] FXP bzw. SiteToSite Transfer
 
Hallo DelTurbo,

Nachtrag zu den Exceptions, auch wenn schon gelöst.

Indy wirft Exception für RFC Result Codes, also nicht nur für Fehler. Beispiel ist z.B. Result Code 213 bei FTP, was als Antwort auf eine erfolgreiche Size Abfrage kommt. Die 200er Result Codes sind eigentlich alles Statusmeldungen, also nur Hinweise.

Du kannst die Exception entsprechend behandeln. Beispiel für Size:

Delphi-Quellcode:
try
  Result := IdFTP1.Size(AFileName);
except
  On E: EIdReplyRFCError do
  begin
    // rfc return code 213 is the result code for size,
    // it is not really an RFCError but Indy handles it this way...
    if E.ErrorCode <> 213 then
      raise;
  end;
  On E: Exception do
    raise;
end;
Das kannst Du entsprechend für 200 und Deinen Aufruf anpassen. Wichtig ist die absteigende Reihenfolge beim Exceptionhandling, also Basisklassen immer als letztes.

Der Result Code 553 bedeutet "Requested action not taken. File name not allowed.". FlashFXP weist also Deinen Dateinamen ab. Eigentlich sollte der Server noch mehr Feedback in Textform geben. Dieser Text wird von Indy durchgeleitet (im Beispiel wäre das E.Message im EIdReplyRFCError Block).

Bei FlashFXP 1.2 gab es bei Fehler 553 früher eine Meldung die so aussah:
Zitat:

553-The name you specified is not allowed.
553-Names must contain only ASCII letters (a-z,A-Z), digits (0-9), underscore, dot and dash.
553-Names must not start with a dot (.) or dash (-).
553-In addition, only certain file extentions are allowed for security reasons.
Also: Entweder ungültiger Dateiname oder Zugriff beschränkt (chmod?).

Zur Clever Internet Suite kann ich leider nichts sagen, das ist mir für bloße Vergleichstests viel zu teuer.

Im FlashFXP Support Forum gibt es aber einige Tickets zu FlashFXP 3.5.1 und dem 553 Result, Beispiel:
http://www.flashfxp.com/forum/bugtra...acker_bugid=74

Die RFC Result Codes für FTP findest Du hier (einfach nach z.B. 200 oder 553 suchen):
http://www.faqs.org/rfcs/rfc959.html

Gruß Assertor

DelTurbo 5. Jan 2010 13:56

Re: [gelöst] FXP bzw. SiteToSite Transfer
 
Danke dir Assertor, für den tip mit den excetions,

aber das prob ist, das nach dem "fehlschlag" beim FXPen kein clFtp1.GetList bzw. IdFTP1.List mehr geht. Da "reden" client und server aneinander vorbei. Ich habe auch nix anderes gefunden um es danach wieder auf die füsse zu bekommen. Ausser halt verbindung trennen und neu connecten. Mit dem Abort commando kommt der server wieder zu sich und beide "reden" wieder miteinander.

Man müsste sich mal dazwischen klemmen und schauen was da genau passiert. Oder mit z.b. WireShark den datenstrom mitloggen. Wenn ich mal bissl zeit habe oder ich auf weitere probs stosse, dann werde ich das mal machen.

Zu den Clever-sachen. Die gibt es umsonst ^^. Allerdings ohne quellcode. Aber dafür ist ja im debugger das CPU-Fenster da :zwinker:

Assertor 5. Jan 2010 15:59

Re: [gelöst] FXP bzw. SiteToSite Transfer
 
Hi DelTurbo,

Zitat:

Zitat von DelTurbo
Danke dir Assertor, für den tip mit den excetions,

Klar, gerne!

Zitat:

Zitat von DelTurbo
aber das prob ist, das nach dem "fehlschlag" beim FXPen kein clFtp1.GetList bzw. IdFTP1.List mehr geht. Da "reden" client und server aneinander vorbei. Ich habe auch nix anderes gefunden um es danach wieder auf die füsse zu bekommen. Ausser halt verbindung trennen und neu connecten. Mit dem Abort commando kommt der server wieder zu sich und beide "reden" wieder miteinander.

Man müsste sich mal dazwischen klemmen und schauen was da genau passiert. Oder mit z.b. WireShark den datenstrom mitloggen. Wenn ich mal bissl zeit habe oder ich auf weitere probs stosse, dann werde ich das mal machen.

Ja, wird das beste sein um festzustellen, ob es am Server liegt (sehr wahrscheinlich).

Zitat:

Zitat von DelTurbo
Zu den Clever-sachen. Die gibt es umsonst ^^. Allerdings ohne quellcode. Aber dafür ist ja im debugger das CPU-Fenster da :zwinker:

Achso, ich hatte dort nur irgendwo Trial gelesen... CPU-View ist klar, aber mir reicht schon eine Internet-Kompo zum Debuggen. Ich schau nur gelegentlich bei ICS, Secure Blackbox & Co rein.

Ach übrigens: Welche Version von FlashFXP ist im Einsatz? In der History steht z.B. zur 3.0.2.1045:
Zitat:

In some cases transfer errors during a site to site transfer weren't triggering a transfer abort and FlashFXP kept waiting for the transfer to complete.
Gruß Assertor

DelTurbo 5. Jan 2010 16:18

Re: [gelöst] FXP bzw. SiteToSite Transfer
 
Also FlashFXP ist die Version 3.6 wohl aktuell. http://www.flashfxp.com/

Diese Clever-Trail ist in der form eingeschränkt das die nur unter der entwicklungs oberfläsche läuft. Ansonsten ist alles vorhanden. Bis auf die Sourcen natürlich....

DelTurbo 23. Jan 2010 09:48

Re: [gelöst] FXP bzw. SiteToSite Transfer
 
Hi,

leider muss ich hier nochmal "aufmachen". Ich habe nun alles auf indy umgestellt. Nun meine frage:

Was muss ich machen wenn der transfer nicht klappt, z.b. weil das file vorhanden ist bzw. ich keine rechte rum schreiben dort habe. Ich bekomme nun nach 2 stunden suchen und machen, Indy nicht dazu das er weiter macht. Dieses ABOR schicken klappt bei Indy leider nicht.

Ich hoffe hier kann mir jemand weiterhelfen.

Danke im voraus

Assertor 27. Jan 2010 23:49

Re: [gelöst] FXP bzw. SiteToSite Transfer
 
Hi,

Zitat:

Zitat von DelTurbo
leider muss ich hier nochmal "aufmachen". Ich habe nun alles auf indy umgestellt. Nun meine frage:

Was muss ich machen wenn der transfer nicht klappt, z.b. weil das file vorhanden ist bzw. ich keine rechte rum schreiben dort habe. Ich bekomme nun nach 2 stunden suchen und machen, Indy nicht dazu das er weiter macht. Dieses ABOR schicken klappt bei Indy leider nicht.

Ich hoffe hier kann mir jemand weiterhelfen.

Erstmal das Verlinken, damit das FXP / Site-To-Site in seiner Gesamtheit erkennbar wird:
http://www.delphipraxis.net/internal...124571#1124571

Was für eine Fehlermeldung bekommst Du denn und wie behandelst Du diese konkret?

Gruß Assertor

DelTurbo 28. Jan 2010 10:42

Re: [gelöst] FXP bzw. SiteToSite Transfer
 
Ja das ist blöd gelaufen hier. Ich konnte in der überschrift das [gelöst] nicht rausnehmen. Deswegen habe ich was neues aufgemacht.

Sorry....


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 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