DAUNY

 

DAUNY – Socket-Befehlsliste v2003-02-23-1200

Allgemeines

1. Anmelden [LOGIN]

2. Abmelden [LOGOUT]

3. HTTP Datei runterladen [GET]

4. Befehl FTP Datei runterladen [FTPGET]

5. Informationen zu einem Download abrufen [STATUS]

6. Kurze Informationen zu einem Download abrufen [CSTATUS]

7. Informationen zu einer Gruppe von Downloads abrufen [SUMSTATUS]

8. Verbundene Benutzer abrufen [USERS]

9. Passwort des aktuellen Benutzers ändern [CHANGEPASSW ]

10. Programm Status abrufen [VAR]

11. Programm Status abrufen [SYSINFO]

12. Programm Versionsinformation abrufen [VER]

13. Text-Datei am Server speichern [STORE]

14. Nachricht an Benutzer senden [MESSAGE]

15. Automatische Nachricht wenn sich Benutzer ändern [CUSER]

16. Inhalt einer HTML-Seite runterladen [LGET]

17. Verzeichnis komprimieren [COMPRESS]

18. Verschlüsselungs- Key für die Verbindung abfragen [KEY]

19. Fortsetzen eines beendeten Downloads [REGET]

20. Auflisten von Unterverzeichnissen in einem Verzeichnis [DIR]

21. Abbrechen eines Downloads [STOP]

22. Auflisten von Dateien in einem Verzeichnis [FILE]

23. Löschen eines Verzeichnis [RMDIR]

24. Löschen einer Datei [RMFILE]

25. Löschen einer Datei über die Id [RMFILEID]

26. Statistikdaten abfragen [STAT]

DAUNY – HTTP-Proxy-Kommunikation Synatx v2002-01-19-1100

Request (DaunyBefehl):

Request-Antwort (Befehlsantwort):

 

 


DAUNY – Socket-Befehlsliste v2003-02-23-1200

 

Allgemeines

 

Das Dauny Kommunikationsprotokoll besteht aus einfachen Befehlen die über Socket-Kommunikation gesendet  und empfangen werden.

Wichtig ist das jeder Befehl, und natürlich auch jede Antwort ,mit einem NULL Zeichen („\0“ in C) abgeschlossen wird. Dieses Zeichen kennzeichnet das Ende eines Kommandos.

Der Client muss darauf achten, dass Kommandos auch in mehreren Stücken ankommen können. Erst wenn das abschließende NULL Zeichen empfangen wurde  ist der Befehl bzw. die Antwort komplett.

 

1. Anmelden [LOGIN]

 

Befehl:

 

LOGIN <Benutzer> <Unverschlüsseltes Passwort>

 

oder

 

LOGINE < Benutzer > <Verschlüsseltes Passwort >                                    Schlüssel siehe Befehl „KEY“

 

Antwort:

 

LOGIN OK

LOGIN ERROR <Fehler>

Bye <Fehlernummer>

 

 

2. Abmelden [LOGOUT]

 

Befehl:

 

LOGOUT

 

Antwort:

 

Bye <Fehlernummer)

 

 

3. HTTP Datei runterladen [GET]

 

Befehl:

 

GET <URL> <Versuche> <Priorität> <Verzeichnis> <max. Downloads am Server>

 

Tries: ‚Inf’ oder ‚0’ bedeutet unendlich

 

Übermittlung mit Benutzer und Passwort:

ftp://user:password@host/path

http://user:password@host/path

 

Antwort:

 

GET <Prozess Nummer (ID)> <Status>

GET ERROR <Fehler>

Bye <Fehlernummer>

 

 

4. Befehl FTP Datei runterladen [FTPGET]

 

Befehl:

 

FTPGET <URL> <Versuche> <Priorität> <Verzeichnis>  <Name> <Passwort>

 

Antwort:

 

OK <Prozess Nummer (ID)> <Statusnummer>

ERROR <Fehlernummer>

Bye <Fehlernummer> 

 

 

5. Informationen zu einem Download abrufen [STATUS]

 

Befehl:

 

STATUS <Prozess Nummer (ID)>

 

Antwort:

 

STATUS <Prozess Nummer (ID)> <Benutzer>  <URL> <Dateigröße> <Status> <Fehler> <erneute Versuche> <Forschritt [%]>

STATUS ERROR <Fehler>

