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

v.botz volker.emmel at lwk-rlp.de
Fri May 29 04:02:40 EDT 2009


juhuu !

jetzt gehts !

die lösung war im endeffekt wieder mal einfach:

wfs mit der ip und nicht mit localhost laden
und die ip dem proxy bekannt geben...

Verbindung ist curl.

ICH DANKE EUCH !

Gruß v.botz




Armin Retterath wrote:
> 
> 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
> _______________________________________________
> Mapbender_users mailing list
> Mapbender_users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapbender_users
> 
> 

-- 
View this message in context: http://n2.nabble.com/Connection-%3D-CURL----Frage-zu-Einstellungen-tp2974212p2992604.html
Sent from the mapbender-users mailing list archive at Nabble.com.



More information about the Mapbender_users mailing list