Update REFDB_FORMAT.txt with complete multi-panel architecture documentation
Added comprehensive [MULTI_PANEL_ARCHITECTURE] section to REFDB_FORMAT.txt: - Control panel support status (cPanel/InterWorx/Plesk/standalone) - Critical path differences (docroot, logs, configs, DB prefixes) - Module classification system (Class A/B/C/D) - Refactoring progress tracker (33/38 = 87% complete) - Mandatory abstraction libraries (system-detect.sh, user-manager.sh) - Standard code patterns (log discovery, domain→user, API calls) - Common mistakes to avoid - Complete commit history for multi-panel work REFDB_FORMAT.txt is THE comprehensive developer documentation file (now 764 lines). This is the ONLY file Claude uses for development context across sessions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+139
-1
@@ -618,9 +618,147 @@ common_functions:
|
|||||||
functions: print_banner(), print_success(), print_error(), print_warning(), print_info(), press_enter()
|
functions: print_banner(), print_success(), print_error(), print_warning(), print_info(), press_enter()
|
||||||
colors: GREEN, RED, YELLOW, CYAN, BOLD, NC (auto-disabled if not TTY)
|
colors: GREEN, RED, YELLOW, CYAN, BOLD, NC (auto-disabled if not TTY)
|
||||||
|
|
||||||
|
[MULTI_PANEL_ARCHITECTURE]
|
||||||
|
# MAJOR REFACTORING: 2025-11-19
|
||||||
|
# Supporting cPanel, Plesk, InterWorx, and standalone Apache
|
||||||
|
|
||||||
|
status: 33/38 modules complete (87%)
|
||||||
|
updated: 2025-11-19
|
||||||
|
|
||||||
|
# Control Panel Support Levels
|
||||||
|
panels:
|
||||||
|
cpanel: Full support (primary platform)
|
||||||
|
interworx: In progress (phases 1-3 complete)
|
||||||
|
plesk: Partial support (needs expansion)
|
||||||
|
standalone: Basic support (no control panel)
|
||||||
|
|
||||||
|
# CRITICAL PATH DIFFERENCES (MUST MEMORIZE)
|
||||||
|
paths:
|
||||||
|
docroot:
|
||||||
|
cpanel: /home/USER/public_html
|
||||||
|
interworx: /home/USER/DOMAIN/html
|
||||||
|
plesk: /var/www/vhosts/DOMAIN/httpdocs
|
||||||
|
|
||||||
|
access_logs:
|
||||||
|
cpanel: /var/log/apache2/domlogs/DOMAIN
|
||||||
|
interworx: /home/USER/var/DOMAIN/logs/access_log
|
||||||
|
plesk: /var/www/vhosts/system/DOMAIN/logs/access_log
|
||||||
|
|
||||||
|
error_logs:
|
||||||
|
cpanel: /var/log/apache2/domlogs/DOMAIN-error_log
|
||||||
|
interworx: /home/USER/var/DOMAIN/logs/error_log
|
||||||
|
plesk: /var/www/vhosts/system/DOMAIN/logs/error_log
|
||||||
|
|
||||||
|
user_config:
|
||||||
|
cpanel: /var/cpanel/users/USER
|
||||||
|
interworx: /etc/httpd/conf.d/vhost_*.conf
|
||||||
|
plesk: plesk bin commands
|
||||||
|
|
||||||
|
domain_map:
|
||||||
|
cpanel: /etc/userdatadomains
|
||||||
|
interworx: vhost configs + SuexecUserGroup
|
||||||
|
plesk: plesk bin subscription --info
|
||||||
|
|
||||||
|
# CRITICAL DATABASE PREFIX PATTERN (MOST IMPORTANT!)
|
||||||
|
database_prefixes:
|
||||||
|
cpanel: username_dbname
|
||||||
|
interworx: first8charsOfDomain_dbname # NOT username!
|
||||||
|
plesk: no prefix
|
||||||
|
|
||||||
|
# Module Classification System
|
||||||
|
classes:
|
||||||
|
A: Panel-agnostic (7 modules) - No changes needed
|
||||||
|
B: System detection only (6 modules) - Use SYS_LOG_DIR
|
||||||
|
C: User/domain management (6 modules) - Complex refactoring
|
||||||
|
D: Panel-specific features (2 modules) - Conditional execution
|
||||||
|
Acronis: Backup suite (13 modules) - No changes needed
|
||||||
|
|
||||||
|
# Class C Refactoring Progress (4/6 complete)
|
||||||
|
class_c_complete:
|
||||||
|
- website-error-analyzer.sh (commit d657c8a)
|
||||||
|
- 500-error-tracker.sh (commit 93d4cf9)
|
||||||
|
- malware-scanner.sh (previous commit)
|
||||||
|
- optimize-ct-limit.sh (previous commit)
|
||||||
|
|
||||||
|
class_c_pending:
|
||||||
|
- wordpress-cron-manager.sh (33 /var/cpanel/userdata refs, 9 public_html refs)
|
||||||
|
- wordpress-menu.sh (needs audit)
|
||||||
|
|
||||||
|
# MANDATORY ABSTRACTION LIBRARIES
|
||||||
|
required_libraries:
|
||||||
|
system-detect.sh:
|
||||||
|
exports: SYS_CONTROL_PANEL, SYS_LOG_DIR, SYS_CONTROL_PANEL_VERSION
|
||||||
|
values: cpanel|interworx|plesk|standalone
|
||||||
|
usage: source at top of script, use in case statements
|
||||||
|
|
||||||
|
user-manager.sh:
|
||||||
|
get_user_info: Returns USER_EXISTS, PRIMARY_DOMAIN, ALL_DOMAINS, HOME_DIR
|
||||||
|
get_user_domains: Returns newline-separated domain list
|
||||||
|
get_user_databases: Returns database list for user
|
||||||
|
usage: NEVER grep /var/cpanel/users directly
|
||||||
|
|
||||||
|
# STANDARD CODE PATTERNS (COPY THESE)
|
||||||
|
patterns:
|
||||||
|
log_discovery: |
|
||||||
|
case "$SYS_CONTROL_PANEL" in
|
||||||
|
cpanel)
|
||||||
|
find "$SYS_LOG_DIR" -type f -name "*.com" 2>/dev/null
|
||||||
|
;;
|
||||||
|
interworx)
|
||||||
|
find /home/*/var/*/logs -type f -name "access_log" 2>/dev/null
|
||||||
|
;;
|
||||||
|
plesk)
|
||||||
|
find /var/www/vhosts/system/*/logs -type f -name "access_log" 2>/dev/null
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
[ -f "/var/log/httpd/access_log" ] && echo "/var/log/httpd/access_log"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
domain_to_user: |
|
||||||
|
case "$SYS_CONTROL_PANEL" in
|
||||||
|
cpanel)
|
||||||
|
user=$(grep "^${domain}:" /etc/userdatadomains | cut -d: -f2 | awk -F'==' '{print $1}')
|
||||||
|
;;
|
||||||
|
interworx)
|
||||||
|
user=$(grep -l "ServerName ${domain}" /etc/httpd/conf.d/vhost_*.conf | \
|
||||||
|
xargs grep "SuexecUserGroup" | awk '{print $2}')
|
||||||
|
;;
|
||||||
|
plesk)
|
||||||
|
user=$(plesk bin subscription --info "$domain" | grep "Owner" | awk '{print $2}')
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
api_calls: |
|
||||||
|
if [ "$SYS_CONTROL_PANEL" = "cpanel" ]; then
|
||||||
|
whmapi1 some_command
|
||||||
|
else
|
||||||
|
print_warning "Feature requires cPanel"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# COMMON MISTAKES TO AVOID
|
||||||
|
mistakes:
|
||||||
|
hardcoded_paths: NEVER use /var/log/apache2/domlogs or /home/user/public_html
|
||||||
|
cpanel_only_apis: NEVER use whmapi1/uapi without panel check
|
||||||
|
missing_source: Class B/C modules MUST source system-detect.sh AND user-manager.sh
|
||||||
|
fallback_paths: NO fallbacks - fail explicitly with clear message
|
||||||
|
userdata_grep: NEVER grep /var/cpanel/userdata or /var/cpanel/users
|
||||||
|
|
||||||
|
# Refactoring Commits
|
||||||
|
commits:
|
||||||
|
- Phase 1: user-manager.sh InterWorx support (819865b)
|
||||||
|
- Phase 2: bot-analyzer.sh + firewall detection (b86aa14)
|
||||||
|
- Phase 3: Security modules (0988224)
|
||||||
|
- Class B: Log directory refactoring (b770487)
|
||||||
|
- Class D: Panel version detection (8a2d9f5)
|
||||||
|
- website-error-analyzer.sh: Multi-panel (d657c8a)
|
||||||
|
- 500-error-tracker.sh: Multi-panel (93d4cf9)
|
||||||
|
- Documentation consolidation (fbce072)
|
||||||
|
|
||||||
[END]
|
[END]
|
||||||
# This file is the ONLY developer reference document.
|
# This file is the ONLY developer reference document.
|
||||||
# README.md is for users, this file is for developers (Claude).
|
# README.md is for users, this file is for developers (Claude).
|
||||||
# Keep this updated after every significant change.
|
# Keep this updated after every significant change.
|
||||||
# Last updated: 2025-11-07
|
# Last updated: 2025-11-19
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user