diff --git a/app/Console/Commands/AppendLogs.php b/app/Console/Commands/AppendLogs.php index 7049e06a6777901d7272abf7090394744667a413..5042aca3d9e3bb255c301e849ade2a8cb179c75b 100644 --- a/app/Console/Commands/AppendLogs.php +++ b/app/Console/Commands/AppendLogs.php @@ -16,6 +16,7 @@ class AppendLogs extends Command */ protected $signature = 'logs:gather'; const LOGKEY = "metager.logs"; + const LOGKEYTAZ = "metager.tazlogs"; /** * The console command description. @@ -41,8 +42,14 @@ class AppendLogs extends Command */ public function handle() { - $redis = null; + $this->handleMGLogs(); + $this->handleTazLogs(); + } + private function handleMGLogs() + { + $redis = null; + if (env("REDIS_CACHE_DRIVER", "redis") === "redis") { $redis = Redis::connection('cache'); } elseif (env("REDIS_CACHE_DRIVER", "redis") === "redis-sentinel") { @@ -64,9 +71,50 @@ class AppendLogs extends Command } if (file_put_contents(\App\MetaGer::getMGLogFile(), implode(PHP_EOL, $elements) . PHP_EOL, FILE_APPEND) === false) { Log::error("Konnte Log Zeile(n) nicht schreiben"); - $redis->lpush(array_reverse($elements)); + $redis->lpush(\App\Console\Commands\AppendLogs::LOGKEY, array_reverse($elements)); } else { Log::info("Added " . sizeof($elements) . " lines to todays log!"); } } + + private function handleTazLogs() + { + $redis = null; + + if (env("REDIS_CACHE_DRIVER", "redis") === "redis") { + $redis = Redis::connection('cache'); + } elseif (env("REDIS_CACHE_DRIVER", "redis") === "redis-sentinel") { + $redis = RedisSentinel::connection('cache'); + } + if ($redis === null) { + Log::error("No valid Redis Connection specified"); + return; + } + + $elements = []; + $reply = $redis->pipeline(function ($pipe) use ($elements) { + $pipe->lrange(\App\Console\Commands\AppendLogs::LOGKEYTAZ, 0, -1); + $pipe->del(\App\Console\Commands\AppendLogs::LOGKEYTAZ); + }); + $elements = $reply[0]; + if (!is_array($elements) || sizeof($elements) <= 0) { + return; + } + if (file_put_contents(\App\Console\Commands\AppendLogs::getTazLogFile(), implode(PHP_EOL, $elements) . PHP_EOL, FILE_APPEND) === false) { + Log::error("Konnte Log Zeile(n) nicht schreiben"); + $redis->lpush(\App\Console\Commands\AppendLogs::LOGKEYTAZ, array_reverse($elements)); + } else { + Log::info("Added " . sizeof($elements) . " lines to todays TAZ log!"); + } + } + + public static function getTazLogFile() + { + $logpath = storage_path("logs/metager/taz/" . date("Y") . "/" . date("m") . "/"); + if (!file_exists($logpath)) { + mkdir($logpath, 0777, true); + } + $logpath .= date("d") . ".log"; + return $logpath; + } } diff --git a/app/Http/Controllers/StartpageController.php b/app/Http/Controllers/StartpageController.php index 05d8c6120e139e432a2ebe96a79d33051fe0588f..28701194d0053d42d01d151f7388d01d41ef747e 100644 --- a/app/Http/Controllers/StartpageController.php +++ b/app/Http/Controllers/StartpageController.php @@ -7,6 +7,7 @@ use Cookie; use Illuminate\Http\Request; use Jenssegers\Agent\Agent; use LaravelLocalization; +use Illuminate\Support\Facades\Redis; use Response; class StartpageController extends Controller @@ -43,6 +44,21 @@ class StartpageController extends Controller $lang = 'all'; } + /** + * Logging Requests from Taz advertisement + */ + if ($request->filled("key") && $request->input("key", "") === "taz") { + $logEntry = date("H:i:s"); + $referer = request()->headers->get('referer'); + $logEntry .= " ref=$referer"; + + if (env("REDIS_CACHE_DRIVER", "redis") === "redis") { + Redis::connection('cache')->rpush(\App\Console\Commands\AppendLogs::LOGKEYTAZ, $logEntry); + } elseif (env("REDIS_CACHE_DRIVER", "redis") === "redis-sentinel") { + RedisSentinel::connection('cache')->rpush(\App\Console\Commands\AppendLogs::LOGKEYTAZ, $logEntry); + } + } + return view('index') ->with('title', trans('titles.index')) ->with('homeIcon')