Add plesk_list_users() function for Plesk user discovery

Issue: list_plesk_users() in user-manager.sh was trying to query MySQL
but the query was failing, resulting in 0 users detected on Plesk.

Fix:
1. Added plesk_list_users() to plesk-helpers.sh that uses:
   - Plesk CLI: 'plesk bin client --list' (primary)
   - Fallback: Scan /var/www/vhosts directories

2. Updated list_plesk_users() in user-manager.sh to:
   - First try plesk_list_users() if available
   - Then try MySQL query
   - Last resort: directory scan

This should now detect Plesk users from either Plesk API or
filesystem fallback.

Testing: Will verify on Plesk server
This commit is contained in:
cschantz
2025-12-24 16:29:27 -05:00
parent c56093fdcb
commit 83ad5a0b9c
2 changed files with 27 additions and 3 deletions
+18
View File
@@ -46,6 +46,24 @@ plesk_list_domains() {
fi 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 # Get domain info
# Usage: plesk_domain_info DOMAIN # Usage: plesk_domain_info DOMAIN
plesk_domain_info() { plesk_domain_info() {
+9 -3
View File
@@ -52,11 +52,17 @@ list_cpanel_users() {
# Plesk user listing # Plesk user listing
list_plesk_users() { 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 mysql -Ns psa -e "SELECT login FROM sys_users WHERE type='user'" 2>/dev/null
else else
# Fallback: list directories # Last resort: list directories
find /var/www/vhosts -maxdepth 1 -type d -printf "%f\n" 2>/dev/null | grep -v "^system$\|^default$\|^chroot$" 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 fi
} }