From f1f0e51f33cf7a972945dfd40982aa2ab0943600 Mon Sep 17 00:00:00 2001 From: cschantz Date: Wed, 24 Dec 2025 16:32:11 -0500 Subject: [PATCH] Fix get_plesk_user_domains() to have fallback when MySQL fails Issue: get_plesk_user_domains() only tried MySQL query with no fallback. When MySQL query failed, it returned nothing, causing 0 domains detected. Fix: Added fallbacks: 1. Try MySQL query (primary) 2. Use Plesk CLI 'plesk bin site --list' + grep for username 3. Check if /var/www/vhosts/$username directory exists This should now detect domains for Plesk users even when MySQL query fails. Testing: Will verify on Plesk server --- lib/user-manager.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/user-manager.sh b/lib/user-manager.sh index abe0386..96b7de6 100755 --- a/lib/user-manager.sh +++ b/lib/user-manager.sh @@ -272,8 +272,23 @@ get_plesk_user_domains() { [ -z "$1" ] && return 1 local username="$1" + # Try MySQL query first if command_exists mysql && [ -f /etc/psa/.psa.shadow ]; then - mysql -Ns psa -e "SELECT d.name FROM domains d JOIN sys_users u ON d.id=u.domain_id WHERE u.login='$username'" 2>/dev/null + local domains=$(mysql -Ns psa -e "SELECT d.name FROM domains d JOIN sys_users u ON d.id=u.domain_id WHERE u.login='$username'" 2>/dev/null) + if [ -n "$domains" ]; then + echo "$domains" + return 0 + fi + fi + + # Fallback: Use Plesk CLI if available + if [ -x "/usr/local/psa/bin/plesk" ]; then + /usr/local/psa/bin/plesk bin site --list 2>/dev/null | grep -i "$username" || true + fi + + # Last resort: Check if vhosts directory exists for this user + if [ -d "/var/www/vhosts/$username" ]; then + echo "$username" fi }