Bye <Fehlernummer> 

 

 

6. Kurze Informationen zu einem Download abrufen [CSTATUS]

 

Befehl:

 

CSTATUS <Prozess Nummer (ID)>

 

Antwort:

 

CSTATUS <Dateigröße> <Status>

CSTATUS ERROR <Fehler>

Bye <Fehlernummer>

 

 

7. Informationen zu einer Gruppe von Downloads abrufen [SUMSTATUS]

 

Befehl:

 

SUMSTATUS <PART> <USER>

 

1 ... alle Dateien

2 ... alle beendeten Downloads

3 ... alle wartenden Dateien

4 ... alle aktuelle bearbeiteten Dateien

5 ... alle abgebrochenen Dateien

6 ... alle erfolgreichen Downloads

 

Wenn User gleich ALL (SUMSTATUS <PART> ALL) ist, werden alle Dateien unabhängig von Benutzer geschickt.

 

Antwort:

 

STATUS <Prozess Nummer (ID)> <Benutzer>  <URL> <Statusnummer> <Fehlernummer>¿ (für alle angeforderten Dateien)

 

 

8. Verbundene Benutzer abrufen [USERS]

 

Befehl:

 

USERS

 

Antwort:

 

USERS <Benutzer 1> <Benutze 2> <Benutzer 3>          (es werden so viele Benutzernamen zurückgeliefert wie verbunden sind)

Bye <Fehlernummer> 

 

 

9. Passwort des aktuellen Benutzers ändern [CHANGEPASSW ]

 

Befehl:

 

CHANGEPASSW <Unverschlüsseltes Passwort>

 

Antwort:

 

CHANGEPASSW ERROR <Fehler>

Bye <Fehlernummer> 

 

 

10. Programm Status abrufen [VAR]

 

Befehl:

 

VAR

 

Antwort:

 

VAR <aktuelle Downloads> <Dateien in Warteschlange> <Fertig bearbeitete Dateien> <Verbundene Benutzer>

Bye <Fehlernummer> 

 

 

11. Programm Status abrufen [SYSINFO]

 

Befehl:

 

SYSINFO

 

Antwort:

 

SYSINFO <Anzahl der Dateien> <Benutzter Festplattenspeicher des Benutzers>  <Betriebsystemkennung> <Freier Festplattenspeicher >

SYSINFO ERROR <Fehler>

Bye <Fehlernummer> 

 

 

Beispiel:

 

SYSINFO 2 23 "Linux 2.4.18 [i586]" 355

 

Speicherangaben in MegaByte.

 

 

12. Programm Versionsinformation abrufen [VER]

 

Befehl:

 

VER

 

Antwort:

 

VER <Programmname> <Versions-Nummer>.<Built-Nummer> (c) <Jahreszahl>

Bye <Fehlernummer> 

 

 

Beispiel:

 

VER dauny 1.07 (c) 2001

 

 

13. Text-Datei am Server speichern [STORE]

 

Befehl:

 

STORE <Verzeichnis> <Dateiname> <Daten>               Daten können bis zu 1000 Byte beinhalten

                                                                                               Datei wird im Append-Modus geöffnet.

 

Antwort:

 

STORE OK

STORE ERROR <Fehler>

Bye <Fehlernummer>

 

 

14. Nachricht an Benutzer senden [MESSAGE]

 

Befehl:

 

MESSAGE <Benutzer> <Nachricht>                               Name eines Benutzers oder „*“ für alle Benutzer

                                                                                               (Nachricht kann bis zu 1000 Byte lang sein)

 

Antwort:

 

MESSAGE OK

MESSAGE ERROR <Fehler>

Bye <Fehlernummer>

 

 

Nachricht beim Client:

 

MESSAGE <Benutzer> <Nachricht>                            Name des Benutzers von dem die Nachricht gesendet wurde

 

Nachrichten können auch von System gesendet werden

 

 

15. Automatische Nachricht wenn sich Benutzer ändern [CUSER]

 

Server sendet:

 

CUSERS <Benutzer 1> <Benutze 2> <Benutzer 3>        (es werden so viele Benutzernamen zurückgeliefert wie verbunden sind)

 

 

16. Inhalt einer HTML-Seite runterladen [LGET]

 

Befehl:

 

LGET <URL> <Datei-Typen> <Tiefe> <Versuche> <Priorität> <Verzeichnis> <max. Downloads am Server>

 

