Files

276 lines
8.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dev Launcher - Platform Support Roadmap
**Goal**: Build comprehensive **automatic platform detection** that collects all system data during launcher startup and stores in reference database (`.sysref.beta`).
**Key Principle**: Launcher runs on startup, collects ALL data automatically, displays findings, stores in reference DB. No interactive menus - modules use the detected/stored data.
---
## Phase 1: Comprehensive Automatic Detection (CURRENT)
**Status**: 🔄 In Progress
### Step 1: System Detection at Startup ✅ DONE
- [x] System info display at startup (show_system_overview)
- [x] Control panel detection (cPanel, Plesk, InterWorx, Standalone)
- [x] OS detection (CentOS, AlmaLinux, Rocky, CloudLinux, Ubuntu, Debian)
- [x] Web server detection (Apache, Nginx, LiteSpeed, OpenLiteSpeed)
- [x] Database detection (MySQL, MariaDB)
- [x] PHP version detection (default + EA4 + Plesk + alt-php)
- [x] Firewall detection (CSF, firewalld, UFW, iptables)
### Step 2: Automatic Data Collection & Storage (NEXT)
- [ ] **Enhance reference-db.sh** to collect platform compatibility data
- Add PLATFORM record type to .sysref:
```
PLATFORM|control_panel|cpanel|120.0|ok
PLATFORM|os|almalinux|9|supported
PLATFORM|web_server|apache|2.4.57|ok
PLATFORM|php_version|8.1|available
PLATFORM|compatibility|cpanel_almalinux|ok
```
- Add health status for each component
- Add package status (installed/missing/conflict)
- [ ] **Enhance startup_detection()** to:
- Run comprehensive detection automatically
- Call platform health checks (store results, don't display menu)
- Run OS compatibility checks (store results)
- Populate PLATFORM records in .sysref.beta
- Show summary at startup (what was detected, any issues)
### Step 3: Store Platform Data in Reference DB
- [ ] Extend .sysref format to include:
- Control panel status and features
- OS compatibility status
- Package installation status
- Service health status
- Known issues found
- [ ] Create functions to query this data:
- `db_get_platform_status()` - Get overall platform health
- `db_get_compatibility_issues()` - Get known incompatibilities
- `db_get_missing_packages()` - Get required packages not installed
### Step 4: Display Findings at Startup
- [ ] Show platform detection summary during initialization
- [ ] List any critical issues found
- [ ] List recommendations (upgrades, package installs, fixes)
- [ ] Cache expires with .sysref (1 hour)
---
## Phase 2: Automatic OS Compatibility Detection
**Status**: ⏳ Planned
### Auto-Collect for Each OS
- [ ] **Package Manager State** - YUM, DNF, or APT status
- [ ] **Required Packages** - Verify installed (httpd, apache2, mysql, etc.)
- [ ] **Service Manager** - Detect systemd vs init
- [ ] **Apache Binary** - Detect httpd vs apache2
- [ ] **MySQL Socket** - Detect correct socket path
- [ ] **Firewall Type** - Auto-detect running firewall
- [ ] **PHP Installation** - Detect all available PHP versions
- [ ] **Repository Config** - Detect EPEL, Remi, Ondrej PPAs
### Store Results in .sysref
- Package installation status per OS
- Service availability status
- Path configuration status
- Version support timeline
- Known incompatibilities
---
## Phase 3: Control Panel Feature Auto-Discovery
**Status**: ⏳ Planned
### Auto-Detect & Store for Each Panel
**cPanel**:
- [ ] Installed EA4 modules
- [ ] Installed plugins (AutoSSL, Immuify, etc.)
- [ ] cPanel API version
- [ ] License status
**Plesk**:
- [ ] Installed extensions (Qmail, Nginx, etc.)
- [ ] Module status (mail, web, dns, etc.)
- [ ] License information
- [ ] Version-specific features
**InterWorx**:
- [ ] Installed modules
- [ ] NodeWorx API availability
- [ ] Custom plugins
**CloudLinux**:
- [ ] LVE limits per account
- [ ] alt-php selector availability
- [ ] CloudLinux tools availability
### Store in .sysref as PLATFORM records
---
## Phase 4: Database & PHP Auto-Discovery
**Status**: ⏳ Planned
### Automatic Database Data Collection
- [ ] MySQL/MariaDB version and type
- [ ] Percona Server detection
- [ ] Database cluster detection (Galera)
- [ ] Replication status
- [ ] Backup tools detection (Acronis, Bacula)
- [ ] Store database inventory in .sysref (already have DB records)
### Automatic PHP Detection (Already Partial)
- [ ] All installed PHP versions (default + EA4 + Plesk + alt-php)
- [ ] PHP module availability per version
- [ ] PHP-FPM pool detection
- [ ] OPcache status per version
- [ ] Per-domain PHP version mapping (query from configs)
### Store PHP Data in .sysref
- [ ] PHP versions available
- [ ] Default PHP version
- [ ] PHP modules per version
- [ ] PHP-FPM pool count
---
## Phase 5: Service Status Auto-Collection
**Status**: ⏳ Planned
### Automatic Service Health Check
- [ ] Essential services (Apache/Nginx, MySQL, PHP-FPM, SSH)
- [ ] Control panel services (cpanel, sw-engine, iworx)
- [ ] Mail service (Exim/Postfix)
- [ ] Firewall service
- [ ] Store status in .sysref as SERVICE records:
```
SERVICE|apache|running|ok
SERVICE|mysql|running|ok
SERVICE|php-fpm|running|warning
SERVICE|firewall|active|ok
```
### Automatic Issue Detection
- [ ] Missing critical services
- [ ] Services that should be running but aren't
- [ ] Port conflicts (multiple web servers on port 80)
- [ ] Store findings as ISSUE records
---
## Phase 6: Reference Database Queries
**Status**: ⏳ Planned
### Add Query Functions to reference-db.sh
- [ ] `db_get_platform_info()` - Get all platform data
- [ ] `db_get_compatibility_issues()` - Get known issues
- [ ] `db_get_service_status()` - Get service states
- [ ] `db_get_missing_packages()` - Get uninstalled packages
- [ ] `db_get_recommendations()` - Get suggested actions
### Modules Use These to Make Decisions
Instead of detecting themselves, modules query the data:
- Modules call `db_get_platform_info()` to know the platform
- Modules call `db_get_service_status()` before running
- Modules check `db_get_missing_packages()` to suggest installs
- Modules suggest actions based on `db_get_recommendations()`
---
## Implementation Priority
### IMMEDIATE (Phase 1 - Step 2-4)
1. ⏳ Enhance reference-db.sh to collect platform data automatically
2. ⏳ Add PLATFORM record type to .sysref format
3. ⏳ Update startup_detection() to run comprehensive checks
4. ⏳ Display platform findings during initialization
### NEAR TERM (Phase 2-3)
5. ⏳ Add OS compatibility data collection to startup
6. ⏳ Add control panel feature auto-discovery
7. ⏳ Store all findings in .sysref.beta
### MEDIUM TERM (Phase 4-5)
8. ⏳ Database & PHP data collection
9. ⏳ Service status auto-detection
10. ⏳ Issue detection and storage
### LONG TERM (Phase 6)
11. ⏳ Query functions in reference-db.sh
12. ⏳ Modules refactored to use cached data
---
## Testing Strategy
### By Control Panel
- [ ] Test on cPanel/RHEL
- [ ] Test on Plesk/Ubuntu
- [ ] Test on InterWorx/Rocky
- [ ] Test on Standalone/Debian
### By OS
- [ ] CentOS 7/8/9
- [ ] AlmaLinux 8/9
- [ ] Rocky Linux 8/9
- [ ] CloudLinux 7/8/9
- [ ] Ubuntu 20.04/22.04/24.04
- [ ] Debian 11/12
### Coverage Matrix
- All 4 control panels × 6 OSes = 24 test combinations
- Plus 4 web servers, 2 DB types, multiple PHP versions
---
## Success Criteria
1. ✅ Launcher detects all 4 control panels automatically
2. ✅ Launcher detects all 6 OS types automatically
3. ✅ All platform data stored in .sysref.beta on startup
4. ✅ Platform summary displayed during initialization
5. ✅ Critical issues flagged (missing packages, incompatibilities)
6. ✅ Modules query cached data instead of re-detecting
7. ✅ No interactive menus - launcher is pure data collection
---
## Files to Create/Modify
### Enhanced Files
- `lib/reference-db.sh` - Add PLATFORM record collection and queries
- `lib/system-detect.sh` - Comprehensive automatic detection
- `launcher.sh` - Enhanced startup_detection() to store all findings
### New Functions in reference-db.sh
- `collect_platform_data()` - Gather all platform info
- `db_get_platform_info()` - Query platform data
- `db_get_compatibility_issues()` - Query issues found
- `db_get_service_status()` - Query service states
- `db_get_missing_packages()` - Query missing packages
### Standalone Diagnostic Modules (Optional)
- `modules/diagnostics/platform-health-check.sh` - For manual health checks
- `modules/diagnostics/os-compatibility-check.sh` - For manual compatibility checks
- Note: These are optional modules for users to run manually, not part of launcher
---
## Knowledge Base Integration
This roadmap uses the comprehensive knowledge base at `/root/.claude/knowledge-base/`:
- `control-panels/*/` - Platform-specific implementation details
- `operating-systems/*/` - OS-specific configuration and differences
- `databases/*/` - Database detection and management
- `shared-systems/php-version-detection.md` - PHP multi-version handling
---
**Last Updated**: 2026-03-19
**Created By**: Claude Code - Dev Session
**Status**: Active Development