diff --git a/app/Console/Commands/CheckUpdates.php b/app/Console/Commands/CheckUpdates.php index 4b3d8ba..8e54350 100644 --- a/app/Console/Commands/CheckUpdates.php +++ b/app/Console/Commands/CheckUpdates.php @@ -24,10 +24,14 @@ class CheckUpdates extends Command $updateBin = '/usr/local/sbin/mailwolt-update'; $fetchHelper = '/usr/local/sbin/mailwolt-fetch-tags'; + // Beide versuchen — --check-only schreibt version_remote, fetch-tags als Fallback + $fetched = false; if (file_exists($updateBin) && str_contains((string) @file_get_contents($updateBin), '--check-only')) { - shell_exec('sudo -n ' . escapeshellarg($updateBin) . ' --check-only 2>/dev/null'); - } elseif (file_exists($fetchHelper)) { - shell_exec('sudo -n ' . escapeshellarg($fetchHelper) . ' 2>/dev/null'); + $result = @shell_exec('sudo -n ' . escapeshellarg($updateBin) . ' --check-only 2>/dev/null'); + $fetched = ($result !== null); + } + if (!$fetched && file_exists($fetchHelper)) { + @shell_exec('sudo -n ' . escapeshellarg($fetchHelper) . ' 2>/dev/null'); } // Version_remote wurde von einem der Helfer geschrieben; frisch genug wenn < 2h alt diff --git a/scripts/update.sh b/scripts/update.sh index 2863513..a266423 100644 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -166,8 +166,17 @@ ensure_system(){ # Sudoers-Regeln nachrüsten for f in /etc/sudoers.d/mailwolt-certbot /etc/sudoers.d/mailwolt-dkim; do _sudoers_add "$f" 'www-data ALL=(root) NOPASSWD: /usr/local/sbin/mailwolt-fetch-tags' + _sudoers_add "$f" 'www-data ALL=(root) NOPASSWD: /usr/local/sbin/mailwolt-update --check-only' _sudoers_add "$f" 'www-data ALL=(root) NOPASSWD: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/*/fullchain.pem' done + # Laravel Scheduler cron (schedule:run muss jede Minute laufen) + local cron_file="/etc/cron.d/mailwolt" + local cron_line="* * * * * www-data php ${APP_DIR}/artisan schedule:run >> /dev/null 2>&1" + if ! grep -qF "artisan schedule:run" "${cron_file}" 2>/dev/null; then + printf '%s\n' "${cron_line}" > "${cron_file}" + chmod 644 "${cron_file}" + echo "[✓] Laravel Scheduler cron installiert." + fi } # -------- Guards --------------------------------------------------------------