Index > Contao-Core > Extension Repository und Proxy
Hallo Peter,
schade daß die PHP SOAP library keine binäre Transfers unterstützt, dann wäre dies die einfachste Lösung gewesen, aber so natürlich nicht praktikabel. Da bleibt es Leo nur übrig die Request Klasse zu erweitern, was mit Sicherheit auch für andere Module von Vorteil wäre, aber nicht einfach ist. Ich hatte es mir mal kurz angeschaut, nachdem ich an die Stelle mit den Sockets kam, habe ich bei SOAP weitergelesn.
D.h. also erstmal die Lösung mit mod_proxy ausprobieren.
Gruß, Jörg
schade daß die PHP SOAP library keine binäre Transfers unterstützt, dann wäre dies die einfachste Lösung gewesen, aber so natürlich nicht praktikabel. Da bleibt es Leo nur übrig die Request Klasse zu erweitern, was mit Sicherheit auch für andere Module von Vorteil wäre, aber nicht einfach ist. Ich hatte es mir mal kurz angeschaut, nachdem ich an die Stelle mit den Sockets kam, habe ich bei SOAP weitergelesn.
D.h. also erstmal die Lösung mit mod_proxy ausprobieren.
Gruß, Jörg
2008-11-11 14:15
Moin.
Also, das mit apache und mod_proxy funktioniert. Folgende Zutaten braucht man dazu:
1. einen apache Server mit einer Webseite, am besten man benutzt eine eigene nur für diesen Zweck,
2. das proxy und proxy_http modul,
3. folgende Einträge in der Config Datei:
4. folgende einträge in der /etc/hosts Datei auf dem Rechner wo typolight läuft:
Wenn man alle Zutaten zusammen hat und nichts angebrannt ist, dann Guten Appetit.
5. Als Dessert, man kann den mod_proxy auch auf dem selben Server laufen lassen wie typolight.
Gruß, Jörg
Also, das mit apache und mod_proxy funktioniert. Folgende Zutaten braucht man dazu:
1. einen apache Server mit einer Webseite, am besten man benutzt eine eigene nur für diesen Zweck,
2. das proxy und proxy_http modul,
3. folgende Einträge in der Config Datei:
Code:
ProxyRequests Off ProxyVia Off ProxyRemote * http://<PROXY_SERVER>:<PORT> ProxyPass /services http://typolight.org/services ProxyPassReverse /services http://typolight.org/services ProxyPass /repository http://typolight.org/repository ProxyPassReverse /repository http://typolight.org/repository ProxyPass /system http://www.typolight.org/system ProxyPassReverse /system http://www.typolight.org/system
4. folgende einträge in der /etc/hosts Datei auf dem Rechner wo typolight läuft:
Code:
<IP_APACHE_SERVER_MIT_MOD_PROXY> typolight.org <IP_APACHE_SERVER_MIT_MOD_PROXY> www.typolight.org
Wenn man alle Zutaten zusammen hat und nichts angebrannt ist, dann Guten Appetit.
5. Als Dessert, man kann den mod_proxy auch auf dem selben Server laufen lassen wie typolight.
Gruß, Jörg
Zuletzt bearbeitet von jockel, 2008-11-12 11:12
2008-11-12 10:19
Hi Jörg,
funktioniert bei mir leider nicht. Wenn ich wie vorgeschlagen die Module proxy u. proxy_http für Apache installiere und oben genannte Angaben (mit Proxy, Port und Server-IP) in die apache2.conf und in die hosts eintrage, bekomme ich ein Backend ohne CSS und ein "verschobenes" Frontend ohne Icons angezeigt.
Bei mir sieht sieht es so aus, dass TYPOlight und Apache auf dem gleichen Server laufen. Um mit diesem Server aber eine Verbidung ins Internet zu bekommen, muss ich mich an einem externen Proxy (auf den keine Zugriff habe) authentifizieren.
Grüße, Marcus
funktioniert bei mir leider nicht. Wenn ich wie vorgeschlagen die Module proxy u. proxy_http für Apache installiere und oben genannte Angaben (mit Proxy, Port und Server-IP) in die apache2.conf und in die hosts eintrage, bekomme ich ein Backend ohne CSS und ein "verschobenes" Frontend ohne Icons angezeigt.
Bei mir sieht sieht es so aus, dass TYPOlight und Apache auf dem gleichen Server laufen. Um mit diesem Server aber eine Verbidung ins Internet zu bekommen, muss ich mich an einem externen Proxy (auf den keine Zugriff habe) authentifizieren.
Grüße, Marcus
Zuletzt bearbeitet von marcus, 2008-11-12 13:23
2008-11-12 13:20
Hallo Marcus,
wenn du die Angaben in dieselbe Server Konfiguration eingibst, dann ist das schon ein Fehler. Folgendes funktioniert bei mir:
(ich benutze Debain etch und apache2, sollte aber bei anderen Linux Distributionen ähnlich sein)
A) ich verwende die Modeule proxy (LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so) und proxy_http (LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so) nicht (!) http_proxy.
ich verwende VirtualHosts, einen für typolight, einen für den proxy.
in der /etc/hosts habe ich dann nur noch folgenden Eintrag hinzugefügt:
Das wars. Eine kuriosität tauch bei mir noch bei den Links zu den Bildern auf, aber grundsätzlich funktioniert es.
Gruß, Jörg
wenn du die Angaben in dieselbe Server Konfiguration eingibst, dann ist das schon ein Fehler. Folgendes funktioniert bei mir:
(ich benutze Debain etch und apache2, sollte aber bei anderen Linux Distributionen ähnlich sein)
A) ich verwende die Modeule proxy (LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so) und proxy_http (LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so) nicht (!) http_proxy.
Code:
NameVirtualHost IP_ADDRESS_DMZ:80 <VirtualHost IP_ADDRESS_DMZ:80> ... deine Konfiguration für typolight ... </VirtualHost> NameVirtualHost 127.0.0.1:80 <VirtualHost 127.0.0.1:80> ServerAdmin webmaster@example.com ServerName localhost ServerAlias localhost DocumentRoot /var/www/localhost ErrorLog /var/log/apache2/localhost.error.log TransferLog /var/log/apache2/localhost.access.log ## DocumentRoot configuration: <Directory /var/www/typolight-proxy> Options -Indexes Order deny,allow Deny from all Allow from 127.0.0.1 </Directory> ## Proxy configuration: <IfModule mod_proxy.c> ProxyRequests Off ProxyVia Off ProxyRemote * http://USER:PASSWORT@PROXY_SERVER:PORT <Proxy *> AddDefaultCharset off Order deny,allow Deny from all Allow from 127.0.0.1 ProxyFtpDirCharset UTF-8 </Proxy> ProxyPass /services/ http://typolight.org/services/ ProxyPass /system/ http://www.typolight.org/system/ </IfModule> </VirtualHost>
in der /etc/hosts habe ich dann nur noch folgenden Eintrag hinzugefügt:
Code:
127.0.0.1 typolight.org www.typolight.org
Das wars. Eine kuriosität tauch bei mir noch bei den Links zu den Bildern auf, aber grundsätzlich funktioniert es.
Gruß, Jörg
2008-11-12 13:46
die beiden Module sind geladen und der Proxy als VirtualHost eingerichtet. Es ist mir bis jezt aber noch nicht gelungen den ReverseProxy mit Authentifizierung zu starten.
Wenn ich Apache neu starte erhalte ich folgende Fehlermeldung.
ProxyRemote: Bad syntax for a remote proxy server (bad port number)
Lasse ich user:passwort weg, bekomme ich keine Fehlermeldung. Ich gehe mal davon aus, dass bei ReverseProxy keine Authentifierung möglich ist?
Wenn ich Apache neu starte erhalte ich folgende Fehlermeldung.
ProxyRemote: Bad syntax for a remote proxy server (bad port number)
Lasse ich user:passwort weg, bekomme ich keine Fehlermeldung. Ich gehe mal davon aus, dass bei ReverseProxy keine Authentifierung möglich ist?
2008-11-12 16:45
Hi Marcus,
ich befürchte fast, daß
nicht stimmen wird, in der Anleitung zu ProxyRemote steht auch nur etwas von
das mit user und passwort war nur eine Vermutung von mir.
Googlen brachte einige Antworten zu diesem Thema.
siehe https://issues.apache.org/bugzilla/show_bug.cgi?id=25947 und https://issues.apache.org/bugzilla/show_bug.cgi?id=34837
Wenn ich das richtig verstanden habe, versuche also mal folgendes:
Alternatiev, setze einen Squid auf und definiere den proxy mit authentification als cache_peer und verweise mit ProxyRemote auf den squid ...
Gute Nacht, Jörg
ich befürchte fast, daß
Code:
ProxyRemote * http://USER:PASSWORT@PROXY_SERVER:PORT
nicht stimmen wird, in der Anleitung zu ProxyRemote steht auch nur etwas von
Code:
ProxyRemote * http://PROXY_SERVER:PORT
das mit user und passwort war nur eine Vermutung von mir.
Googlen brachte einige Antworten zu diesem Thema.
siehe https://issues.apache.org/bugzilla/show_bug.cgi?id=25947 und https://issues.apache.org/bugzilla/show_bug.cgi?id=34837
Wenn ich das richtig verstanden habe, versuche also mal folgendes:
Code:
ProxyPass /services/ http://typolight.org/services/ ProxyPassReverse /services/ http://typolight.org/services/ ProxyPass /system/ http://www.typolight.org/system/ ProxyPassReverse /services/ http://typolight.org/services/
Alternatiev, setze einen Squid auf und definiere den proxy mit authentification als cache_peer und verweise mit ProxyRemote auf den squid ...
Gute Nacht, Jörg
2008-11-12 18:02
Hallo Jörg,
also mod_proxy war noch ok, aber weiter werde ich das Problem nicht verfolgen. ProxyRemote untersützt leider keine Authentifizierung. Ich bleibe beim manuellen Update, trotzdem danke für deine Hilfe!
Viele Grüße, Marcus
also mod_proxy war noch ok, aber weiter werde ich das Problem nicht verfolgen. ProxyRemote untersützt leider keine Authentifizierung. Ich bleibe beim manuellen Update, trotzdem danke für deine Hilfe!
Viele Grüße, Marcus
2008-11-13 10:17
Hi,
ich habe nun einen Prototypen für eine Proxy Erweiterung der Request Klasse.
Sie ist in einem Modul als "Proof of Concept" zusammengefasst und in der Klasse ProxyRequest implementiert.
Falls Leo möchte, kann er die Erweiterung in die Request Klasse einpflegen.
TODO:
DONE:
damit die "Extension Repository" mit dieser Erweiterung funktioniert ist noch folgendes nötig:
und
Gruß, Jörg
ich habe nun einen Prototypen für eine Proxy Erweiterung der Request Klasse.
Sie ist in einem Modul als "Proof of Concept" zusammengefasst und in der Klasse ProxyRequest implementiert.
Falls Leo möchte, kann er die Erweiterung in die Request Klasse einpflegen.
TODO:
- Überprüfen ob "Proxy-Authorization" auch funktioniert
- Überprüfen ob https zu einen Proxy funktioniert
- Überprüfen ob es den ensprechenden RFCs genügt
- Proxy Ausnahmen mit Leben füllen (Einstellung vorhanden, aber kein Code)
DONE:
- in den Einstellungen wird ein Proxy definiert, welcher in der ProxyRequest Klasse verwendet wird
- per ProxyRequest kann der Proxy geändert werden
- per ProxyRequest kann der Proxy ein/ausgeschaltet werden
damit die "Extension Repository" mit dieser Erweiterung funktioniert ist noch folgendes nötig:
Code:
--- RepositoryBackendModule.php.orig 2008-10-29 15:17:09.000000000 +0100 +++ RepositoryBackendModule.php 2008-11-14 15:29:54.000000000 +0100 @@ -90,13 +90,27 @@ $wsdl = trim($GLOBALS['TL_CONFIG']['repository_wsdl']); if ($wsdl != '') { if (!REPOSITORY_SOAPCACHE) ini_set('soap.wsdl_cache_enabled', 0); - $this->client = - new SoapClient($wsdl, - array( - 'soap_version' => SOAP_1_2, - 'compression' => SOAP_COMPRESSION_AC CEPT | SOAP_COMPRESSION_GZIP | 1 - ) - ); + if ($GLOBALS['TL_CONFIG']['usePROXY']) { + // get proxy informations + $proxy_uri = parse_url($GLOBALS['TL_CONFIG']['proxy_url']); + $this->client = new SoapClient($wsdl, array( + 'soap_version' => SOAP_1_2, + 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_ GZIP | 1, + 'proxy_host' => $proxy_uri['host'], + 'proxy_port' => $proxy_uri['port'], + 'proxy_login' => $proxy_uri['user'], + 'proxy_password' => $proxy_uri['pass'] + ) + ); + } else { + $this->client = new SoapClient($wsdl, + array( + 'soap_version' => SOAP_1_2, + 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_ GZIP | 1 + ) + ); + } + $this->mode = 'soap'; } else // fallback toload RepositoryServer class if on central server @@ -175,4 +189,4 @@ } // class RepositoryBackendModule
und
Code:
--- RepositoryManager.php.orig 2008-11-01 16:14:47.000000000 +0100 +++ RepositoryManager.php 2008-11-14 13:15:21.000000000 +0100 @@ -563,7 +563,7 @@ if ($save) { // save new or changed file - by Request - $req = new Request(); + $req = new ProxyRequest(); $req->send($file->url); if ($req->hasError()) throw new Exception($req->error) ; $f = new File($filerel); @@ -643,7 +643,7 @@ $this->Files->delete($zipname); // fetch package - using Request class - $req = new Request(); + $req = new ProxyRequest(); $req->send($pkg->url); if ($req->hasError()) throw new Exception($req->error); $dstfile = new File($zipname); @@ -1047,4 +1047,4 @@ } // class RepositoryManager
Gruß, Jörg
2008-11-14 16:11
Hi Jörg,
tolle Sache
, werde ich nächste Woche gleich testen!
Grüße, Marcus
tolle Sache
Grüße, Marcus
2008-11-14 18:18
Moin.
von den TODOs, habe ich mir nun noch mal einige Punkte angeschaut und dabei kam folgendes raus:
bei einer Anfrage nach https://www.example.com/ über einen Proxy, muß man eine Verbindung zum Proxy aufmachen und dann einen "CONNECT" zu www.example.com, dann kommt erst die Verschlüsselung ... (Googeln nach "php fsockopen proxy https" bringt einige Ergebnisse).
Gruß, Jörg
von den TODOs, habe ich mir nun noch mal einige Punkte angeschaut und dabei kam folgendes raus:
- "Proxy-Authorization" sollte funktionieren
- https zu einem Proxy ????? was passiert dan mit einer https Anfrage ????
- https über einen Proxy ist totaler Schwachsinn, muß ich mir genauer anschauen
bei einer Anfrage nach https://www.example.com/ über einen Proxy, muß man eine Verbindung zum Proxy aufmachen und dann einen "CONNECT" zu www.example.com, dann kommt erst die Verschlüsselung ... (Googeln nach "php fsockopen proxy https" bringt einige Ergebnisse).
Gruß, Jörg
Zuletzt bearbeitet von jockel, 2008-11-16 16:10
2008-11-16 12:49
Hallo Jörg,
gratuliere, tolle Arbeit ... nun funktioniert auch bei mir das Extension Repository mit Proxy und Authentifizierung und dazu noch aus dem Backend!
Nun liegt es wohl an Leo, ob die Einstellung bei Gelegenheit dauerhaft den Weg in Backend findet. Mein Ticket zu diesem Thema wurde leider nach deinem ersten Post geschlossen, aber man könnte es ja auch wieder reaktivieren
Viele Grüße, Marcus
gratuliere, tolle Arbeit ... nun funktioniert auch bei mir das Extension Repository mit Proxy und Authentifizierung und dazu noch aus dem Backend!
Nun liegt es wohl an Leo, ob die Einstellung bei Gelegenheit dauerhaft den Weg in Backend findet. Mein Ticket zu diesem Thema wurde leider nach deinem ersten Post geschlossen, aber man könnte es ja auch wieder reaktivieren
Viele Grüße, Marcus
2008-11-17 13:29
marcus:
gratuliere, tolle Arbeit ...
Nun liegt es wohl an Leo, ob die Einstellung bei Gelegenheit dauerhaft den Weg in Backend findet.
Dem schliesse ich mich an, gute Arbeit Jörg
Peter - "May the the TYPOlight shine on you"
2008-11-17 14:18
Danke für die Blumen 
Die Version proxy-0.1 ist nur mit Vorsicht zu genießen!
Habe am Wochenende und bis eben noch an den restlichen Punkten gearbeitet, daher gibt es eine Überarbeitete Version proxy-0.2 mit folgenden Änderungen:
Es sind immer noch Punkte offen:
Gruß, Jörg
Die Version proxy-0.1 ist nur mit Vorsicht zu genießen!
- sie funktioniert gerade mal für http Proxies
- sie funktioniert für http Anfragen
- so wie es scheint funktioniert auch das mit der Proxy-Authorization
Habe am Wochenende und bis eben noch an den restlichen Punkten gearbeitet, daher gibt es eine Überarbeitete Version proxy-0.2 mit folgenden Änderungen:
Notiz:
Version 0.2:
* seperate out connect into a private function
* redo https over proxy; was totaly wrong priviously
* put proxy config into an array
Es sind immer noch Punkte offen:
Notiz:
TODO:
* Überprüfen ob es den ensprechenden RFCs genügt
* Proxy Ausnahmen mit Leben füllen (Einstellung vorhanden, aber kein Code)
# keep-alive, HTTP/1.1, etc. ...
Gruß, Jörg
2008-11-17 15:41
Hallo Jörg,
das wäre genau die Lösung nach der ich suche. Leider funktioniert es bei mir noch nicht, der Aufruf der Erweiterungsverwaltung bringt die folgende Fehlermeldung.
Der Proxy verlangt eine Anmeldung. Die Angabe des Proxys ohne Protokoll, mit oder ohne Ausnahmen brachte keinen Erfolg.
Hast Du eine idee woran es liegen kann?
Grüße,
mupp3t
das wäre genau die Lösung nach der ich suche. Leider funktioniert es bei mir noch nicht, der Aufruf der Erweiterungsverwaltung bringt die folgende Fehlermeldung.
Bei acenes Vorschlag bekomme ich wenigstens die Verbindung zum repository, auch wenn die Installation wie oben beschrieben nicht funktioniert. Also liegt es nicht am Proxy.Zitat:
Warning: SoapClient::SoapClient(http://www.typolight.org/services/repository.wsdl) [soapclient.soapclient]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in D:\webserv\Apache\htdocs\system\modules\rep_client\RepositoryBackendModule.php on line 106
Der Proxy verlangt eine Anmeldung. Die Angabe des Proxys ohne Protokoll, mit oder ohne Ausnahmen brachte keinen Erfolg.
Hast Du eine idee woran es liegen kann?
Grüße,
mupp3t
2008-11-19 07:08
Hallo mupp3t,
hast du auch die diffs für die Extension Repository angewendet, wie ich in http://www.typolight.org/board/message/55885.html geschrieben habe?
Das proxy modul erweitert typolight nur um eine ProxyRequest Klasse, ändert die ER aber nicht.
Gruß, Jörg
hast du auch die diffs für die Extension Repository angewendet, wie ich in http://www.typolight.org/board/message/55885.html geschrieben habe?
Das proxy modul erweitert typolight nur um eine ProxyRequest Klasse, ändert die ER aber nicht.
Gruß, Jörg
2008-11-19 10:33
