Reverse HTTP
David Schueler
david.schueler at tel-billig.de
Di Okt 26 18:04:57 CEST 2010
Hallo Leute.
Ich hab heute mal eine spezielle Frage bezüglich folgendem Sachverhalt:
Ein Client verbindet per TCP mit einem Server (sagen wir port 80/HTTP) und
setzt eine HTTP-GET Anfrage ab. Dann wartet er auf eine Antwort.
Soweit ist alles normal.
Nun trennt der Client aber dier TCP Verbindung nicht, sondern setzt eine
zweite Anfrage ab und erwartet nun als Antwort selbst eine HTTP-GET
Anfrage.
Ein Beispiel zur Verdeutlichung:
Client --> Server
GET /test.php HTTP/1.1
Connection: Keep-Alive
Antwort vom Server
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 2
OK
2te Anfrage Client --> Server
GET /test2.php HTTP/1.1
Connection: Keep-Alive
Antwort vom Server an den Client
GET /Set?Enable=1 HTTP/1.1
User-Agent: Mozilla/5.0
Antwort vom Client
HTTP/1.0 200 OK
Content-type: text/plain
Return:0
Ihr seht also, daß diese Kommunikation sich ab dem 3ten Teil umkehrt.
Mein problem ist nun, daß ich mittels script keine möglichkeit sehe auf
der bereits bestehenden TCP-Verbindung einen HTTP-GET Request absetzen
kann. Der Apache (als auch lighttpd) erwarten ja daß auf eine Anfrage eine
Antwort erfolgt. Ich kann also die Header welche als Response gesendet
werden nicht in einen Request umbiegen.
Nun könnte man meinen, ich brauch doch nur mittels curl die Anfrage an den
Client zu stellen. Das Problem dabei ist, daß diese
Server-->Client-Anfragen über die gleiche TCP-Verbindung erfolgen müssen,
die der Client aufgebaut hat, da dieser hinter einem NAT Router steht und
kein Portforward auf dem Router eingerichtet ist.
Hat jemand eine Idee wie ich dies ohne großen Aufwand realisiert bekomme?
Kann man z.B. CGI/FastCGI so umbiegen daß es auf den Port, welcher
momentan mit dem Webserver kommuniziert, frei schreiben und lesen kann?
Oder kann man Apache (respektive lighttpd) beibringen, auf einen HTTP-GET
keinen HTTP/1.1 200 OK sondern wieder einen HTTP-GET zu senden?
Evtl. gibt es auch schon entsprechende Plugins/Codebeispiele?
Tante Guckl hat mir bisher noch nicht weiter geholfen, da dies wohl eher
selten gebraucht wird, bzw. auch absolut nicht dem HTTP RFC entspricht.
Danke für alle produktiven Vorschläge.
David
--
MFK Geraberg
Department of Research and Development
Ohrdrufer Strasse 14
98716 Geraberg / Germany
Tel.: +49 3677 791073
Fax.: +49 3677 791942
Mail: david.schueler at tel-billig.de