IMPLEMENT: Standalone server domain and log discovery

FEATURE: Domain Discovery for Standalone Servers
- Added get_standalone_user_domains() function
- Parses Apache VirtualHost configs (/etc/apache2, /etc/httpd)
- Falls back to checking domain directories in user home
- Returns sorted list of unique domains

FEATURE: Log Discovery Implementation
- Implemented build_logs_section() for log file discovery
- Standalone: Find access/error logs in log directory
- Nginx support: Find logs in /var/log/nginx
- Safety limits: 30-day files, max 50 per type, max depth 2
- Prevents hangs on large log directories

BENEFITS:
 Standalone servers now discover domains
 Standalone servers now discover logs
 malware-scanner can now run on standalone
 website-error-analyzer can now run on standalone
 live-attack-monitor can now run on standalone
 log-tailing tools now work

SAFETY:
- Limited to recent files (mtime -30)
- Limited search depth (maxdepth 1-2)
- Limited result count (head 50)
- No regex hangs from large directory scans
This commit is contained in:
Developer
2026-03-19 21:24:48 -04:00
parent 551e32444c
commit a2e8ad584b
2 changed files with 68 additions and 4 deletions
+35 -3
View File
@@ -549,9 +549,41 @@ build_wordpress_section() {
build_logs_section() {
echo "[LOGS]" >> "$SYSREF_DB"
# Apache/Web server logs
# Temporarily disabled - causes hangs with large log directories
# TODO: Implement log scanning with progress indicator and limits
# Control panel-specific log discovery
case "$SYS_CONTROL_PANEL" in
cpanel)
# cPanel access and error logs
find "$SYS_LOG_DIR" -name "*.log" -o -name "access_log" -o -name "error_log" 2>/dev/null | \
head -100 | while IFS= read -r logfile; do
echo "LOG|file|$logfile|" >> "$SYSREF_DB"
done
;;
*)
# Standalone server - find Apache/Nginx logs safely
# Limit to recent logs and prevent hangs with large directories
if [ -d "$SYS_LOG_DIR" ]; then
# Apache access logs (with safety limits)
find "$SYS_LOG_DIR" -maxdepth 2 \( -name "*access*" -o -name "*access_log*" \) -type f -mtime -30 2>/dev/null | \
head -50 | while IFS= read -r logfile; do
[ -n "$logfile" ] && echo "LOG|access|$logfile|" >> "$SYSREF_DB"
done
# Apache error logs (with safety limits)
find "$SYS_LOG_DIR" -maxdepth 2 \( -name "*error*" -o -name "*error_log*" \) -type f -mtime -30 2>/dev/null | \
head -50 | while IFS= read -r logfile; do
[ -n "$logfile" ] && echo "LOG|error|$logfile|" >> "$SYSREF_DB"
done
fi
# Nginx logs for standalone
if [ -d "/var/log/nginx" ]; then
find /var/log/nginx -maxdepth 1 -type f -mtime -30 2>/dev/null | \
head -20 | while IFS= read -r logfile; do
[ -n "$logfile" ] && echo "LOG|nginx|$logfile|" >> "$SYSREF_DB"
done
fi
;;
esac
echo "" >> "$SYSREF_DB"
}