diff --git a/lib/plesk-helpers.sh b/lib/plesk-helpers.sh index 05a2a44..178a04a 100644 --- a/lib/plesk-helpers.sh +++ b/lib/plesk-helpers.sh @@ -46,6 +46,24 @@ plesk_list_domains() { fi } +############################################################################# +# USER DISCOVERY +############################################################################# + +# Get list of all Plesk users (clients) +# Returns: One username per line +plesk_list_users() { + if plesk_cli_available; then + # Try to get client logins from Plesk + plesk_exec bin client --list 2>/dev/null | tail -n +3 | awk '{print $1}' | grep -v "^$" + else + # Fallback: Get unique owners from vhosts directories + find /var/www/vhosts -maxdepth 1 -type d -printf "%f\n" 2>/dev/null | \ + grep -v "^system$\|^chroot$\|^\.skel$\|^default$\|^fs$\|^fs-passwd$" | \ + grep -v "^\." || true + fi +} + # Get domain info # Usage: plesk_domain_info DOMAIN plesk_domain_info() { diff --git a/lib/user-manager.sh b/lib/user-manager.sh index b348dcc..abe0386 100755 --- a/lib/user-manager.sh +++ b/lib/user-manager.sh @@ -52,11 +52,17 @@ list_cpanel_users() { # Plesk user listing list_plesk_users() { - if command_exists mysql && [ -f /etc/psa/.psa.shadow ]; then + # Use plesk_list_users() if available (from plesk-helpers.sh) + if type plesk_list_users >/dev/null 2>&1; then + plesk_list_users + elif command_exists mysql && [ -f /etc/psa/.psa.shadow ]; then + # Fallback: Try MySQL query mysql -Ns psa -e "SELECT login FROM sys_users WHERE type='user'" 2>/dev/null else - # Fallback: list directories - find /var/www/vhosts -maxdepth 1 -type d -printf "%f\n" 2>/dev/null | grep -v "^system$\|^default$\|^chroot$" + # Last resort: list directories + find /var/www/vhosts -maxdepth 1 -type d -printf "%f\n" 2>/dev/null | \ + grep -v "^system$\|^default$\|^chroot$\|^\.skel$\|^fs$\|^fs-passwd$" | \ + grep -v "^\." fi }