- Add per-user activity logging to AdminBin: every RESTORE_* action
writes to /var/log/gniza/cpanel-<user>.log with action details and
gniza command output
- New logs.live.cgi CGI with paginated activity list and detail view
- WHM logs.cgi now shows cpanel-*.log files with Owner column and
structured activity entry viewer with expandable command output
- Add Logs nav item to cPanel plugin, update install.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Only show per-run gniza-*.log files in the logs page. Cron wrapper
logs (cron-*.log) are redundant with the structured per-run logs
and just accumulate noise. They remain accessible via direct URL.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add [TYPE:SYSBACKUP] marker to sysbackup log output. The logs page
detects this in the first 5 lines and displays "System" badge instead
of "Backup".
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Scans each log file for [ERROR] and [WARN] markers and displays
a color-coded badge in the logs table.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Runner.pm: extract _validate()/_build_cmd_line(), add run_async() that
forks a detached child via setsid() to run commands in background
- restore.cgi: handle_step4() builds commands array and uses run_async()
instead of blocking synchronous execution, redirects to logs.cgi
- logs.cgi: add auto-refresh JS (10s list view, 5s file view with
auto-scroll) that polls index.cgi?action=status while gniza is running
- index.cgi: add live status card with AJAX polling and JSON endpoint
- Cron/schedule: redirect cron output to /dev/null (gniza has own logs)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WHM styles override <a> tag padding, making anchor-based buttons
larger than native buttons. Using <button> elements everywhere
ensures uniform button sizing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Read-only log viewer with file list (sorted by mtime), per-file viewer
with level-based coloring (ERROR/WARN/INFO/DEBUG), level filter buttons,
cron log truncation (last 500 lines default), and path traversal protection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>