Tries: ‚Inf’ oder ‚0’ bedeutet unendlich

Tiefe: ‚0’ bedeutet unendlich auf gleichen Server

 

Standard:

Datei-Typen   ... „*“

Tiefe                ... 1

 

DATEI-TYPEN mit Beistrich getrennt angeben z.B.  LGET http://server.com/images.html *.jpg,.*.jpeg,*.gif

TIEFE gibt an wie weit die HTML Dateien rekursiv verarbeitet werden

 

Antwort:

 

LGET OK <Prozess Nummer (ID)> <Status>

LGET ERROR <Fehler>

Bye <Fehlernummer>

 

Beispiel:

 

LGET http://images.com *.jpg,*gif 1 5 5 Hompepage-Image-Rip

 

 

17. Verzeichnis komprimieren [COMPRESS]

 

Befehl:

 

COMPRESS <Verzeichnis> <Komprimierungsprogramm> <Größe>                         Größenangabe in KiloByte

 

Komprimierungsprogramme:

ZIP         Zip (Standard)

TGZ        Tar Gzip

RAR       Rar          (unterstützt Größenangabe bzw. Multiarchive)

 

Antwort:

 

COMPRESS OK

COMPRESS ERROR <Fehler>

Bye <Fehlernummer>

 

Beispiel:

 

COMPRESS Debian2.2r3 RAR 5000

 

 

18. Verschlüsselungs- Key für die Verbindung abfragen [KEY]

 

Befehl:

 

KEY

 

Antwort:

 

KEY <40 Hexzeichen [0123456789ABCDEF]>

 

 

Dies ist der einzige Befehl der gesendet werden kann ohne das sich der Client am Server angemeldet hat.

 

 

19. Fortsetzen eines beendeten Downloads [REGET]

 

Befehl:

 

REGET <Prozess Nummer (ID)>

 

Antwort:

 

REGET OK <New Prozess Nummer (ID)> <Status>

REGET ERROR <Fehler>

Bye <Fehlernummer>

 

Beim diesem Befehl wird eine neue Prozess Nummer (ID) vergeben.

 

 

20. Auflisten von Unterverzeichnissen in einem Verzeichnis [DIR]

 

Befehl:

 

DIR <Verzeichnis>

 

Antwort:

 

DIR OK „<Verzeichnisname1>“ „<Verzeichnisname2>“     (es werden so viele Verzeichnisse zurückgeliefert wie vorhanden sind)

DIR ERROR <Fehler>

Bye <Fehlernummer>

 

 

21. Abbrechen eines Downloads [STOP]

 

Befehl:

 

STOP <Prozess Nummer (ID)>

 

Antwort:

 

STOP OK

STOP ERROR <Fehler>

Bye <Fehlernummer>

 

Ist der Download aktiv so wird er abgebrochen. Befindet sich der Download lediglich in der Warteschlange so wird der Download entfernt.

 


22. Auflisten von Dateien in einem Verzeichnis [FILE]

 

Befehl:

 

DIR <Verzeichnis>

 

Antwort:

 

FILE OK „<Datei1>“ „<Datei2>“                                            (es werden so viele Dateien zurückgeliefert wie vorhanden sind)

FILE ERROR <Fehler>

Bye <Fehlernummer>

 

 

23. Löschen eines Verzeichnis [RMDIR]

 

Befehl:

 

RMDIR <Verzeichnis>

 

Antwort:

 

RMDIR OK                                                                               

RMDIR ERROR <Fehler>

Bye <Fehlernummer>

 

 

24. Löschen einer Datei [RMFILE]

 

Befehl:

 

RMFILE <Datei>

 

Antwort:

 

RMFILE OK                                                                              

RMFILE ERROR <Fehler>

Bye <Fehlernummer>

 

 

25. Löschen einer Datei über die Id [RMFILEID]

 

Befehl:

 

RMFILEID <Prozess Nummer (ID)>

 

Antwort:

 

RMFILEID OK                                                                         

RMFILEID ERROR <Fehler>

Bye <Fehlernummer>

 

 

 

26. Statistikdaten abfragen [STAT]

 

Befehl:

 

STAT <Prozess Nummer (ID)>

 

Antwort:

 

