Commit 562fb3e1 authored by Dominik Hebeler's avatar Dominik Hebeler

Merge branch 'Bugfix' into 'master'

Bugfix



See merge request !68
parents 655a0c75 1ffca2be
......@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Response;
class StartpageController extends Controller
{
......@@ -64,4 +65,35 @@ class StartpageController extends Controller
\App::setLocale($locale);
return loadPage($subpage);
}
public function loadPlugin(Request $request, $locale = "de")
{
$requests = $request->all();
$params = [];
foreach($requests as $key => $value)
{
if( strpos($key, "param_") === 0 )
{
$key = substr($key, strpos($key, "param_") + 6 );
}
$params[$key] = $value;
}
if(!isset($params['focus']))
$params['focus'] = 'web';
if(!isset($params['encoding']))
$params['encoding'] = 'utf8';
if(!isset($params['lang']))
$params['lang'] = 'all';
$params["eingabe"] = "";
$link = action('MetaGerSearch@search', $params);
$response = Response::make(
view('plugin')->with('link', $link), "200");
$response->header('Content-Type', "application/xml");
return $response;
return $link;
}
}
\ No newline at end of file
......@@ -101,4 +101,5 @@
Route::get('qt', 'MetaGerSearch@quicktips');
Route::get('tips', 'MetaGerSearch@tips');
Route::get('opensearch.xml', 'StartpageController@loadPlugin');
});
......@@ -91,7 +91,13 @@ class MetaGer
switch ($this->out)
{
case 'results':
return '';
return view('metager3bilderresults')
->with('results', $viewResults)
->with('eingabe', $this->eingabe)
->with('mobile', $this->mobile)
->with('warnings', $this->warnings)
->with('errors', $this->errors)
->with('metager', $this);
default:
return view('metager3bilder')
->with('results', $viewResults)
......@@ -218,7 +224,6 @@ class MetaGer
#die(SocketRocket::get("tls", "dominik-pfennig.de", "", 443));
# Überprüfe, welche Sumas eingeschaltet sind
$xml = simplexml_load_file($this->sumaFile);
$enabledSearchengines = [];
......@@ -239,12 +244,12 @@ class MetaGer
foreach($sumas as $suma)
{
if($request->has($suma["service"])
|| ( $this->fokus !== "bilder"
&& ($suma["name"]->__toString() === "qualigo"
|| $suma["name"]->__toString() === "similar_product_ads"
|| ( !$overtureEnabled && $suma["name"]->__toString() === "overtureAds" )
)
)
#|| ( $this->fokus !== "bilder"
# && ($suma["name"]->__toString() === "qualigo"
# || $suma["name"]->__toString() === "similar_product_ads"
# || ( !$overtureEnabled && $suma["name"]->__toString() === "overtureAds" )
# )
# )
#|| 1 === 1 #Todo: entfernen
){
......@@ -286,7 +291,7 @@ class MetaGer
}
}
if( ( $this->fokus !== "bilder" && $countSumas <= 0 ) || ( $this->fokus === "bilder" && sizeof($enabledSearchengines) === 0) )
if( $countSumas <= 0 )
{
$this->errors[] = "Achtung: Sie haben in ihren Einstellungen keine Suchmaschine ausgewählt.";
}
......@@ -316,19 +321,48 @@ class MetaGer
$this->sockets[$tmp->name] = $tmp->fp;
}
}
# Nun passiert ein elementarer Schritt.
# Wir warten auf die Antwort der Suchmaschinen, da wir vorher nicht weiter machen können.
# aber natürlich nicht ewig.
# Die Verbindung steht zu diesem Zeitpunkt und auch unsere Request wurde schon gesendet.
# Wir geben der Suchmaschine nun bis zu 500ms Zeit zu antworten.
usleep(500000);
# Jetzt lesen wir alles aus, was da ist und verwerfen den Rest:
foreach($engines as $engine)
$enginesToLoad = count($engines);
$loadedEngines = 0;
$time = 0;
while( true )
{
$engine->retrieveResults();
# Abbruchbedingung
if($time < 500)
{
if($loadedEngines >= $enginesToLoad)
break;
}elseif( $time >= 500 && $time < $this->time)
{
if( ($loadedEngines / ($enginesToLoad * 1.0)) >= 0.8 )
break;
}else
{
break;
}
foreach($engines as $engine)
{
if(!$engine->loaded)
{
$success = $engine->retrieveResults();
if($engine->loaded)
$loadedEngines += 1;
}
}
usleep(50000);
$time += 50;
}
foreach( $engines as $engine )
{
if( !$engine->loaded )
$engine->shutdown();
}
$this->engines = $engines;
}
......@@ -393,7 +427,8 @@ class MetaGer
# Category
$this->category = $request->input('category', '');
# Request Times:
$this->time = $request->input('time', 1);
$this->time = $request->input('time', 1000);
# Page
$this->page = $request->input('page', 1);
# Lang
......@@ -416,12 +451,12 @@ class MetaGer
# Manchmal müssen wir Parameter anpassen um den Sucheinstellungen gerecht zu werden:
if( $request->has('dart') )
{
$this->time = 10;
$this->time = 10000;
$this->warnings[] = "Hinweis: Sie haben Dart-Europe aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 10 Sekunden hochgesetzt.";
}
if( $this->time < 0 || $this->time > 20 )
if( $this->time <= 500 || $this->time > 20000 )
{
$this->time = 1;
$this->time = 1000;
}
if( $request->has('minism') && ( $request->has('fportal') || $request->has('harvest') ) )
{
......@@ -438,7 +473,7 @@ class MetaGer
}
if( $request->has('ebay') )
{
$this->time = 2;
$this->time = 2000;
$this->warnings[] = "Hinweis: Sie haben Ebay aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 2 Sekunden hochgesetzt.";
}
if( App::isLocale("en") )
......
......@@ -19,6 +19,7 @@ abstract class Searchengine
public $ads = [];
public $write_time = 0;
public $connection_time = 0;
public $loaded = false;
function __construct(\SimpleXMLElement $engine, MetaGer $metager)
{
......@@ -231,6 +232,7 @@ abstract class Searchengine
// end of headers
if(sizeof($headers) > 1){
$bodySize = 0;
stream_set_blocking($this->fp, 1);
if( isset($headers["Transfer-Encoding"]) && $headers["Transfer-Encoding"] === "chunked" )
{
$body = $this->readChunked();
......@@ -245,6 +247,10 @@ abstract class Searchengine
{
die("Konnte nicht herausfinden, wie ich die Serverantwort von: " . $this->name . " auslesen soll. Header war: " . print_r($headers));
}
$this->loaded = true;
}else
{
return;
}
Redis::del($this->host . "." . $this->socketNumber);
......@@ -253,7 +259,6 @@ abstract class Searchengine
{
$body = $this->gunzip($body);
}
#print_r($headers);
#print($body);
#print("\r\n". $bodySize);
......@@ -265,6 +270,12 @@ abstract class Searchengine
#exit;
}
public function shutdown()
{
fclose($this->fp);
Redis::del($this->host . "." . $this->socketNumber);
}
private function readBody($length)
{
$theData = '';
......
......@@ -50,7 +50,7 @@ function checkPlugin(){
$("#plugin-modal .modal-header h4").html("MetaGer zum Firefox hinzufügen");
var content = "" +
"<ol>" +
"<li>Klicken Sie <a href=\"javascript:window.external.AddSearchProvider('https://metager.de/plugins/opensearchplugin.xml')\">hier</a> um MetaGer als Suchmaschine hinzuzufügen.</li>" +
"<li>Klicken Sie <a href=\"javascript:window.external.AddSearchProvider($('link[rel=search]').attr('href'))\">hier</a> um MetaGer als Suchmaschine hinzuzufügen.</li>" +
"<li>Setzen Sie einen Haken bei \"Diese als aktuelle Suchmaschine setzen\"</li>" +
"<li>Klicken Sie auf \"Hinzufügen\"</li>" +
"</ol>";
......@@ -59,7 +59,7 @@ function checkPlugin(){
$("#plugin-modal .modal-header h4").html("MetaGer zum Chrome hinzufügen");
var content = "" +
"<ol>" +
"<li>Klicken Sie <a href=\"javascript:window.external.AddSearchProvider('https://metager.de/plugins/opensearchplugin.xml')\" onclick=\"$('#more').removeClass('hidden');\">hier</a>, um MetaGer als Suchmaschine hinzuzufügen" +
"<li>Klicken Sie <a href=\"javascript:window.external.AddSearchProvider($('link[rel=search]').attr('href'))\" onclick=\"$('#more').removeClass('hidden');\">hier</a>, um MetaGer als Suchmaschine hinzuzufügen" +
"<ul id=\"more\" class=\"hidden list-unstyled\">" +
"<li>Klicken Sie im Popup auf OK</li>" +
"<li><small>(Sollte der OK-Knopf deaktiviert sein, ist MetaGer bereits in Ihren Suchmaschinen. Klicken Sie dann auf Abbrechen und fahren mit Schritt 2 fort.)</small></li>" +
......@@ -85,7 +85,7 @@ function checkPlugin(){
$("#plugin-modal .modal-header h4").html("MetaGer zum Internet Explorer hinzufügen");
var content = "" +
"<ol>" +
"<li>Klicken Sie <a href=\"javascript:window.external.addSearchProvider('https://metager.de/plugins/opensearchplugin.xml');\">hier</a>, um MetaGer als Suchmaschine hinzuzufügen" +
"<li>Klicken Sie <a href=\"javascript:window.external.addSearchProvider($('link[rel=search]').attr('href'));\">hier</a>, um MetaGer als Suchmaschine hinzuzufügen" +
"<li>Klicken Sie in Ihrem Browser oben rechts auf Extras (<span class=\"glyphicon glyphicon-cog\"></span>)</li>" +
"<li>Wählen Sie den Menüpunkt \"Add-Ons verwalten\"</li>" +
"<li>Klicken Sie im Bereich Add-On-Typen auf \"Suchanbieter\" und danach im rechten Bereich auf \"MetaGer\"</li>" +
......
......@@ -32,6 +32,10 @@ $(document).ready(function(){
$("#unten").click(function(){
alert("Auf der folgenden Startseite sind Ihre Einstellungen nun einmalig gespeichert. Nach Ihrer ersten Suche sind diese wieder verloren. Wenn Sie diese speichern möchten, können Sie sich allerdings ein Lesezeichnen einrichten.");
});
$("#plugin").click(function(){
$("form").attr('action', '/#plugin-modal');
alert("Ihr Browserplugin mit den persönlichen Sucheinstellungen wurde generiert. Folgen Sie bitte der Anleitung auf der folgenden Seite um es zu installieren. Beachten Sie: Zuvor sollten Sie ein eventuell bereits installiertes MetaGer-Plugin entfernen.");
});
});
function tickOptions(){
......
......@@ -12,7 +12,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<meta rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" title="MetaGer: Sicher suchen &amp; finden, Privatsph&auml;re sch&uuml;tzen" href="https://metager.de/plugins/opensearchplugin.xml" />
<link rel="search" type="application/opensearchdescription+xml" title="MetaGer: Sicher suchen &amp; finden, Privatsph&auml;re sch&uuml;tzen" href="{{ action('StartpageController@loadPlugin', Request::all()) }}">
<link href="/css/bootstrap.css" rel="stylesheet" />
<link href="/css/style.css" rel="stylesheet" />
@if (isset($css))
......
<div id="container">
@foreach($metager->getResults()->items() as $result)
<div class="item">
<div class="img">
<a href="{{ $result->link }}" target="{{ $metager->getTab() }}">
<img src="{{ $metager->getImageProxyLink($result->image) }}" width="150px" alt="Bild nicht gefunden"/>
</a>
</div>
</div>
@endforeach
</div>
<nav class="pager">
{!! $metager->getResults()->links() !!}
</nav>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>MetaGer</ShortName>
<Description>MetaGer: Sicher suchen &amp; finden, Privatsphäre schützen</Description>
<Contact>office@suma-ev.de</Contact>
<Image width="16" height="16" type="image/x-icon">{{ url('/favicon.ico') }}</Image>
<Url type="text/html" template="{{ $link }}{searchTerms}" method="get"></Url>
<InputEncoding>UTF-8</InputEncoding>
</OpenSearchDescription>
\ No newline at end of file
......@@ -247,5 +247,6 @@
<input type="checkbox" name="param_loklak">loklak</label><a class="glyphicon glyphicon-link" target="_blank" href="http://loklak.org/"></a></div></div></div></div>
<input id="unten" type="submit" class="btn btn-primary" value="Startseite f&uuml;r einmalige Nutzung generieren">
<input type="button" class="btn btn-primary hidden" id="save" value="Einstellungen dauerhaft speichern">
<input id="plugin" type="submit" class="btn btn-primary" value="Plugin mit diesen Einstellungen generieren.">
<input type="button" class="btn btn-danger hidden" id="reset" value="Einstellungen Zur&uuml;cksetzen"></form>
@endsection
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment