From 3b23310d7deee71fd77a17f8f08f0a29e551d90c Mon Sep 17 00:00:00 2001 From: cschantz Date: Wed, 3 Dec 2025 20:19:43 -0500 Subject: [PATCH] Fix 9 MEDIUM hardcoded /var/cpanel paths - ALL MEDIUM ISSUES RESOLVED! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FIXES: Changed hardcoded /var/cpanel paths to use environment variables with fallbacks: reference-db.sh: - Line 255: /var/cpanel/userdata → ${SYS_CPANEL_USERDATA_DIR:-/var/cpanel/userdata} - Line 265: /var/cpanel/userdata → ${SYS_CPANEL_USERDATA_DIR:-/var/cpanel/userdata} php-detector.sh: - Line 69: /var/cpanel/userdata → ${SYS_CPANEL_USERDATA_DIR:-/var/cpanel/userdata} user-manager.sh: - Line 44-45: /var/cpanel/users → ${SYS_CPANEL_USERS_DIR:-/var/cpanel/users} - Line 111: /var/cpanel/users → ${SYS_CPANEL_USERS_DIR:-/var/cpanel/users} diagnostic-report.sh: - Line 68: /var/cpanel/users → ${SYS_CPANEL_USERS_DIR:-/var/cpanel/users} wordpress-cron-manager.sh: - Line 229-230: /var/cpanel/userdata → ${SYS_CPANEL_USERDATA_DIR:-/var/cpanel/userdata} IMPACT: - Paths now configurable via environment variables - Maintains backward compatibility with default paths - Better multi-panel support flexibility - More testable code (can override paths in tests) QA STATUS: 🎉 ALL MEDIUM ISSUES RESOLVED! 🎉 - CRITICAL: 0 ✓ - HIGH: 0 ✓ - MEDIUM: 0 ✓ - LOW: 11 (remaining) --- lib/php-detector.sh | 2 +- lib/reference-db.sh | 4 ++-- lib/user-manager.sh | 7 ++++--- modules/website/wordpress/wordpress-cron-manager.sh | 5 +++-- tools/diagnostic-report.sh | 3 ++- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/php-detector.sh b/lib/php-detector.sh index ce4ca8f..87e611c 100644 --- a/lib/php-detector.sh +++ b/lib/php-detector.sh @@ -66,7 +66,7 @@ detect_php_version_for_domain() { case "$SYS_CONTROL_PANEL" in cpanel) # Check userdata for PHP version - local userdata_file="/var/cpanel/userdata/$username/$domain" + local userdata_file="${SYS_CPANEL_USERDATA_DIR:-/var/cpanel/userdata}/$username/$domain" if [ -f "$userdata_file" ]; then local php_ver=$(grep "phpversion:" "$userdata_file" | awk '{print $2}' | tr -d "'\"") echo "$php_ver" diff --git a/lib/reference-db.sh b/lib/reference-db.sh index 5c69b99..31a6c51 100755 --- a/lib/reference-db.sh +++ b/lib/reference-db.sh @@ -252,7 +252,7 @@ build_domains_section() { # Count total domains for progress local total_domains=0 for user in "${users[@]}"; do - local userdata_dir="/var/cpanel/userdata/${user}" + local userdata_dir="${SYS_CPANEL_USERDATA_DIR:-/var/cpanel/userdata}/${user}" if [ -d "$userdata_dir" ]; then total_domains=$((total_domains + $(find "$userdata_dir" -type f ! -name "*.cache" ! -name "*.yaml" ! -name "*.json" ! -name "main*" ! -name "cache" ! -name "*_SSL" 2>/dev/null | wc -l))) fi @@ -262,7 +262,7 @@ build_domains_section() { # Get detailed domain information from cPanel userdata (if available) for user in "${users[@]}"; do - local userdata_dir="/var/cpanel/userdata/${user}" + local userdata_dir="${SYS_CPANEL_USERDATA_DIR:-/var/cpanel/userdata}/${user}" if [ -d "$userdata_dir" ]; then # Parse each domain configuration file in userdata diff --git a/lib/user-manager.sh b/lib/user-manager.sh index fc70b77..33ebe73 100755 --- a/lib/user-manager.sh +++ b/lib/user-manager.sh @@ -41,8 +41,9 @@ list_all_users() { # cPanel user listing list_cpanel_users() { - if [ -d "/var/cpanel/users" ]; then - ls /var/cpanel/users/ 2>/dev/null || true + local cpanel_users_dir="${SYS_CPANEL_USERS_DIR:-/var/cpanel/users}" + if [ -d "$cpanel_users_dir" ]; then + ls "$cpanel_users_dir" 2>/dev/null || true else # Fallback: parse /etc/trueuserdomains awk -F: '{print $2}' /etc/trueuserdomains 2>/dev/null | sort -u || true @@ -108,7 +109,7 @@ get_user_info() { # cPanel user info get_cpanel_user_info() { local username="$1" - local user_file="/var/cpanel/users/${username}" + local user_file="${SYS_CPANEL_USERS_DIR:-/var/cpanel/users}/${username}" if [ ! -f "$user_file" ]; then echo "USER_EXISTS=no" diff --git a/modules/website/wordpress/wordpress-cron-manager.sh b/modules/website/wordpress/wordpress-cron-manager.sh index 97943b4..9bbc6c5 100755 --- a/modules/website/wordpress/wordpress-cron-manager.sh +++ b/modules/website/wordpress/wordpress-cron-manager.sh @@ -226,8 +226,9 @@ case "$choice" in case "$SYS_CONTROL_PANEL" in cpanel) user=$(extract_user_from_path "$site_path") - if [ -f "/var/cpanel/userdata/$user/main" ]; then - domain=$(grep -m1 "^servername:" "/var/cpanel/userdata/$user/main" 2>/dev/null | awk '{print $2}') + local userdata_dir="${SYS_CPANEL_USERDATA_DIR:-/var/cpanel/userdata}" + if [ -f "$userdata_dir/$user/main" ]; then + domain=$(grep -m1 "^servername:" "$userdata_dir/$user/main" 2>/dev/null | awk '{print $2}') fi ;; interworx) diff --git a/tools/diagnostic-report.sh b/tools/diagnostic-report.sh index 4ad1587..df1793b 100755 --- a/tools/diagnostic-report.sh +++ b/tools/diagnostic-report.sh @@ -65,7 +65,8 @@ echo "" echo "--- USER/DOMAIN FILES ---" echo "cPanel user files:" - echo " /var/cpanel/users/: $(ls /var/cpanel/users/ 2>/dev/null | wc -l) files" + local cpanel_users_dir="${SYS_CPANEL_USERS_DIR:-/var/cpanel/users}" + echo " $cpanel_users_dir: $(ls "$cpanel_users_dir" 2>/dev/null | wc -l) files" echo " /etc/trueuserdomains: $([ -f /etc/trueuserdomains ] && wc -l < /etc/trueuserdomains || echo "NOT FOUND") lines" echo " /etc/userdatadomains: $([ -f /etc/userdatadomains ] && wc -l < /etc/userdatadomains || echo "NOT FOUND") lines" echo ""