STAT <Online Zeit> <Online Zeit (Version)> <Download Volumen [MB]> <Download Volumen (Version) [MB]> <Programm Laufzeit> <Programm Laufzeit (Version)>

Bye <Fehlernummer>

 

Statistiken beziehen sich auf den aktuell laufenden Dauny Prozess. (Version) Statistiken beziehen sich auf die Daten der Dauny Version, d.H. solange die Dauny Version gleich bleibt werden

,auch nach einem Neustart des Programm, die Daten aufgezählt.

"Online Zeit" beinhaltet die Zeit die Online, mit Downloads bzw. warten auf Downloads (automatische Wiederholungen), verbracht wurde.

"Download Volumen" beinhaltet die Größe in MB der heruntergeladenen Dateien.

"Programm Laufzeit" zeigt die Laufzeit des Programms.

 

Beispiel:

 

STAT 00:00:30 01:20:12 5.20 119.58 01:20:22 40:02:35

 

Programm war 30 Sekunden online.

Aktuelle Dauny Version war 1 Stunde 20 Minuten und 12 Sekunden online.

Programm hat 5.2 MB heruntergeladen.

Aktuelle Dauny Version hat 119.58 MB heruntergeladen.

Programm läuft seit 1 Stunde 20 Minuten uns 22 Sekunden.

Aktuelle Dauny Version läuft seit 40 Stunde 2 Minuten und 35 Sekunden.
Anmerkung

 

Fehlernummer, Statusnummer und Prioritäten können aus dem Header „errors.h“ entnommen werden.

Sollte versucht werden einen Befehl oder eine Zeichenkette ohne „Login“ an den Server zu senden so wird „Bye <Fehlernummer>“ zurückgeschickt und der Socket geschlossen. Als Ausnahme gilt nur der befehl „Key“ der für die Übertragung des verschlüsselten Passwortes benötigt wird.

Grundsätzlich gilt  wenn der Server „Bye“ zurückschickt wird danach der Socket geschlossen.

Wenn kein Fehler vorliegt wird die Fehlernummer 0 zurückgesendet.

 

Bei allen Verzeichnis-Angaben wird eine automatische Verzeichnistrennzeichen (Windows „\“ und Linux „/“) Konvertierung vorgenommen. Das bedeutet auf einem Linux-Server kann kein Backslash („\“) in dem Verzeichnisnamen vorkommen.

 

Komprimierungsprogramme:

Für den Befehl „compress“ werden Standard Komprimierungsprogramme verwendet:

Für ZIP - Kompression mit Programm „zip“ (Version 2.3).

Für TGZ - Kompression mit Programm „tar“ (Version 1.3.17) und „gzip“ (Version 1.2.4).

Für RAR - Kompression mit Programm „rar“ (Version 2.80 Shareware).

 

 

 

Markierung:

 

Rot markierte Übergabeparameter sind Optional ( es werden Standardwerte verwendet)

Grau markierte Befehle und Übergabeparameter sind noch nicht realisiert (Realisierung ist oder war vorgesehen)

 

 

 


DAUNY – HTTP-Proxy-Kommunikation Synatx v2002-01-19-1100

 

Ein Dauny Client kann mit dem Server auch über einen HTTP-Proxy-Server kommunizieren.

Dazu ist aber ein etwas modifiziertes Übertragungsprotokoll einzuhalten das als HTTP-Protokoll „durchgeht“.

 

Request (DaunyBefehl):

 

Befehl:

 

HEAD http://<Server-Adresse>:<Server Port>/ HTTP/1.1

User-Agent: Dauny Client

Host: <Server-Adresse>:<Server Port>

Connection: Keep-Alive

Proxy-Connection: Keep-Alive

Dauny USER: <Benutzername>

Dauny PASS: <Passwort>

Dauny CMD: <Dauny Befehl>

 

Jeder Parameter wird mit einem Windows Zeilenumbruch („\r\n“) beendet.

Der Request selbst wird mit der Kombination „\r\n\18“ beendet (RequestEnd[4]={13,10,18,0);).

 

 

Beschreibung:

 

Der Request beginnt mit dem HTTP - Protokoll Befehl „HEAD“  gefolgt von der Server-Adresse und dem Server Port danach sollte immer ein abschließendes „/“ kommen um Probleme mit Proxyservern zu vermeiden.

Danach kommt die verwendetet HTTP - Protokollversion.

