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:
+35
-3
@@ -549,9 +549,41 @@ build_wordpress_section() {
|
|||||||
build_logs_section() {
|
build_logs_section() {
|
||||||
echo "[LOGS]" >> "$SYSREF_DB"
|
echo "[LOGS]" >> "$SYSREF_DB"
|
||||||
|
|
||||||
# Apache/Web server logs
|
# Control panel-specific log discovery
|
||||||
# Temporarily disabled - causes hangs with large log directories
|
case "$SYS_CONTROL_PANEL" in
|
||||||
# TODO: Implement log scanning with progress indicator and limits
|
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"
|
echo "" >> "$SYSREF_DB"
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-1
@@ -251,7 +251,8 @@ get_user_domains() {
|
|||||||
get_interworx_user_domains "$username"
|
get_interworx_user_domains "$username"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo ""
|
# Standalone server - try to find domains
|
||||||
|
get_standalone_user_domains "$username"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@@ -313,6 +314,37 @@ get_interworx_user_domains() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_standalone_user_domains() {
|
||||||
|
[ -z "$1" ] && return 1
|
||||||
|
local username="$1"
|
||||||
|
local home_dir="/home/${username}"
|
||||||
|
|
||||||
|
# Only process if home directory exists
|
||||||
|
[ ! -d "$home_dir" ] && return 0
|
||||||
|
|
||||||
|
# Method 1: Parse Apache VirtualHost configs for ServerName matching user
|
||||||
|
if [ -d "/etc/apache2/sites-enabled" ]; then
|
||||||
|
grep -h "ServerName\|ServerAlias" /etc/apache2/sites-enabled/*.conf 2>/dev/null | \
|
||||||
|
awk '{print $2}' | sort -u
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Method 2: Parse RHEL-style Apache configs
|
||||||
|
if [ -d "/etc/httpd/conf.d" ]; then
|
||||||
|
grep -h "ServerName\|ServerAlias" /etc/httpd/conf.d/*.conf 2>/dev/null | \
|
||||||
|
awk '{print $2}' | sort -u
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Method 3: Check for domain directories in user's home (common structure: ~/domain.com/public_html)
|
||||||
|
if [ -d "$home_dir" ]; then
|
||||||
|
find "$home_dir" -maxdepth 2 -name "public_html" -o -name "html" 2>/dev/null | \
|
||||||
|
sed "s|${home_dir}/||; s|/public_html$||; s|/html$||" | \
|
||||||
|
grep -v "^$" | sort -u
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
# USER DATABASES
|
# USER DATABASES
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user