Closed cukabeka closed 6 years ago
Danke für den PR. Ich verstehe nur nicht, wieso du nicht rex_socket dafür genutzt hast? Sockets haben den Vorteil, das diese auf jedem Server funktionieren. file_get_contents() auf externe URLs ist auf vielen Webspaces gesperrt. CURL nicht immer installiert In der Form würde ich das nicht mergen, bitte baue es auf die Redaxo interne Socket-Class um.
rex_socket behandelt keine HTTP-Redirects (z.B. Status 302 etc.) sehe ich das richtig?
Habe mir den Quellcode nicht angeschaut. Wenn file_get_contents() ein Problem darstellt, warum nicht mit Curl. Curl sollte auf den meisten Systemen zur Verfügung stehen.
// Funktion die file_get_contents mit curl ersetzt
function curl_file_get_contents($url) {
$curly = curl_init();
curl_setopt($curly, CURLOPT_HEADER, 0);
curl_setopt($curly, CURLOPT_RETURNTRANSFER, 1); //Return Data
curl_setopt($curly, CURLOPT_URL, $url);
$content = curl_exec($curly);
curl_close($curly);
return $content;
}
Aus Slack, ungetestet:
$response = $files_socket->doGet();
$redircount = 0;
while ($response->isRedirection() && $redircount < 3) {
$scanurl = $response->getHeader('location');
$files_socket = rex_socket::factoryURL($scanurl);
$response = $files_socket->doGet();
$redircount++;
}
@cukabeka @stefan-beyer bitte dann auf rex_socket umbauen und den redirect-case 301/302 einfach mittels der einfachen while-schleife abdecken, dann ist der PR top und wird sofort gemerged & released.
Wichtiger Hinweis noch von @gharlan
Wobei man dann den Host voran setzen müsste, der ursprungsurl, die man abruft.
Sprich an $scanurl wäre noch ein Host zu hängen, da es bei nem internen 302 z.B. auch nur "/pfad" geben könnte.
So in der Art macht es search_it: (jedoch für Redaxointerne URLs)
if (strpos($scanurl,'//') === false ) {
$scanurl = rtrim($host, "/") . '/' . ltrim(str_replace(array('../', './'), '', $scanurl), "/");
}
Ich habe auf rex_socket umgebaut. Danke für die schnellen Hinweise!
bitte mergen.
mach ich nach meinen tests
Ping.. ;)
Thx an alle. Paket muss noch geschnürt und hochgeladen werden
Endlich Github-Projekte direkt via ZIP-URL installieren.
Viel Spaß beim Addons ausprobieren :)