Weiters ist die Angabe „User-Agent: Dauny Client“ von entscheidender Bedeutung sie muss unbedingt enthalten sein damit der Server den Request auch akzeptiert.  Die Angabe kann aber auch ergänzt werden um den Client genauer zu identifizieren zum Beispiel „User-Agent: Dauny Client Simple-Dauny-Client 1.2“.

Dann muss die Verbindungsart angegeben werden. „Connection: Keep-Alive” und “Proxy-Connection: Keep-Alive” zwingen den Proxy-Server dazu die Verbindung zum Server und zum Client bis zur Antwort aufrecht zu erhalten.

Die Angaben „Dauny USER“ und „Dauny PASS“ übertragen den Benutzernamen und das Passwort des Benutzers über den der Zugriff erfolgten soll.

„Dauny CMD“ beinhaltet den Befehl der an den Server übertragen werden soll.

 

Nachdem der Request nach diesen Vorgaben zusammengestellt wurde muss er nur noch an den HTTP-Proxy-Server (Proxy-Adresse:Proxy-Port) geschickt werden. Dieser Übernimmt dann automatisch die Weiterleitung des Requests an den Server  und die Weiterleitung der Antwort zurück an den Client

 

 

Beispiel:

 

HEAD http://192.168.0.24:5560/ HTTP/1.1

User-Agent: Dauny Client

Host: 192.168.0.24:5560

Connection: Keep-Alive

Proxy-Connection: Keep-Alive

Dauny USER: BENUTZER1

Dauny PASS: PASSWORT1

Dauny CMD: ver

 

 


Request-Antwort (Befehlsantwort):

 

Befehl:

 

HTTP/1.0 200 OK

Server: Dauny

Connection: Close

Dauny Answer: <Dauny Befehlsantwort>

 

 

Beschreibung:

 

Der Antwort die vom Proxy-Server an den Client übermittelt wurde beinhaltet in der ersten Zeile eine HTTP-Protokoll Zeile.

Die erste Angabe ist die HTTP – Protokollversion, dann eine Fehlercode und dann ein Fehlerbeschreiung als Text.

Im ersten Beispiel kann man so eine korrekte Zeile sehen, als Fehlercode wird dabei 200 und als Fehlertext OK übertragen (diese Zeile wurde vom Dauny-Server geschickt ).

Im zweiten Beispiel kann man eine Fehlerhaft Antwort sehen, beim Fehlercode handelt es sich um einen HTTP-Fehler der vom Proxy erzeugt wurde weil er den Dauny-Server nicht finden konnte. In der Fehlerhaften Antwort kann man deshalb auch nicht die „Dauny Answer“ Zeile finden die, die Antwort des Dauny-Servers auf den geschickten Befehl beinhaltet.

Als zusätzliches Identifikationsmerkmal wird die Zeile „Server: Dauny“ an die Antwort angehängt.

 

 

Beispiel:

 

HTTP/1.0 200 OK

Server: Dauny

Dauny Answer: VER dauny 1.26 (c) 2001

Connection: Close

 

 

Beispiel Fehler (Webwasher 3.0):

 

HTTP/1.0 500 Interner Server Fehler

Content-type: text/html

Pragma: no-cache

 

 

 

Einzelne Informationzeilen außer der erste im Request und in der Antwort können in einer beliebeigen Reihenfolge angegeben werden

Jeder Request-Anwort Abschnitt ist in sich geschlossen, darum muss auch bei jedem Befehl der Benutzer und das Passwort übertragen werden. Ist das Passwort oder andere wichtige Protokollparameter nicht korrekt so wird keine Antwort gesendet und der Socket geschlossen.

Durch dieses Verfahren sind einige Befehl im Proxymodus nicht möglich bzw. nicht sinnvoll:

Befehl „LOGIN“ wird nicht benötigt.

Befehl „CUSER“ wird nicht gesendet.

Nachrichten „MESSAGE“ können zwar versendet aber nicht empfangen werden.

Der Befehl „STORE“ kann nur eingeschränkt benützt werden da kein Zeilenumbruch („\n“) in den Daten enthalten sein darf.

 

 

 

Kommunikation wurde mit folgenden Proxy-Server getestet:

 

WebWasher 3.0

MS Proxy 2.0

WebWasher 3.0 -> MS Proxy 2.0                                                                                                   Verfasser: EVIL