raz3r-code / sfdl-bash-loader

SFDL Bash Loader
8 stars 3 forks source link

Endlosschleife bei download abbruch durch server #32

Open JobbeDeluxe opened 6 years ago

JobbeDeluxe commented 6 years ago

Mir ist aufgefallen das wenn der server die Verbindung kappt, dann bleibt die Download anzeige stehen. Der Downloader muss wenn die Downloadgröße sich über zeitraum X nicht ändert den downoad überspringen?

raz3r-code commented 6 years ago

Einen Timeout einbauen wäre eine Idee. Am besten wäre es jedoch den Verbindungsabruch zu erkennen. Auf manchen BS sieht der Loader z.B. erst nach Minuten die größenänderung obwohl er lädt.

raz3r-code commented 6 years ago

Das könnte helfen. Habe ich noch nicht getestet da ich grade keinen Server habe der mittendrin ablehnt d036dc313453bf7724977659a53d73f3d8390368

JobbeDeluxe commented 6 years ago

Ich habe das mal getestet, as macht es leider nicht besser. Dadurch werde einfach nur nochmehr anfragen gesendet die der Server dann alle ablent. ab 50 verbindungsversuchen hat er dann aufgehört weiter uzu versuchen und hat einfach im Terminal wieder weiter geschrieben ohne nur einen byte gelden zu haben. Vorher hat er die verbindungen nur 5 mal versucht. Das ist noch nicht die lösung. Es muss wirklich nach den daten, oder der größe geprüft werden, denn die verbindungen werden nicht überwacht. Idee von mir wäre bei der prog.sh einen counter rein zu machen das jedesmal wenn er die datei durch ist und auch den geladenen status hat (auch im display eine nue Zeile geschrieben hat) einen zahl hoch geht. wenn sich der wert zu vorher nicht geändert hat. und dann ab 15 mal (ware dann 15 zeilen die er geschrieben hat) würde er die einfach abbrechen und überspringen, mit der nächsten weiter machen.

raz3r-code commented 6 years ago

Es gibt vom Server sowie vom Client also keine Meldung auf Abbruch ? Kannst ja mal ein wenig mit den parametern probieren. lftp muss ja irgendwann abbrechen. Kannst du mir ansonsten mal einen Server schicken bei dem das so ist ?

https://lftp.yar.ru/lftp-man.html

JobbeDeluxe commented 6 years ago

es gibt eine meldung von lftp, diese wird auch im terminal angezeigt und dazwischen gezogen. "550 The network connection was aborted by the local system." Vielleicht müssen wir das in eine download_error.txt machen und die dann im prog.sh im laufenden prozess prüfen. weil normalerweise gibt es keine meldung im terminal, daher würde das vielleicht gehen.

raz3r-code commented 6 years ago

Wenn es eine Meldung gibt ist es doch super, dann können wir diese auswerten. Würde es genau so machen. Die Log datei wird ja auch schon erstellt. Einfach auf den Abbruchfehler prüfen und den Download abbrechen.

$sfdl_logs/$name"_download.log

JobbeDeluxe commented 6 years ago

Leider ist dort nur der normale "log" drin, der fehler geht mit der pipe zum progh.sh durch. im Terminal kommt das durch: mirror: Zugriff nicht möglich: 550 The network connection was aborted by the local system. (file.r18) in der logfile steht nur: Sende Datei »file.r18« mehr nicht.

da muss die logumleitung wohl noch um den fehler erweitert werden. dann sollten wir das auch abfangen können mit einer prüfung in der prog.sh

raz3r-code commented 6 years ago

kannst du ja mit "2>lftp_error_log.txt" in eine datei ausgeben lassen.

JobbeDeluxe commented 6 years ago

Das versuche ich grad. Gefiltert wird nach Fehler. Ich teste grad. Aber es ist nicht immer einfach den Fehler zu simulieren

JobbeDeluxe commented 6 years ago

Also das geht irgendwie nicht. Ich weiss nicht wo die Meldung bleibt aber mit "2>&1>" oder mit einem eigenen "2>" bekomme ich keine Ausgabe mehr im Terminal und in der datei wird auch nix angezeigt.

Ich weiss nicht was da los ist. Ich habe auch kein abbruch oder ende erhalten.

aber was mir aufgefallen ist das in der normalen log "$zahl Fehler Festgestellt" auftaucht. bei richtig fertigem download kommt die meldung nicht. Das werde ich noch mal testen

JobbeDeluxe commented 6 years ago

https://github.com/raz3r-code/sfdl-bash-loader/commit/f5e5bd1b8048ee01f19175853d49a9b4c2d414f2 das ist meine idee EDIT: habe noch mal was geändert. test läuft grad. Code ist online

raz3r-code commented 6 years ago

eventuell sollten dort auch andere meldungen mit aufgenommen werden. ich denke das das englische lftp nicht "fehler" zurück gibt.

JobbeDeluxe commented 6 years ago

hmm, das kann natürlich sein. Aber es ist jetzt Aufgetreten, er bricht auch richtig ab, und macht dann mit den rar weiter, dabei treten natürlich fehler auf. Aber für ihn ist es dann "fertig" Das sollte aber eigentlich wie bei dem fehler in error verschoben werden. Da muss ich mal gucken ob und wie man das noch einbinden muss. vieleicht direkt in die prog.sh. aber er erkennt jetzt nach dem abbruch den fehler und stopt zumindest den download. erste Ergebnisse. EDIT: oder wir machen eine error datei und werden die direkt nach dem download in der bashloader.sh abfragen und dann kann man die schleife auf fehler setzen. Das wäre vielleicht noch besser

raz3r-code commented 6 years ago

Nicht auf mehreren Sprachen ausgelegt .. fix muss folgen