diff --git a/app/Console/Commands/SpamAvCollectCommand.php b/app/Console/Commands/SpamAvCollectCommand.php index 38b5614..14e4a32 100644 --- a/app/Console/Commands/SpamAvCollectCommand.php +++ b/app/Console/Commands/SpamAvCollectCommand.php @@ -39,14 +39,27 @@ class SpamAvCollectCommand extends Command $rspamdVer = trim(@shell_exec("dpkg-query -W -f='\${Version}\n' rspamd 2>/dev/null") ?? '–'); } +// $clamLine = trim(@shell_exec('clamd --version 2>/dev/null || clamscan --version 2>/dev/null') ?? '') ?: '–'; +// $clamVer = $clamLine; +// +// // Versuch, Datum aus der Versionzeile zu ziehen (kein Zugriff auf freshclam.log nötig) +// $sigUpdated = null; +// if (preg_match('#/([^/]+ [0-9]{2} [0-9:]{8} [0-9]{4})$#', $clamLine, $m)) { +// $sigUpdated = $m[1]; // z.B. "Sun Oct 26 09:42:43 2025" +// } + // --- CLAMAV: Versionzeile inkl. Signaturdatum ausgeben --- $clamLine = trim(@shell_exec('clamd --version 2>/dev/null || clamscan --version 2>/dev/null') ?? '') ?: '–'; - $clamVer = $clamLine; - // Versuch, Datum aus der Versionzeile zu ziehen (kein Zugriff auf freshclam.log nötig) + $parts = explode('/', $clamLine, 3); + $clamVer = $parts[0] ?? 'ClamAV'; + if (isset($parts[1])) { + $clamVer .= ' ' . $parts[1]; + } + $sigUpdated = null; - if (preg_match('#/([^/]+ [0-9]{2} [0-9:]{8} [0-9]{4})$#', $clamLine, $m)) { - $sigUpdated = $m[1]; // z.B. "Sun Oct 26 09:42:43 2025" + if (isset($parts[2])) { + $sigUpdated = trim($parts[2]); } else { // Fallback: journalctl (falls Gruppe adm) $jl = trim(@shell_exec('journalctl -u freshclam -n 50 --no-pager 2>/dev/null | grep -i "Database updated" | tail -n1') ?? ''); @@ -64,7 +77,7 @@ class SpamAvCollectCommand extends Command ]; Setting::set('spamav.metrics', $data); - Cache::put('dash.spamav', $data, 60); + Cache::put('dash.spamav', $data, now()->addMinutes(10)); $this->info(sprintf( 'ham=%d spam=%d reject=%d | rspamd=%s | clam=%s', diff --git a/routes/console.php b/routes/console.php index d49dff7..84d121d 100644 --- a/routes/console.php +++ b/routes/console.php @@ -11,6 +11,7 @@ Artisan::command('inspire', function () { Schedule::job(RunHealthChecks::class)->everyFiveMinutes()->withoutOverlapping(); Schedule::command('spamav:collect')->everyFiveMinutes()->withoutOverlapping(); +//Schedule::command('woltguard:collect-services')->everyMinute(); //Schedule::command('mailwolt:check-updates')->dailyAt('04:10'); Schedule::command('mailwolt:check-updates')->everytwoMinutes();