[Mapbender-users] Connection = CURL - Frage zu Einstellungen

Armin Retterath armin.retterath at lvermgeo.rlp.de
Fri May 29 02:34:31 EDT 2009


hallo,
also: mapbender ruft  zum drucken und bei WFS requests eigentlich immer die 
class_connector auf. die wiederum greift serverseitig entweder über http, 
socket oder curl auf die externen quellen zu.  je nach einstellung in der 
mapbender.conf. wir arbeiten immer über curl und in diesem fall zieht auch 
die proxy umgebungsvariablen die in der mapbender.conf gesetzt sind. bei http 
ist das was anderes. hier müsste man einen zu verwendenden proxy in die 
apache konfiguration eintragen. die kann man - soweit ich weiss - nicht 
mittels php setzen. 
also: wenn man in verschiedene netze mittels proxy zugreifen will (viele 
externe dienste!) dann einfach curl connections aktivieren. die lokalen 
quellen kann auch in diesem falkl verwenden, wenn man zum beispiel anstatt 
localhost die ip adresse des wms/wfs-servers oder den dem proxy bekannten dns 
namen des servers nutzt. in dem fall geht aber die verbindung dann über den 
proxy. die alternative - nicht über den proxy: als ausnahme eine liste von 
adressen die direkt angesprochen werden sollen (so wie wahrscheinlich in der 
neueren mapbender version vorgesehen). die adressen müssen aber dann vom 
mapbender rechner aus auch ohne gesetzte proxy umgebungsvariable (unset 
http_proxy) per curl oder wget von der shell erreichbar sein und aufgelöst 
werden.
hoffe das hilft weiter.
grüsse
armin
Am Donnerstag 28 Mai 2009 17:40:09 schrieb v.botz:
> hmmm,
>
> ich habe jetzt mal die untige gepatchte class_connector.php genommen...
> (und die mapbender.conf angepasst)
>
> egal ob CONNECTION CURL oder HTTP:
> >> bleibt alles beim alten:  entweder lokale suche oder externe wms
> >> drucken.... !
>
> Kenn mich auch zu wenig damit aus um tiefer einzusteigen....
>
> --------------
>
> wenn ich eine phpinfo.php aufrufe bekomme ich die no_proxy variablen bei
> apache environment angezeigt..
> allerdings werden nur die klein- oder die großgeschriebenen übernommen
> (also nur no_proxy, oder NO_PROXY)
> was ist richtig - wie sieht das bei euch aus ?
>
> selbst wenn $NO_PROXY in phpinfo steht:
>
> echo $NO_PROXY bringt kein Ergebniss
> echo $no_proxy bringt die richtigen Einträge (Ronald: war mein Fehler im
> vorherigen Post ;-) )
> z.B. 200.X.XXX.22,www.bild.de
>
> schon unlogisch! vor allem: Umgebungsvariablen sind case-sensitive!!
> wenn ich beide no_proxy und NO_PROXY angebe wird jeweils die Erste
> Definition genommen.
> ------
>
> Verbindungs-TEST:
>
> wenn ich curl 200.X.XXX.22 in die Console eingebe
>
> > komm ich auch richtige angezeige... (ist ja auch im Intranet)
>
> wenn ich curl www.bild.de in die Console eingebe
>
> > Bekomm ich die Seite ebenfalls angezeigt!!    = Fehler, da nur über Proxy
> > erreichbar, da im Internet !
>
> Sieht so aus als ob no_proxy nicht für curl greift....
> Oder liegt das an dem Aufruf aus der Console ?
>
> ============================================================
>
> Bin ich eigentlich der einzige der lokale und externe Daten in einer VM
> kombiniert ?
> Warum hab anscheinend fast nur ich das Problem ?
> Macht Ihr da was anders ?
> ... liegt das vielleicht an Ubuntu inner VM?
>
> ============================================================
>
> Hoff ihr hab noch Ideen  ;-)
> Gruuß V.botz
>
> Ingo Lünsmann wrote:
> > Dies hört sich nach einem ähnlichen Problem, was ich vor ca. 1,5 Jahren
> > hatte. Damals habe ich die getHTTP()-Methode in class_connector.php
> > gepatcht, so dass ich in die mapbender.conf Proxy-Ausnahmen eintragen
> > kann. Vielleicht hilft es ja weiter. Hier die gepatchte
> > class_connector.php (im Verzeichnis mapbender/http/classes):
> >
> > <?php
> >
> >
> > # $Id$
> > # http://www.mapbender.org/index.php/class_connector
> > # Copyright (C) 2002 CCGIS
> > #
> > # This program is free software; you can redistribute it and/or modify
> > # it under the terms of the GNU General Public License as published by
> > # the Free Software Foundation; either version 2, or (at your option)
> > # any later version.
> > #
> > # This program is distributed in the hope that it will be useful,
> > # but WITHOUT ANY WARRANTY; without even the implied warranty of
> > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > # GNU General Public License for more details.
> > #
> > # You should have received a copy of the GNU General Public License
> > # along with this program; if not, write to the Free Software
> > # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
> > USA.
> >
> > require_once ("../../conf/mapbender.conf");
> >
> > class connector {
> > 	var $file;
> > 	function connector($url) {
> > 		if (CONNECTION == 'curl') {
> > 			$this->file = $this->getCURL($url);
> > 		}
> > 		if (CONNECTION == 'http') {
> > 			$this->file = $this->getHTTP($url);
> > 		}
> > 		if (CONNECTION == 'socket') {
> > 			$this->file = $this->getSOCKET($url);
> > 		}
> > 	}
> > 	function getCURL($url) {
> > 		$ch = curl_init($url);
> > 		//		curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
> > 		if (CONNECTION_PROXY != "") {
> > 			curl_setopt($ch, CURLOPT_PROXY, CONNECTION_PROXY . ":" .
> > CONNECTION_PORT);
> > 		}
> > 		if (CONNECTION_PASSWORD != "") {
> > 			curl_setopt($ch, CURLOPT_PROXYUSERPWD, CONNECTION_USER . ':' .
> > CONNECTION_PASSWORD);
> > 		}
> > 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
> > 		$file = curl_exec($ch);
> > 		curl_close($ch);
> > 		return $file;
> > 	}
> > 	function getHTTP($url) {
> > 		//echo "PROXY: ".CONNECTION_PROXY.":".CONNECTION_PORT.",
> > NON_PROXY_HOSTS: ".NON_PROXY_HOSTS;
> >
> > 		//Wurde ein Proxy konfiguriert?
> > 		if (CONNECTION_PROXY != "") {
> >
> > 			//Sollte die aufgerufenen URL sich im konfigurierten
> > NON_PROXY_HOSTS-Parameter befinden,
> > 			//wird der Proxy nicht verwendet.
> > 			if (NON_PROXY_HOSTS != "") {
> > 				$nonProxyHosts = explode("|", NON_PROXY_HOSTS);
> >
> > 				foreach ($nonProxyHosts as $host) {
> > 					if (strstr($url, $host)) {
> > 						return file_get_contents($url);
> > 					}
> > 				}
> > 			}
> >
> > 			//Also doch ueber den Proxy...
> > 			$aContext = array (
> > 				'http' => array (
> > 					'proxy' => 'tcp://' . CONNECTION_PROXY . ':' . CONNECTION_PORT
> > 				),
> >
> >
> > 			);
> > 			$cxContext = stream_context_create($aContext);
> >
> > 			return file_get_contents($url, False, $cxContext);
> >
> > 		} else {
> > 			return file_get_contents($url);
> > 		}
> >
> > 		//return file_get_contents($url);
> > 		/*$aContext = array(
> > 				'http' => array(
> > 				'proxy' => 'tcp://195.90.13.22:3128'), // This needs to be the server
> > and the port of the NTLM Authentication Proxy Server.
> > 			);
> > 		$cxContext = stream_context_create($aContext);
> >
> > 		if(strstr($url, 'localhost'))
> > 			return file_get_contents($url);
> > 			else
> > 			return file_get_contents($url, False, $cxContext);*/
> > 	}
> > 	function getSOCKET($url) {
> > 		$r = "";
> > 		$fp = fsockopen(CONNECTION_PROXY, CONNECTION_PORT, $errno, $errstr,
> > 30); if (!$fp) {
> > 			echo "$errstr ($errno)<br />\n";
> > 		} else {
> > 			fputs($fp, "GET " . $url . " HTTP/1.0\r\n\r\n");
> > 			while (!feof($fp)) {
> > 				$r .= fgets($fp, 4096);
> > 			}
> > 			fclose($fp);
> > 			return $r;
> > 		}
> > 	}
> > }
> > ?>
> >
> >
> > ----
> > Und die beispielhaften Eintraege in der mapbender.conf:
> >
> > define("CONNECTION_PROXY", "proxy_server_ip");
> > define("CONNECTION_PORT", "3128");
> > define("CONNECTION_USER", "");
> > define("CONNECTION_PASSWORD", "");
> > define("NON_PROXY_HOSTS","localhost|janeway");
> >
> > Bitte achte auf Groß- und Kleinschreibung...



-- 
Im Auftrag
--
Armin Retterath

Kompetenz- und Geschäftsstelle Geodateninfrastruktur Rheinland-Pfalz
beim
Landesamt für Vermessung und Geobasisinformation Rheinland-Pfalz

Ferdinand-Sauerbruch-Straße 15
56073 Koblenz
Telefon 0261/492-466
Telefax 0261/492-492
armin.retterath at lvermgeo.rlp.de
http://www.geoportal.rlp.de


More information about the Mapbender_users mailing list