einzelne Programmteile auf Herz und Niere testen - alle check routinen - Risikoquellen entfernen! testen: wget bekommt signal offline mitten im Downnload sehr viele Dateien Signalverhalten von wgetter Mitten im Download neue Downloads hinzu kill überarbeiten root@superbyte:/etc/init.d# Insecure dependency in kill while running with -T switch at /usr/sbin/wgetter line 177,line 4. wenn fertig, mit libfam gucken, ob downloads.conf wieder einträge bekommt? derzeit nur mit SIGUSR2 Configurationsdatei ausbauen! - anderen Dateinamen zum abspeichern! - alternative URLs - steuerung von Anzahl von gleichzeitiger Downloads - Konstanteon - Alle Pfade u.ä. aus Programm entfernen! (z.b. wget) mehrere Downloaddateien und Konfigurationsdateien erlauben (für jeden Benutzer eine) Die Benutzerspezifischen Downloads (~/.downloads) werden dann zu den bedingungen der Benutzer (~/.downloads.conf) downgeloaden (also Verzeichnis wohin sie wollen uvm.) GUI bauen (ähnlich mldonkey) - Webfrontend - Steuerkonsolenprogramm - grafisches Frontend Bindings Automatischer Download bei Konqueror (Einbindung wie kget) Optionale Module Optionale Module wenn gefordert einklinken, sonst auch ohne arbeiten. Auch ohne wgetter downloaden. Größenüberprüfung durchführen. Packet - Englisch überall verwenden - Übersetzen (po + mo files) - debianize für deb - spec für rpm - man page schreiben - Lizenzdateien schreiben - Makefiles erstellen - Beispielkonfigurationsdatei hinzugeben Size überprüfung: # Rückgabe: # >0 Größe in Bytes # 0 Größe konnte nicht bestimmt werden # -1 invalide URL # -2 Status konnte nicht abgefragt werden sub check_size ($) { my $url = shift; my $size; # Überprüfe Größe if ($url =~ /^http:/) { $size = &HTTP::Size::get_size( $url ); if( defined $size ) { print "$url size was $size"; } elsif( $HTTP::Size::ERROR == $HTTP::Size::INVALID_URL ) { print "$url is not a valid absolute URL"; return -1; } elsif( $HTTP::Size::ERROR == $HTTP::Size::COULD_NOT_FETCH ) { print "Could not fetch $url\nHTTP status is $HTTP::Size::HTTP_STATUS"; return -2; } elsif( $HTTP::Size::ERROR == $HTTP::Size::BAD_CONTENT_LENGTH ) { print "Could not determine content length of $url"; return 0; } } elsif ($url =~ /^ftp:/) { #TODO Bestimmung von Größe bei ftp my $ftp = Net::FTP->new("some.host.name", Debug => 0) or die "Cannot connect to some.host.name: $@"; $ftp->login("anonymous",'-anonymous@') or die "Cannot login ", $ftp->message; $ftp->cwd("/pub") or die "Cannot change working directory ", $ftp->message; $ftp->get("that.file") or die "get failed ", $ftp->message; $ftp->quit; } }