diff --git a/modules/performance/network-bandwidth-analyzer.sh b/modules/performance/network-bandwidth-analyzer.sh index 27b76d7..8683538 100755 --- a/modules/performance/network-bandwidth-analyzer.sh +++ b/modules/performance/network-bandwidth-analyzer.sh @@ -182,19 +182,27 @@ This is significantly higher than typical usage" \ analyze_web_traffic() { echo -e "${CYAN}[INFO]${NC} Analyzing web server traffic patterns..." - # Find Apache log directory + # Multi-panel log directory discovery local log_dir="" - if [ -d "/var/log/apache2/domlogs" ]; then - log_dir="/var/log/apache2/domlogs" - elif [ -d "/etc/apache2/logs/domlogs" ]; then - log_dir="/etc/apache2/logs/domlogs" + if [ "$SYS_CONTROL_PANEL" = "interworx" ]; then + # InterWorx: Multiple log locations (use first user's logs as sample) + log_dir=$(find /home/*/var/*/logs -type d 2>/dev/null | head -1) + elif [ "$SYS_CONTROL_PANEL" = "plesk" ]; then + # Plesk: System logs + log_dir="/var/www/vhosts/system" + elif [ -n "$SYS_LOG_DIR" ] && [ -d "$SYS_LOG_DIR" ]; then + # cPanel or detected log directory + log_dir="$SYS_LOG_DIR" elif [ -d "/var/log/httpd" ]; then + # Standalone fallback log_dir="/var/log/httpd" + elif [ -d "/var/log/apache2" ]; then + log_dir="/var/log/apache2" fi if [ -z "$log_dir" ] || [ ! -d "$log_dir" ]; then add_finding "INFO" "Web Server Logs Not Found" \ - "Could not locate Apache/web server logs" \ + "Could not locate Apache/web server logs (Panel: $SYS_CONTROL_PANEL)" \ "Web traffic analysis requires Apache logs" return fi diff --git a/modules/security/tail-apache-access.sh b/modules/security/tail-apache-access.sh index 5d23543..fc26780 100755 --- a/modules/security/tail-apache-access.sh +++ b/modules/security/tail-apache-access.sh @@ -1,8 +1,33 @@ #!/bin/bash SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" source "$SCRIPT_DIR/lib/common-functions.sh" -print_banner "Apache Access Log" +source "$SCRIPT_DIR/lib/system-detect.sh" + +print_banner "Apache Access Log - Multi-Panel Support" echo "Tailing Apache access logs..." +echo "Control Panel: ${SYS_CONTROL_PANEL}" echo "Press Ctrl+C to exit" echo "" -[ -d "/var/log/apache2/domlogs" ] && tail -f /var/log/apache2/domlogs/* || echo "No access logs found" + +# Multi-panel log discovery +if [ "$SYS_CONTROL_PANEL" = "interworx" ]; then + # InterWorx: Per-domain logs in user home + log_files=$(find /home/*/var/*/logs -type f -name "access_log" 2>/dev/null) +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) +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 + log_files="/var/log/httpd/access_log /var/log/apache2/access.log" +fi + +if [ -n "$log_files" ]; then + tail -f $log_files 2>/dev/null +else + print_error "No access logs found" + echo "Searched: $SYS_LOG_DIR (control panel: $SYS_CONTROL_PANEL)" + exit 1 +fi diff --git a/modules/security/tail-apache-error.sh b/modules/security/tail-apache-error.sh index f58ec61..399be4f 100755 --- a/modules/security/tail-apache-error.sh +++ b/modules/security/tail-apache-error.sh @@ -1,8 +1,36 @@ #!/bin/bash SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" source "$SCRIPT_DIR/lib/common-functions.sh" -print_banner "Apache Error Log" +source "$SCRIPT_DIR/lib/system-detect.sh" + +print_banner "Apache Error Log - Multi-Panel Support" echo "Tailing Apache error logs..." +echo "Control Panel: ${SYS_CONTROL_PANEL}" echo "Press Ctrl+C to exit" echo "" -tail -f /var/log/apache2/error_log 2>/dev/null || tail -f /var/log/httpd/error_log 2>/dev/null || echo "No error logs found" + +# Multi-panel error log discovery +if [ "$SYS_CONTROL_PANEL" = "interworx" ]; then + # InterWorx: Per-domain error logs in user home + log_files=$(find /home/*/var/*/logs -type f -name "error_log" 2>/dev/null) +elif [ "$SYS_CONTROL_PANEL" = "plesk" ]; then + # Plesk: System logs + log_files=$(find /var/www/vhosts/system/*/logs -type f -name "error_log" 2>/dev/null) +elif [ "$SYS_CONTROL_PANEL" = "cpanel" ]; then + # cPanel: Per-domain error logs in domlogs + log_files=$(find "$SYS_LOG_DIR" -type f -name "*-error_log" 2>/dev/null) +else + # Standalone: Try common main error log locations + log_files="" + [ -f "/var/log/apache2/error_log" ] && log_files="/var/log/apache2/error_log" + [ -f "/var/log/httpd/error_log" ] && log_files="$log_files /var/log/httpd/error_log" + [ -f "/var/log/apache2/error.log" ] && log_files="$log_files /var/log/apache2/error.log" +fi + +if [ -n "$log_files" ]; then + tail -f $log_files 2>/dev/null +else + print_error "No error logs found" + echo "Searched for logs in control panel: $SYS_CONTROL_PANEL" + exit 1 +fi diff --git a/modules/security/web-traffic-monitor.sh b/modules/security/web-traffic-monitor.sh index 795326d..d5117f7 100755 --- a/modules/security/web-traffic-monitor.sh +++ b/modules/security/web-traffic-monitor.sh @@ -1,20 +1,38 @@ #!/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" +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 "" -# Find apache log directory -if [ -d "/var/log/apache2/domlogs" ]; then - tail -f /var/log/apache2/domlogs/* 2>/dev/null | while read line; do +# Multi-panel log discovery +log_files="" +if [ "$SYS_CONTROL_PANEL" = "interworx" ]; then + # InterWorx: Monitor recent access logs (limit for performance) + log_files=$(find /home/*/var/*/logs -type f -name "access_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 @@ -25,9 +43,12 @@ if [ -d "/var/log/apache2/domlogs" ]; then else color="\033[0;37m" # White for others fi - + printf "${color}%-15s %s %s\033[0m\n" "$ip" "$status" "$request" done else - print_error "Apache domlogs directory not found" + print_error "No Apache access logs found" + echo "Control panel: $SYS_CONTROL_PANEL" + echo "Log directory: $SYS_LOG_DIR" + exit 1 fi