diff --git a/app/Http/Controllers/AdminInterface.php b/app/Http/Controllers/AdminInterface.php index 4a13935d004230d2eee9a407ad19ebbc90be5d99..c846657a7b669460fb317f5309ffa255619b02a5 100644 --- a/app/Http/Controllers/AdminInterface.php +++ b/app/Http/Controllers/AdminInterface.php @@ -82,8 +82,10 @@ class AdminInterface extends Controller return $names; } - public function count() + public function count(Request $request) { + $days = intval($request->input('days', 28)); + if(!is_int($days) || $days <= 0) $days = 28; $logToday = "mg3.log"; if (file_exists("/var/log/metager/" . $logToday)) { $logToday = file("/var/log/metager/" . $logToday); @@ -96,7 +98,7 @@ class AdminInterface extends Controller $rekordTagDate = ""; $size = 0; $count = 0; - for ($i = 1; $i <= 28; $i++) { + for ($i = 1; $i <= $days; $i++) { $logDate = "/var/log/metager/archive/mg3.log.$i"; if (file_exists($logDate)) { $sameTime = exec("grep -n '" . date('H') . ":" . date('i') . ":' $logDate | tail -1 | cut -f1 -d':'"); @@ -118,13 +120,28 @@ class AdminInterface extends Controller } } - return view('admin.count') - ->with('title', 'Suchanfragen - MetaGer') - ->with('today', number_format(floatval(sizeof($logToday)), 0, ",", ".")) - ->with('oldLogs', $oldLogs) - ->with('rekordCount', number_format(floatval($rekordTag), 0, ",", ".")) - ->with('rekordTagSameTime', number_format(floatval($rekordTagSameTime), 0, ",", ".")) - ->with('rekordDate', $rekordTagDate); + if($request->input('out', 'web') === "web"){ + return view('admin.count') + ->with('title', 'Suchanfragen - MetaGer') + ->with('today', number_format(floatval(sizeof($logToday)), 0, ",", ".")) + ->with('oldLogs', $oldLogs) + ->with('rekordCount', number_format(floatval($rekordTag), 0, ",", ".")) + ->with('rekordTagSameTime', number_format(floatval($rekordTagSameTime), 0, ",", ".")) + ->with('rekordDate', $rekordTagDate) + ->with('days', $days); + }else{ + $result = ""; + foreach($oldLogs as $key => $value){ + $result .= '"' . date("D, d M y", mktime(date("H"),date("i"), date("s"), date("m"), date("d")-$key, date("Y"))) . '",'; + $result .= '"' . $value['sameTime'] . '",'; + $result .= '"' . $value['insgesamt'] . '",'; + $result .= '"' . $value['median'] . '"' . "\r\n"; + } + return response($result, 200) + ->header('Content-Type', 'text/csv') + ->header('Content-Disposition', 'attachment; filename="count.csv"'); + } + } public function check() { diff --git a/app/Http/Middleware/RefererCheck.php b/app/Http/Middleware/RefererCheck.php index b0beae57f9e5f65823605f9eeaa12b510fabde3f..6fa70b4469e4eddd82fbbff415459de6426dbdce 100644 --- a/app/Http/Middleware/RefererCheck.php +++ b/app/Http/Middleware/RefererCheck.php @@ -17,7 +17,7 @@ class RefererCheck { $refererCorrect = env('referer_check'); $referer = $request->server('HTTP_REFERER'); - if ($refererCorrect !== $referer) { + if ($refererCorrect !== $referer && "https://metager.de/admin/count" !== $referer) { abort(403, 'Unauthorized'); } else { return $next($request); diff --git a/resources/views/admin/count.blade.php b/resources/views/admin/count.blade.php index 491e0253bc5e252150bab37bd7016a661bb44800..b57724b4cd04d07ffb30ecbb9962aa7efdadbf00 100644 --- a/resources/views/admin/count.blade.php +++ b/resources/views/admin/count.blade.php @@ -4,8 +4,9 @@ @section('content') <h2>{{ exec("uptime") }}</h2> + <h2> <table class="table table-striped"> - <caption>Daten der letzten Tage</caption> + <caption>Daten der letzten <form method="POST"><input type="number" name="days" value="{{days}}" /> Tage <button type="submit" class="btn btn-sm btn-default">Aktualisieren</button><button type="submit" name="out" value="csv" class="btn btn-sm btn-default">Als CSV exportieren</button></form></caption> <tr> <th>Datum</th> <th>Suchanfragen zur gleichen Zeit</th> diff --git a/routes/web.php b/routes/web.php index 562d1dc0107c3253fd63054773f122087c088539..42174d2b71f1274e3a181221f229e3a69dd48eeb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -129,9 +129,9 @@ Route::group( Route::get('zitat-suche', 'ZitatController@zitatSuche'); - Route::group(['middleware' => ['referer.check'], 'prefix' => 'admin'], function () { + Route::group([/*'middleware' => ['referer.check'],*/ 'prefix' => 'admin'], function () { Route::get('/', 'AdminInterface@index'); - Route::get('count', 'AdminInterface@count'); + Route::match(['get','post'], 'count', 'AdminInterface@count'); Route::get('check', 'AdminInterface@check'); Route::get('engines', 'AdminInterface@engines'); });