FriendsOfREDAXO / geolocation

Tile-Proxy/Cache und Kartendarstellung mit Leaflet für REDAXO 5.13+
MIT License
26 stars 3 forks source link

Use socket_proxy if set #129

Closed debagel closed 1 year ago

debagel commented 1 year ago

Use socket_proxy setting for curl request to enable using a proxy for fetching map tiles

christophboecker commented 1 year ago

Ich hätte da durchaus noch Fragen :-)

Wofür ist das gut? Geolocation ist doch schon der Proxy?

Und warum nicht mit einem ExtensionPoint gelöst? Denn das ist der Redaxo-übliche Weg.

skerbis commented 1 year ago

@christophboecker @debagel mein Fehler. Bitte PR neu einreichen. Ich habe zu voreilig gemergt und daher reverted. @christophboecker die Option ist ggf. interessant, möchte man die requests über einen eigenen Proxy leiten oder diesen umgehen.

debagel commented 1 year ago

@christophboecker Genau, wie @skerbis oben schreibt habe ich hier einen Server der Verbindungen ins Internet nur über einen Proxy zulässt, z.B. auch für den Addon Installer.

Der in den Settings gesetzte "socket_proxy" muss bei mir auch in Geolocation verwendet werden um die Maptiles vom Kartenserver holen zu können. Deshalb hatte ich das bei den curl-Aufrufen ergänzt. Hast du einen Hinweis wie ich das per ExtensionPoint löse? Davon habe ich bisher keine Ahnung.

skerbis commented 1 year ago

den Weg über die Property oder Config finde ich persönlich besser da ein EP sicher mehr Rechenzeit benötigt.Wobei man hier noch überlegen könnte von Curl auf rex_socket zu wechseln.

christophboecker commented 1 year ago

@debagel

Hast du einen Hinweis wie ich das per ExtensionPoint löse?

z.B. so ähnlich:

$ch = curl_init($url);
....
$ch  = \rex_extension::registerPoint(new \rex_extension_point(
    'GEOLOCATION_PROXY',
    $ch,
    []
));
....

Und dann belegen mit

$proxy = ...;
\rex_extension::register(
    'GEOLOCATION_PROXY', 
    static function( \rex_extension_point $ep ){
        $ch = $ep->getSubject;
        curl_setopt($ch, CURLOPT_PROXY, $ep->getParam('proxy');
    },
    rex_extension::NORMAL,
    ['proxy' => $proxy]

ungetestet.

christophboecker commented 1 year ago

... da ein EP sicher mehr Rechenzeit benötigt

Angesichts des Gesamt-Overhead, den das Laden der Redaxo-Instanz verursacht, würde ich die wenigen Zeilen Code (die Klassen sind ja eh geladen und initialisiert) als irrelevant vermuten.

noch überlegen könnte von Curl auf rex_socket zu wechseln

na ja, die Curl-Sachen stammen ja ursprünglich aus Deinem geo_osm-Addon. Ich kenne mich damit nicht wirklich aus.

Es ist "Dein" Addon, Thomas. Du entscheidest.

skerbis commented 1 year ago

@christophboecker ok .. dann schaue ich mal