d651a8b94f
VALIDATION RESULTS from real InterWorx server revealed: InterWorx uses 'transfer.log' NOT 'access_log' for access logs! VERIFIED FINDINGS: • Log location: /home/USER/var/DOMAIN/logs/ ✓ CORRECT • Access log name: transfer.log (NOT access_log) ✓ FIXED • Error log name: error.log ✓ CORRECT • Logs are symlinks to dated files (transfer-2025-11-20.log) • Older logs automatically zipped UPDATED MODULES (9 files): 1. modules/security/tail-apache-access.sh 2. modules/security/web-traffic-monitor.sh 3. modules/security/bot-analyzer.sh (3 locations) 4. modules/security/malware-scanner.sh 5. modules/security/live-attack-monitor.sh 6. modules/website/website-error-analyzer.sh (3 locations) 7. modules/website/500-error-tracker.sh UPDATED DOCUMENTATION: • REFDB_FORMAT.txt - Added VERIFIED comment • .sysref - Updated PATH|interworx|access_log ALL REFERENCES CHANGED: • find /home/*/var/*/logs -name "access_log" → "transfer.log" • /home/USER/var/DOMAIN/logs/access_log → transfer.log This was discovered by running validate-interworx.sh on real server: Server: interworx-3rdshift.raptorburn.com InterWorx Version: 6.14.5 Test Date: 2025-11-20 All modules now use correct log file names for InterWorx!
55 lines
2.1 KiB
Bash
Executable File
55 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
source "$SCRIPT_DIR/lib/common-functions.sh"
|
|
source "$SCRIPT_DIR/lib/system-detect.sh"
|
|
|
|
print_banner "Web Traffic Monitor - Multi-Panel Support"
|
|
echo ""
|
|
echo "Monitoring Apache access logs in real-time..."
|
|
echo "Control Panel: ${SYS_CONTROL_PANEL}"
|
|
echo "Press Ctrl+C to exit"
|
|
echo ""
|
|
|
|
# Multi-panel log discovery
|
|
log_files=""
|
|
if [ "$SYS_CONTROL_PANEL" = "interworx" ]; then
|
|
# InterWorx: Monitor recent access logs (uses 'transfer.log', limit for performance)
|
|
log_files=$(find /home/*/var/*/logs -type f -name "transfer.log" -mmin -60 2>/dev/null | head -10)
|
|
elif [ "$SYS_CONTROL_PANEL" = "plesk" ]; then
|
|
# Plesk: System logs
|
|
log_files=$(find /var/www/vhosts/system/*/logs -type f -name "access_log" -o -name "access_ssl_log" 2>/dev/null | head -10)
|
|
elif [ -n "$SYS_LOG_DIR" ] && [ -d "$SYS_LOG_DIR" ]; then
|
|
# cPanel: Use detected log directory
|
|
log_files=$(find "$SYS_LOG_DIR" -type f ! -name "*-bytes_log" ! -name "*error_log" 2>/dev/null)
|
|
else
|
|
# Standalone: Try common locations
|
|
[ -f "/var/log/httpd/access_log" ] && log_files="/var/log/httpd/access_log"
|
|
[ -f "/var/log/apache2/access.log" ] && log_files="$log_files /var/log/apache2/access.log"
|
|
fi
|
|
|
|
if [ -n "$log_files" ]; then
|
|
tail -f $log_files 2>/dev/null | while read line; do
|
|
ip=$(echo "$line" | awk '{print $1}')
|
|
request=$(echo "$line" | awk '{print $6, $7}' | tr -d '"')
|
|
status=$(echo "$line" | awk '{print $9}')
|
|
|
|
# Color code by status
|
|
if [[ "$status" =~ ^5 ]]; then
|
|
color="\033[1;31m" # Red for 5xx
|
|
elif [[ "$status" =~ ^4 ]]; then
|
|
color="\033[1;33m" # Yellow for 4xx
|
|
elif [[ "$status" =~ ^2 ]]; then
|
|
color="\033[0;32m" # Green for 2xx
|
|
else
|
|
color="\033[0;37m" # White for others
|
|
fi
|
|
|
|
printf "${color}%-15s %s %s\033[0m\n" "$ip" "$status" "$request"
|
|
done
|
|
else
|
|
print_error "No Apache access logs found"
|
|
echo "Control panel: $SYS_CONTROL_PANEL"
|
|
echo "Log directory: $SYS_LOG_DIR"
|
|
exit 1
|
|
fi
|