Copyright: Made with Shalom Help Maker www.danish-shareware.dk/soft/shelpm/


Übersicht

DAUNY - Socket-Befehlsliste v2003-01-25-1200

Allgemeines
Anmelden [LOGIN]
Abmelden [LOGOUT]
HTTP Datei runterladen [GET]
Informationen zu einem Download abrufen [STATUS]
Kurze Informationen zu einem Download abrufen [CSTATUS]
Verbundene Benutzer abrufen [USERS]
Passwort des aktuellen Benutzers ändern [CHANGEPASSW ]
Programm Status abrufen [VAR]
Programm Status abrufen [SYSINFO]
Programm Versionsinformation abrufen [VER]
Text-Datei am Server speichern [STORE]
Nachricht an Benutzer senden [MESSAGE]
Automatische Nachricht wenn sich Benutzer ändern [CUSER]
Inhalt einer HTML-Seite runterladen [LGET]
Verzeichnis komprimieren [COMPRESS]]
Verschlüsselungs- Key für die Verbindung abfragen [KEY]
Fortsetzen eines beendeten Downloads [REGET]
Auflisten von Unterverzeichnissen in einem Verzeichnis [DIR]
Abbrechen eines Downloads [STOP]
Auflisten von Dateien in einem Verzeichnis [FILE]
Löschen eines Verzeichnis [RMDIR]
Löschen einer Datei [RMFILE]
Löschen einer Datei über die Id [RMFILEID]
Statistikdaten abfragen [STAT]

Anmerkung

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

Request (DaunyBefehl)
Request-Antwort (Befehlsantwort)

Autor: EVIL
Version: v200301262830


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 ("" 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.


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>


Abmelden [LOGOUT]

Befehl:

LOGOUT

Antwort:

Bye <Fehlernummer>


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>


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>


Kurze Informationen zu einem Download abrufen [CSTATUS]

Befehl:

CSTATUS <Prozess Nummer (ID)>

Antwort:

CSTATUS <Dateigröße> <Status>
CSTATUS ERROR <Fehler>
Bye <Fehlernummer>


Verbundene Benutzer abrufen [USERS]

Befehl:

USERS

Antwort:

USERS <Benutzer 1> <Benutze 2> <Benutzer 3>
Bye <Fehlernummer>

Es werden so viele Benutzernamen zurückgeliefert wie verbunden sind.


Passwort des aktuellen Benutzers ändern [CHANGEPASSW ]

Befehl:

CHANGEPASSW <Unverschlüsseltes Passwort>

Antwort:

CHANGEPASSW ERROR <Fehler>
Bye <Fehlernummer>


Programm Status abrufen [VAR]

Befehl:

VAR

Antwort:

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


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.


Programm Versionsinformation abrufen [VER]

Befehl:

VER

Antwort:

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

Beispiel:

VER dauny 1.07 (c) 2001


Text-Datei am Server speichern [STORE]

Befehl:

STORE <Verzeichnis> <Dateiname> <Daten>

Daten können bis zu 1000 Byte beinhalten Datei wird im Appendmodus geöffnet.

Antwort:

STORE OK
STORE ERROR <Fehler>
Bye <Fehlernummer>


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


Automatische Nachricht wenn sich Benutzer ändern [CUSER]

Server sendet:

CUSERS <Benutzer 1> <Benutze 2> <Benutzer 3>
Bye <Fehlernummer>

Es werden so viele Benutzernamen zurückgeliefert wie verbunden sind


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

Default:
Datei-Typen	*
Tiefe	1

DATEI-TYPEN werden mit Beistrich getrennt angegeben 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


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


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.


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.


Auflisten von Unterverzeichnissen in einem Verzeichnis [DIR]

Befehl:

DIR <Verzeichnis>

Antwort:

DIR OK "<Verzeichnisname1>" "<Verzeichnisname2>"
DIR ERROR <Fehler>
Bye <Fehlernummer>

Es werden so viele Verzeichnisse zurückgeliefert wie vorhanden sind.


Abbrechen eines Downloads [STOP]

Befehl:

STOP <Prozess Nummer (ID)>

Antwort:

STOP OK
STOP ERROR <Fehler>
Bye <Fehlernummer>


Auflisten von Dateien in einem Verzeichnis [FILE]

Befehl:

DIR <Verzeichnis>

Antwort:

FILE OK "<Datei1>" "<Datei2>"
FILE ERROR <Fehler>
Bye <Fehlernummer>

Es werden so viele Dateien zurückgeliefert wie vorhanden sind.


Löschen eines Verzeichnis [RMDIR]

Befehl:

RMDIR <Verzeichnis>

Antwort:

RMDIR OK
RMDIR ERROR <Fehler>
Bye <Fehlernummer>


Löschen einer Datei [RMFILE]

Befehl:

RMFILE <Datei>

Antwort:

RMFILE OK
RMFILE ERROR <Fehler>
Bye <Fehlernummer>


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

Befehl:

RMFILEID <Prozess Nummer (ID)>

Antwort:

RMFILEID OK
RMFILEID ERROR <Fehler>
Bye <Fehlernummer>


Statistikdaten abfragen [STAT]

Befehl:

STAT

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 zu Befehlen

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 hat 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:

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


HTTP-Proxy-Kommunikation 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


HTTP-Proxy-Kommunikation 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