Transformation
Michael
- webserver
0 Stefan Falz0 Michael
0 kfichtner0 Michael
0 Mike
Hallo Leute,
folgendes Szenario:
Irgendwo steht ein Webserver, der Dokumente bereitstellt auf die ein Client zugreift. Zwischen dem Webserver und den Client soll eine Art Proxy-Server. Dieser soll die Dokumente vom Webserver modifizieren, bevor er sie an den Client weiterreicht (zum Beispiel durch eine Art Servlet). Der Proxy-Server sollte nach Möglichkeit Windows-basiert sein.
Kann mir jemand einen Tipp geben?
Vielen Dank schon im Vorraus ....
Gruß
Michael
Hallo Leute,
folgendes Szenario:
Irgendwo steht ein Webserver, der Dokumente bereitstellt auf die ein Client zugreift. Zwischen dem Webserver und den Client soll eine Art Proxy-Server. Dieser soll die Dokumente vom Webserver modifizieren, bevor er sie an den Client weiterreicht (zum Beispiel durch eine Art Servlet). Der Proxy-Server sollte nach Möglichkeit Windows-basiert sein.
Kann mir jemand einen Tipp geben?Vielen Dank schon im Vorraus ....
Gruß
Michael
Hallo,
mit ASP ist das ganze kein Problem. Du rufst eine ASP-Seite auf, die dann per FileSystemObject den Inhalt der Datei liest, nach Deinen Vorgaben umschreibt und das Ergebnis an den Browser sendet.
Hierfür benötigt man auf jeden Fall keinen Proxy.
Tschau, Stefan
Hallo Stefan,
mit ASP ist das ganze kein Problem. Du rufst eine ASP-Seite auf, die dann per
FileSystemObject den Inhalt der Datei liest, nach Deinen Vorgaben umschreibt
und das Ergebnis an den Browser sendet.
Hierfür benötigt man auf jeden Fall keinen Proxy.
Danke erstmal für Deine Antwort. Und wenn die Datei auf dem selben Computer liegt, wie der Webserver, dann ist das tatsächlich kein Problem. Dann gibt es viele Lösungen.
Die Dreiteilung
Webserver---Proxy---Client
ist aber vorgeschrieben. Und wie gesagt, die Transformation SOLL im Proxy (oder etwas Derartiges) stattfinden und die Quelldaten SOLLEN von einem unabhängigen WebServer kommen. Und das ist so das kleine Problem.
Eine Möglichkeit wäre ja vielleicht ein CGI-Programm, was auf dem "Proxy"-Rechner läuft und quasi von einem Webserver aufgerufen wird und dann selbst die Daten vom eigentlichen WebServer anfordert und dann umwandelt und zurückgibt.
Mir wäre aber eine transparente und elegantere Lösung lieber.
Trotzdem Danke ....
Gruß
Michael
Eine Möglichkeit wäre ja vielleicht ein CGI-Programm, was auf dem "Proxy"-Rechner läuft und quasi von einem Webserver aufgerufen wird und dann selbst die Daten vom eigentlichen WebServer anfordert und dann umwandelt und zurückgibt.
Diese Lösung ist im Archiv mehrfach angedacht worden, und ihre Komlexität hängt m. E. alleine von Deinen Transformationsregeln ab (Perl und reguläre Ausdrücke sind dafür aber auch prima).
Such mal nach "LWP::Simple" ...
Mir wäre aber eine transparente und elegantere Lösung lieber.
Wo ist das Problem?
Du kannst den Transformator so schreiben, daß er seine Regeln aus einer ASCII-Datei einliest und interpretiert.
Die letzten vier Wochen habe ich genau so etwas gebaut, wobei mein Problem aber eher die inhaltliche Seite der Transformationsregeln, das allgemeine Ablaufkonzept (mein Job muß zuverlässig operateurlos um 23:00 Uhr laufen) und die Qualität der Datenquelle (technisch wie inhaltlich) war.
Hallo Michael,
....
Mir wäre aber eine transparente und elegantere Lösung lieber.
Wo ist das Problem?
Du kannst den Transformator so schreiben, daß er seine Regeln aus einer ASCII-Datei einliest und interpretiert.
Die letzten vier Wochen habe ich genau so etwas gebaut, wobei mein Problem
aber eher die inhaltliche Seite der Transformationsregeln, das allgemeine
Ablaufkonzept (mein Job muß zuverlässig operateurlos um 23:00 Uhr laufen)
und die Qualität der Datenquelle (technisch wie inhaltlich) war.
Dann würdest Du mir mal verraten, wie Du das gemacht hast (mit dem Aufbau den ich beschrieben habe). Das der Transformator seine Regeln aus einer lokalen Datei (oder remote) nimmt, daß ist ja klar. Was mir nicht ganz klar ist, wie das mit dem modifizieren der durchgereichten Dateien im "Proxy" funktioniert. Ich könnte mir also folgendes Szenario vorstellen. Auf einem Webserver liegen die Daten von mir aus im HTML-Format. Wenn man direkt auf die Seiten zugreift, wird alles normal dargestellt. Wenn man jetzt über den Proxy-Server geht, sollen dagegen beispielsweise alle Texte fettgedruckt geschrieben werden (d.h. der Proxy holt sich die Dateien auch vom WebServer aber fügt dabei die notwendigen HTML-Tags für den Fettdruck ein). Der beim Client soll alles ganz normal funktionieren (auch Links und so, ohne das man irgendwo was ändern muss).
Also der Transformator und die Anwendung der Regeln bereitet mir keine Probleme. Mir ist eher daran gelegen, wie ich halt den Transparenten Proxy gestellt, so daß auch mein Transformerscript auch bei jeder (HTML-)Datei ausgeführt wird.
Gruß
Michael
Was mir nicht ganz klar ist, wie das mit dem modifizieren der durchgereichten Dateien im "Proxy" funktioniert.
Mein Problem ist, daß ich nicht weiß, ob Du "Proxy" smenatisch oder syntaktisch meinst.
Mein Szenario ging von "semantisch" aus, also kein Eintrag unter "Proxy" im Browser, sondern einfach ein anderer Webserver, auf dem CGI-Anwendungen mit LWP::Simple::get() die Dokumente absaugen - die Version 1.0 würde also bei jedem Zugriff auf dem "Proxy" einen Zugriff auf dem "Quellserver" auslösen.
(Version 2.0 könnte die modifizierten Dateien auf dem "Proxy" ablegen, einen HTTP-HEAD-Request an den Quellserver senden und in Abhängigkeit vom Änderungsdatum beider Dateien entscheiden, was zu tun ist - wie das ein Cache eben tun muß.)
Ich könnte mir also folgendes Szenario vorstellen. Auf einem Webserver liegen die Daten von mir aus im HTML-Format. Wenn man direkt auf die Seiten zugreift, wird alles normal dargestellt. Wenn man jetzt über den Proxy-Server geht, sollen dagegen beispielsweise alle Texte fettgedruckt geschrieben werden (d.h. der Proxy holt sich die Dateien auch vom WebServer aber fügt dabei die notwendigen HTML-Tags für den Fettdruck ein). Der beim Client soll alles ganz normal funktionieren (auch Links und so, ohne das man irgendwo was ändern muss).
Das würde mein oben beschriebenes Modell mit zwei Webservern leisten. (Das können ja sogar zwei virtuelle Webserver derselben Maschine sein, und der Filter für die Fett-Darstellung könnte dadurch realisiert werden, daß beide virtuellen Server auf dieselben Dateien zugreifen, nur der eine halt direkt und der andere über ein Konverter-Skript.)
Also der Transformator und die Anwendung der Regeln bereitet mir keine Probleme. Mir ist eher daran gelegen, wie ich halt den Transparenten Proxy gestellt, so daß auch mein Transformerscript auch bei jeder (HTML-)Datei ausgeführt wird.
Wenn es zwingend um einen wirklichen Proxy geht, dann scheint mir die Sache ein technisches und kein inhaltliches Problem zu sein. (Mir ist nicht bekannt, wie mächtig die Transformationsregeln in einem "echten" Proxy-Server sind.)
In diesem Falle solltest Du die Frage vermutlich als "(SERVER) Proxy: ..." neu stellen.
du kannst doch auf deinem *PROXY* eine scriptsprache (perl asp oder php (das beste zulezt;)
laufen lassen, die sich eine datei von deinem *webserver* holt, modifiziert und weitergibt.
in php sieht das etwa so aus
<?php
$fp=fopen("http://www.irgendwo.de/huhu.dat",r+");
dann daten auslesen aendern und ausgeben
ist in einer handvoll zeilen zu erlefigen, wenn die aenderungen nicht uz gross sind
kfichtner
Hallo kfichtner,
jo, daß ist ja eine ähnliche "Lösung", wie sie schon Stefan vorgeschlagen hat. Und das Problem ist, daß man da ohne größere Modifikation nicht herumkommt (evtl. vorhandene Links ändern usw.). Und gerade das möchte ich vermeiden. Der PHP-Kram ist doch immer irgendwie von den eigentlichen Daten abhängig oder umgekehrt. Ich möchte aber beide Sachen unabhängig. Auf dem WebServer sollen halt die Quelldateien sein und auf dem "Proxy" nur Transformationsregeln, die auf die Dateien angewendet werden.
Das klappt sicherlich alles irgendwie, aber mir war halt an einer eleganten Lösung gelegen.
Trotzdem vielen Dank. Immerhin ergab es einige Anregungen.
Gruß
Michael
Irgendwo steht ein Webserver, der Dokumente bereitstellt auf die ein Client zugreift. Zwischen dem Webserver und den Client soll eine Art Proxy-Server. Dieser soll die Dokumente vom Webserver modifizieren, bevor er sie an den Client weiterreicht (zum Beispiel durch eine Art Servlet). Der Proxy-Server sollte nach Möglichkeit Windows-basiert sein.
Hi Michael,
man könnte es mit ColdFusion lösen. Es gibt eine kostenlose Version ColdFusion express.
Du musst nur klären, ob express den Tag 'cfhttp' unterstützt.
Mike