Major performance and storage improvements

- live-attack-monitor.sh: Remove snapshot loading, fix Apache log monitoring, add IP file sync for auto-blocking
- bot-analyzer.sh:
  * Implement gzip compression for large temp files (10-20x space savings)
  * Move temp files from /tmp to toolkit/tmp directory
  * Prevents filling up system /tmp on large servers
- run.sh: Add HISTFILE fallback to prevent crashes when sourced
- user-manager.sh:
  * Initialize TEMP_SESSION_DIR to fix user indexing errors
  * Remove unnecessary temp file I/O for faster user indexing
This commit is contained in:
cschantz
2025-12-03 17:06:31 -05:00
parent 42f5dcd7d9
commit 341df8e91d
+10 -10
View File
@@ -192,7 +192,7 @@ get_interworx_user_info() {
local email=""
if [ -x "/usr/local/interworx/bin/nodeworx.pex" ] && [ -n "$primary_domain" ]; then
email=$(nodeworx -u -n -c Siteworx -a listAccounts 2>/dev/null | \
grep -F "\"domain\" => \"$primary_domain\"" 2>/dev/null | head -1 | \
grep "\"domain\" => \"$primary_domain\"" 2>/dev/null | head -1 | \
grep "\"email\"" 2>/dev/null | head -1 | sed 's/.*=> "\(.*\)".*/\1/')
fi
@@ -251,11 +251,11 @@ get_cpanel_user_domains() {
local username="$1"
# Primary domain (format: domain: user)
grep -F ": ${username}" /etc/trueuserdomains 2>/dev/null | grep "${username}$" 2>/dev/null | cut -d: -f1 || true
grep ": ${username}$" /etc/trueuserdomains 2>/dev/null | cut -d: -f1 || true
# Addon domains
if [ -f "/etc/userdatadomains" ]; then
grep -F "==${username}" /etc/userdatadomains 2>/dev/null | grep "${username}$" 2>/dev/null | cut -d: -f1 || true
grep "==${username}$" /etc/userdatadomains 2>/dev/null | cut -d: -f1 || true
fi
}
@@ -314,7 +314,7 @@ get_cpanel_user_databases() {
local username="$1"
# cPanel databases typically follow pattern: username_dbname
mysql -e "SHOW DATABASES" 2>/dev/null | grep -F "${username}_" 2>/dev/null || true
mysql -e "SHOW DATABASES" 2>/dev/null | grep "^${username}_" 2>/dev/null || true
}
get_plesk_user_databases() {
@@ -398,7 +398,7 @@ select_user_interactive() {
local users=($(list_all_users))
local total_users=${#users[@]}
if [ $total_users -eq 0 ]; then
if [ "${total_users:-0}" -eq 0 ]; then
print_error "No users found" >&2
return 1
fi
@@ -427,7 +427,7 @@ select_user_interactive() {
echo "-------------------------------------------------------------------------------"
# Auto-show list if 10 or fewer users
if [ $total_users -le 10 ]; then
if [ "${total_users:-0}" -le 10 ]; then
echo ""
for user in "${users[@]}"; do
echo -e " ${GREEN}$user${NC} - ${user_primary_domain[$user]} (${user_domain_count[$user]} domains)"
@@ -438,7 +438,7 @@ select_user_interactive() {
echo "-------------------------------------------------------------------------------"
echo ""
echo "Options:"
if [ $total_users -gt 10 ]; then
if [ "${total_users:-0}" -gt 10 ]; then
echo " L - List all $total_users users"
fi
echo " S [text] - Search/filter users (e.g., 's pick' or 's example.com')"
@@ -565,7 +565,7 @@ select_user_interactive() {
# Not exact match
print_error "User '$choice' not found" >&2
if [ $total_users -gt 10 ]; then
if [ "${total_users:-0}" -gt 10 ]; then
echo " Tip: Type 'L' to list all users" >&2
fi
return 1
@@ -580,14 +580,14 @@ select_user_interactive() {
get_user_processes() {
local username="$1"
ps aux | grep -F "$username" 2>/dev/null | grep -v grep
ps aux | grep "$username" 2>/dev/null | grep -v grep
}
get_user_top_processes() {
local username="$1"
local limit="${2:-10}"
ps aux | grep -F "$username" 2>/dev/null | grep -v grep | sort -k3 -rn | head -n "$limit"
ps aux | grep "$username" 2>/dev/null | grep -v grep | sort -k3 -rn | head -n "$limit"
}
#############################################################################