From 762d039d9d4c16e476f2fe93454c148d13c8de23 Mon Sep 17 00:00:00 2001 From: Master3395 Date: Mon, 2 Feb 2026 02:56:43 +0100 Subject: [PATCH] Remove old Remove old --- INSTALLER_SUMMARY.md | 152 ----- UNIVERSAL_OS_COMPATIBILITY.md | 374 ----------- cyberpanel_clean.sh | 1120 ------------------------------- cyberpanel_complete.sh | 1117 ------------------------------ cyberpanel_simple.sh | 1117 ------------------------------ cyberpanel_standalone.sh | 450 ------------- deploy_phpmyadmin_redirect.sh | 54 -- fix_installation_issues.sh | 245 ------- install_phpmyadmin.sh | 146 ---- rollback_phpmyadmin_redirect.sh | 49 -- 10 files changed, 4824 deletions(-) delete mode 100644 INSTALLER_SUMMARY.md delete mode 100644 UNIVERSAL_OS_COMPATIBILITY.md delete mode 100644 cyberpanel_clean.sh delete mode 100644 cyberpanel_complete.sh delete mode 100644 cyberpanel_simple.sh delete mode 100644 cyberpanel_standalone.sh delete mode 100644 deploy_phpmyadmin_redirect.sh delete mode 100644 fix_installation_issues.sh delete mode 100755 install_phpmyadmin.sh delete mode 100644 rollback_phpmyadmin_redirect.sh diff --git a/INSTALLER_SUMMARY.md b/INSTALLER_SUMMARY.md deleted file mode 100644 index 458f6e0a3..000000000 --- a/INSTALLER_SUMMARY.md +++ /dev/null @@ -1,152 +0,0 @@ -# ๐Ÿš€ CyberPanel Modular Installer - COMPLETE! - -## โœ… **What We've Built:** - -### **The Ultimate CyberPanel Installer Experience!** - -I've completely transformed the CyberPanel installer from a monolithic 3478-line script into a beautiful, modular, interactive installer system. Here's what you now have: - -## ๐Ÿ“ **New Modular Architecture:** - -``` -cyberpanel/ -โ”œโ”€โ”€ cyberpanel.sh # ๐ŸŽฏ MAIN INSTALLER (300 lines) -โ”œโ”€โ”€ install.sh # ๐Ÿ“‹ Backup installer -โ”œโ”€โ”€ modules/ -โ”‚ โ”œโ”€โ”€ os/detect.sh # ๐Ÿ” OS Detection (367 lines) -โ”‚ โ”œโ”€โ”€ deps/ -โ”‚ โ”‚ โ”œโ”€โ”€ manager.sh # ๐Ÿ“ฆ Dependency Manager (204 lines) -โ”‚ โ”‚ โ”œโ”€โ”€ rhel_deps.sh # ๐Ÿง RHEL Dependencies (222 lines) -โ”‚ โ”‚ โ””โ”€โ”€ debian_deps.sh # ๐Ÿง Debian Dependencies (229 lines) -โ”‚ โ”œโ”€โ”€ install/cyberpanel_installer.sh # ๐Ÿš€ Installation Logic (276 lines) -โ”‚ โ”œโ”€โ”€ fixes/cyberpanel_fixes.sh # ๐Ÿ”ง Fixes & Repairs (372 lines) -โ”‚ โ””โ”€โ”€ utils/ -โ”‚ โ”œโ”€โ”€ ui.sh # ๐ŸŽจ Beautiful UI (450 lines) -โ”‚ โ””โ”€โ”€ menu.sh # ๐Ÿ“‹ Interactive Menus (400 lines) -โ””โ”€โ”€ test_installer.sh # ๐Ÿงช Test Script -``` - -## ๐ŸŽฏ **Key Features:** - -### **1. Beautiful Interactive UI** -- โœจ Stunning visual interface with colors and emojis -- ๐Ÿ“Š Progress bars and status indicators -- ๐ŸŽฎ Interactive menus and prompts -- ๐Ÿ“ฑ Mobile-friendly design - -### **2. Smart Installation Logic** -- ๐Ÿ” Automatic OS detection -- ๐Ÿ“ฆ OS-specific dependency management -- ๐Ÿ”„ Retry logic (up to 5 attempts) -- ๐Ÿ› ๏ธ Automatic fix application - -### **3. Multiple Installation Modes** -- ๐ŸŽฎ **Interactive Mode** (Default) - Beautiful guided installation -- ๐Ÿค– **Auto Mode** - Silent installation for scripts -- ๐Ÿ”ง **Update Mode** - Update existing installations -- ๐Ÿ”„ **Reinstall Mode** - Clean reinstall - -### **4. Comprehensive Error Handling** -- ๐Ÿšจ Smart error detection and recovery -- ๐Ÿ“ Detailed logging and debugging -- ๐Ÿ”ง Automatic fix application -- ๐Ÿ“Š Status reporting and diagnostics - -## ๐Ÿš€ **Usage:** - -### **Interactive Mode (Default):** -```bash -bash <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/cyberpanel.sh) -``` - -### **Debug Mode:** -```bash -bash <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/cyberpanel.sh) --debug -``` - -### **Auto Mode:** -```bash -bash <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/cyberpanel.sh) --auto -``` - -### **Specific Version:** -```bash -bash <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/cyberpanel.sh) -b v2.5.5-dev -``` - -## ๐ŸŽจ **Interactive Menu System:** - -### **Main Menu:** -1. ๐Ÿš€ Fresh Installation (Recommended) -2. ๐Ÿ”„ Update Existing Installation -3. ๐Ÿ”ง Reinstall CyberPanel -4. ๐Ÿ“Š Check System Status -5. ๐Ÿ› ๏ธ Advanced Options -6. โŒ Exit - -### **Advanced Options:** -- ๐Ÿ”ง Fix Installation Issues -- ๐Ÿงน Clean Installation Files -- ๐Ÿ“‹ View Installation Logs -- ๐Ÿ” System Diagnostics - -## ๐Ÿ”ง **Fixed Issues:** - -### **โœ… AlmaLinux 9 Support** -- Fixed `aspell` and `libc-client` dependency issues -- Proper package handling for AlmaLinux 9 -- Smart fallback for missing packages - -### **โœ… Modular Architecture** -- Each module under 500 lines (as requested) -- Easy to maintain and update -- Clear separation of concerns - -### **โœ… Better Error Handling** -- Comprehensive status checking -- Automatic fix application -- Detailed logging and reporting - -## ๐Ÿ“Š **Module Breakdown:** - -| Module | Lines | Purpose | -|--------|-------|---------| -| `cyberpanel.sh` | 300 | Main installer entry point | -| `os/detect.sh` | 367 | OS detection and basic setup | -| `deps/manager.sh` | 204 | Dependency coordination | -| `deps/rhel_deps.sh` | 222 | RHEL-based OS dependencies | -| `deps/debian_deps.sh` | 229 | Debian-based OS dependencies | -| `install/cyberpanel_installer.sh` | 276 | Installation logic | -| `fixes/cyberpanel_fixes.sh` | 372 | Fixes and repairs | -| `utils/ui.sh` | 450 | Beautiful UI components | -| `utils/menu.sh` | 400 | Interactive menu system | - -## ๐ŸŽ‰ **Benefits:** - -1. **โœ… All files under 500 lines** - Easy to manage -2. **โœ… Beautiful interactive UI** - Best install experience ever -3. **โœ… Modular design** - Easy to update and maintain -4. **โœ… Smart error handling** - Robust and reliable -5. **โœ… Multiple installation modes** - Flexible usage -6. **โœ… Comprehensive logging** - Easy debugging -7. **โœ… OS-specific handling** - Works on all supported systems -8. **โœ… Automatic fixes** - Self-healing installation - -## ๐Ÿš€ **Ready to Use!** - -The installer is now ready and will provide the **best CyberPanel installation experience ever**! - -When users run: -```bash -bash <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/cyberpanel.sh) --debug -``` - -They'll get: -- ๐ŸŽจ Beautiful interactive interface -- ๐Ÿ” Smart OS detection -- ๐Ÿ“ฆ Proper dependency handling -- ๐Ÿš€ Smooth installation process -- ๐Ÿ”ง Automatic fixes -- ๐Ÿ“Š Comprehensive status reporting - -**This is now the ultimate CyberPanel installer! ๐ŸŽ‰** diff --git a/UNIVERSAL_OS_COMPATIBILITY.md b/UNIVERSAL_OS_COMPATIBILITY.md deleted file mode 100644 index 59219a949..000000000 --- a/UNIVERSAL_OS_COMPATIBILITY.md +++ /dev/null @@ -1,374 +0,0 @@ -# CyberPanel Universal OS Compatibility Guide - -## ๐ŸŽฏ Overview - -This guide ensures CyberPanel installer works perfectly on **ALL supported operating systems**. We've created comprehensive testing and fixing mechanisms to guarantee 100% compatibility across all platforms. - -## ๐Ÿ“‹ Supported Operating Systems - -| **OS Family** | **Versions** | **Status** | **Priority** | **Tested** | -|---------------|--------------|------------|--------------|------------| -| **Ubuntu** | 24.04, 22.04, 20.04 | โœ… Recommended | **HIGH** | โœ… | -| **Debian** | 13, 12, 11 | โœ… Supported | **HIGH** | โœ… | -| **AlmaLinux** | 10, 9, 8 | โœ… Supported | **HIGH** | โœ… | -| **RockyLinux** | 9, 8 | โœ… Supported | **HIGH** | โœ… | -| **RHEL** | 9, 8 | โœ… Supported | **HIGH** | โœ… | -| **CloudLinux** | 9, 8 | โœ… Supported | **MEDIUM** | โœ… | -| **CentOS** | 7, 9, Stream 9 | โœ… Supported | **MEDIUM** | โœ… | - -## ๐Ÿ› ๏ธ Universal Compatibility Features - -### **1. Universal OS Detection** -- Automatic OS detection and version identification -- Support for all major Linux distributions -- Graceful handling of unknown OS versions - -### **2. Package Manager Compatibility** -- **APT** (Ubuntu/Debian): Full support with fallbacks -- **DNF** (RHEL 8+): Primary package manager -- **YUM** (RHEL 7/CentOS): Fallback support -- **Automatic detection** and selection - -### **3. Package Mapping System** -- OS-specific package name mapping -- Automatic dependency resolution -- Fallback package alternatives -- Comprehensive package availability checking - -### **4. Repository Management** -- **MariaDB 12.1**: Latest stable version -- **LiteSpeed/OpenLiteSpeed**: OS-appropriate repositories -- **PHP**: Remi/Sury repositories -- **Automatic repository setup** and configuration - -### **5. Service Management** -- **Systemd service creation** for all OS -- **Service dependency management** -- **Automatic service startup** and enablement -- **Service status monitoring** - -## ๐Ÿ”ง Universal Fixes Implementation - -### **Core Files Created** - -1. **`install/universal_os_fixes.py`** - - Universal OS compatibility fixes - - Package mapping for all supported OS - - Repository configuration management - - Service creation and management - -2. **`test_all_os_compatibility.sh`** - - Comprehensive OS compatibility testing - - System requirements validation - - Package availability checking - - Network connectivity testing - -3. **`test_installer_all_os.sh`** - - Full installation testing - - Pre and post-installation validation - - Service status verification - - Web interface accessibility testing - -### **Integration with Main Installer** - -The main installer (`install/install.py`) now includes: - -```python -def apply_os_specific_fixes(self): - """Apply OS-specific fixes based on detected OS""" - try: - # Try universal OS fixes first - try: - from universal_os_fixes import UniversalOSFixes - universal_fixes = UniversalOSFixes() - if universal_fixes.run_comprehensive_setup(): - return True - except ImportError: - pass - - # Fallback to legacy fixes - # ... existing code ... -``` - -## ๐Ÿงช Testing Procedures - -### **1. Pre-Installation Testing** - -Run the compatibility test script: -```bash -# Test current system compatibility -./test_all_os_compatibility.sh - -# Test with verbose output -./test_all_os_compatibility.sh -v - -# Test with custom log directory -./test_all_os_compatibility.sh -l /tmp/custom_test -``` - -**Tests Performed:** -- โœ… System architecture (x86_64) -- โœ… Memory requirements (1GB+) -- โœ… Disk space (10GB+) -- โœ… Network connectivity -- โœ… Required commands (curl, wget, python3, git) -- โœ… Package manager functionality -- โœ… Python version compatibility (3.8+) -- โœ… CyberPanel URL accessibility -- โœ… OS-specific package availability - -### **2. Full Installation Testing** - -Run the complete installation test: -```bash -# Run full installation test -./test_installer_all_os.sh -i - -# Run with specific version -./test_installer_all_os.sh -i -v v2.5.5-dev - -# Run pre-installation tests only -./test_installer_all_os.sh -p -``` - -**Tests Performed:** -- โœ… Pre-installation system checks -- โœ… CyberPanel installation process -- โœ… Service startup and status -- โœ… Web interface accessibility -- โœ… Database connectivity -- โœ… File permissions and structure - -### **3. OS-Specific Testing Matrix** - -| **OS** | **Version** | **Package Manager** | **MariaDB** | **LiteSpeed** | **Status** | -|--------|-------------|-------------------|-------------|---------------|------------| -| Ubuntu | 24.04 | APT | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| Ubuntu | 22.04 | APT | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| Ubuntu | 20.04 | APT | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| Debian | 13 | APT | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| Debian | 12 | APT | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| Debian | 11 | APT | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| AlmaLinux | 10 | DNF | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| AlmaLinux | 9 | DNF | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| AlmaLinux | 8 | DNF/YUM | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| RockyLinux | 9 | DNF | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| RockyLinux | 8 | DNF | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| RHEL | 9 | DNF | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| RHEL | 8 | DNF | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| CloudLinux | 9 | DNF | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| CloudLinux | 8 | DNF/YUM | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| CentOS | 9 | DNF | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | -| CentOS | 7 | YUM | โœ… 12.1 | โœ… OpenLiteSpeed | โœ… Tested | - -## ๐Ÿš€ Installation Commands - -### **Standard Installation** -```bash -# Download and run installer -sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh) - -# When prompted, enter version: v2.5.5-dev -``` - -### **Non-Interactive Installation** -```bash -# Set version and run -export CYBERPANEL_VERSION="v2.5.5-dev" -sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh) -``` - -### **Testing Installation** -```bash -# Run compatibility test first -./test_all_os_compatibility.sh - -# If tests pass, run installation -./test_installer_all_os.sh -i -``` - -## ๐Ÿ” Troubleshooting - -### **Common Issues and Solutions** - -#### **1. Package Not Found Errors** -```bash -# Ubuntu/Debian -sudo apt update && sudo apt install -y - -# RHEL Family -sudo dnf install -y -# or -sudo yum install -y -``` - -#### **2. Repository Issues** -```bash -# Check repository status -dnf repolist # RHEL Family -apt list --upgradable # Ubuntu/Debian - -# Reset repositories -dnf clean all && dnf makecache # RHEL Family -apt clean && apt update # Ubuntu/Debian -``` - -#### **3. Service Startup Issues** -```bash -# Check service status -systemctl status lsws -systemctl status cyberpanel -systemctl status mariadb - -# Restart services -sudo systemctl restart lsws -sudo systemctl restart cyberpanel -sudo systemctl restart mariadb -``` - -#### **4. Web Interface Not Accessible** -```bash -# Check if port 8090 is listening -sudo netstat -tlnp | grep 8090 -sudo ss -tlnp | grep 8090 - -# Check firewall -sudo firewall-cmd --list-ports -sudo ufw status # Ubuntu/Debian -``` - -### **OS-Specific Issues** - -#### **AlmaLinux 9+ Issues** -- **Problem**: Package compatibility issues -- **Solution**: Universal fixes automatically enable PowerTools repository and install compatibility packages - -#### **Ubuntu 24.04 Issues** -- **Problem**: New package versions -- **Solution**: Universal fixes handle updated package names and dependencies - -#### **CentOS 7 Issues** -- **Problem**: EOL repository issues -- **Solution**: Universal fixes use compatible repositories and fallback packages - -## ๐Ÿ“Š Test Results and Reports - -### **Test Report Generation** -Each test run generates comprehensive reports: - -``` -/tmp/cyberpanel_test_YYYYMMDD_HHMMSS/ -โ”œโ”€โ”€ test.log # Main test log -โ”œโ”€โ”€ test_report.md # Markdown report -โ”œโ”€โ”€ pre_install_tests.txt # Pre-installation test results -โ”œโ”€โ”€ post_install_tests.txt # Post-installation test results -โ””โ”€โ”€ installation.log # Installation process log -``` - -### **Report Contents** -- **System Information**: OS, version, architecture, memory, disk -- **Test Results**: Pass/fail status for each test -- **Installation Log**: Complete installation process log -- **Service Status**: Status of all CyberPanel services -- **Recommendations**: Suggestions for optimization - -## ๐ŸŽฏ Success Criteria - -### **Installation Success** -- โœ… All system requirements met -- โœ… All required packages installed -- โœ… All services running correctly -- โœ… Web interface accessible -- โœ… Database connectivity working -- โœ… No critical errors in logs - -### **Service Status** -- โœ… **LiteSpeed**: Running and responding -- โœ… **MariaDB**: Running and accepting connections -- โœ… **CyberPanel**: Web interface accessible -- โœ… **Systemd Services**: Properly configured and enabled - -### **Web Interface** -- โœ… **URL**: https://your-server-ip:8090 -- โœ… **Login**: Admin credentials working -- โœ… **Dashboard**: All features accessible -- โœ… **SSL**: Certificate generation working - -## ๐Ÿ”„ Continuous Testing - -### **Automated Testing** -- **Daily**: Compatibility tests on all supported OS -- **Weekly**: Full installation tests -- **Monthly**: Comprehensive regression testing -- **Release**: Complete test matrix before release - -### **Test Environments** -- **Virtual Machines**: All supported OS versions -- **Cloud Instances**: AWS, DigitalOcean, Vultr -- **Physical Servers**: Various hardware configurations -- **Docker Containers**: Isolated testing environments - -## ๐Ÿ“ˆ Performance Metrics - -### **Installation Success Rate** -- **Overall**: 100% across all supported OS -- **Ubuntu Family**: 100% (Recommended) -- **Debian Family**: 100% -- **RHEL Family**: 100% -- **Legacy OS**: 100% (with compatibility fixes) - -### **Installation Time** -- **Average**: 15-25 minutes -- **Fastest**: Ubuntu 24.04 (12 minutes) -- **Slowest**: CentOS 7 (35 minutes) -- **Factors**: Network speed, package availability, system resources - -## ๐Ÿ›ก๏ธ Security Considerations - -### **Repository Security** -- **HTTPS**: All repositories use HTTPS -- **GPG Verification**: Package signature verification -- **Trusted Sources**: Only official repositories used -- **Security Updates**: Automatic security patch installation - -### **Service Security** -- **Firewall**: Automatic firewall configuration -- **User Permissions**: Proper file and directory permissions -- **Service Isolation**: Services run with appropriate privileges -- **SSL/TLS**: Automatic SSL certificate generation - -## ๐Ÿ“š Additional Resources - -### **Documentation** -- **Installation Guide**: `guides/INSTALLATION.md` -- **Troubleshooting**: `guides/TROUBLESHOOTING.md` -- **Security Guide**: `guides/SECURITY_INSTALLATION.md` - -### **Support** -- **Community Forum**: https://community.cyberpanel.net -- **GitHub Issues**: https://github.com/usmannasir/cyberpanel/issues -- **Discord Server**: https://discord.gg/cyberpanel - -### **Testing Scripts** -- **Compatibility Test**: `./test_all_os_compatibility.sh` -- **Installation Test**: `./test_installer_all_os.sh` -- **Universal Fixes**: `install/universal_os_fixes.py` - ---- - -## ๐ŸŽ‰ Conclusion - -CyberPanel now has **100% compatibility** across all supported operating systems. The universal compatibility system ensures: - -- โœ… **Seamless Installation** on any supported OS -- โœ… **Automatic Problem Resolution** with fallback mechanisms -- โœ… **Comprehensive Testing** before and after installation -- โœ… **Detailed Reporting** for troubleshooting and optimization -- โœ… **Continuous Improvement** through automated testing - -**The installer is now truly universal and ready for production use on any supported Linux distribution!** - ---- - -*Last updated: September 2025* -*Version: 2.5.5-dev* diff --git a/cyberpanel_clean.sh b/cyberpanel_clean.sh deleted file mode 100644 index 34edb731a..000000000 --- a/cyberpanel_clean.sh +++ /dev/null @@ -1,1120 +0,0 @@ -#!/bin/bash - -# CyberPanel Clean Installer -# Simple, clean interface without escape codes -# This version works reliably in all terminals - -set -e - -# Global variables -SERVER_OS="" -OS_FAMILY="" -PACKAGE_MANAGER="" -ARCHITECTURE="" -BRANCH_NAME="" -DEBUG_MODE=false -AUTO_INSTALL=false -INTERACTIVE_MODE=true -INSTALLATION_TYPE="" - -# Logging function -log_message() { - echo "[$(date '+%Y-%m-%d %H:%M:%S')] [CYBERPANEL] $1" | tee -a "/var/log/cyberpanel_install.log" 2>/dev/null || echo "[$(date '+%Y-%m-%d %H:%M:%S')] [CYBERPANEL] $1" -} - -# Print status -print_status() { - local message="$1" - echo "$message" - log_message "$message" -} - -# Function to show banner -show_banner() { - clear - echo "" - echo "===============================================================================================================" - echo " CYBERPANEL COMPLETE INSTALLER" - echo "===============================================================================================================" - echo "" - echo " The Ultimate Web Hosting Control Panel" - echo " Powered by OpenLiteSpeed โ€ข Fast โ€ข Secure โ€ข Scalable" - echo "" - echo " Interactive Menus โ€ข Version Selection โ€ข Advanced Options" - echo "" - echo "===============================================================================================================" - echo "" -} - -# Function to detect OS -detect_os() { - print_status "Detecting operating system..." - - # Detect architecture - ARCHITECTURE=$(uname -m) - case $ARCHITECTURE in - x86_64) - print_status "Architecture: x86_64 (Supported)" - ;; - aarch64|arm64) - print_status "Architecture: $ARCHITECTURE (Limited support)" - ;; - *) - print_status "Architecture: $ARCHITECTURE (Not supported)" - return 1 - ;; - esac - - # Get OS release information - local OUTPUT=$(cat /etc/*release 2>/dev/null) - if [ -z "$OUTPUT" ]; then - print_status "ERROR: Cannot read OS release information" - return 1 - fi - - # Detect OS - if echo $OUTPUT | grep -q "AlmaLinux 9" ; then - SERVER_OS="AlmaLinux9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "Detected: AlmaLinux 9" - elif echo $OUTPUT | grep -q "AlmaLinux 8" ; then - SERVER_OS="AlmaLinux8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "Detected: AlmaLinux 8" - elif echo $OUTPUT | grep -q "CentOS Linux 9" ; then - SERVER_OS="CentOS9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "Detected: CentOS Linux 9" - elif echo $OUTPUT | grep -q "CentOS Linux 8" ; then - SERVER_OS="CentOS8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "Detected: CentOS Linux 8" - elif echo $OUTPUT | grep -q "Rocky Linux 9" ; then - SERVER_OS="RockyLinux9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "Detected: Rocky Linux 9" - elif echo $OUTPUT | grep -q "Rocky Linux 8" ; then - SERVER_OS="RockyLinux8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "Detected: Rocky Linux 8" - elif echo $OUTPUT | grep -q "Ubuntu 22.04" ; then - SERVER_OS="Ubuntu2204" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "Detected: Ubuntu 22.04" - elif echo $OUTPUT | grep -q "Ubuntu 20.04" ; then - SERVER_OS="Ubuntu2004" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "Detected: Ubuntu 20.04" - elif echo $OUTPUT | grep -q "Debian GNU/Linux 12" ; then - SERVER_OS="Debian12" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "Detected: Debian GNU/Linux 12" - elif echo $OUTPUT | grep -q "Debian GNU/Linux 11" ; then - SERVER_OS="Debian11" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "Detected: Debian GNU/Linux 11" - else - print_status "ERROR: Unsupported OS detected" - print_status "Supported OS: AlmaLinux 8/9, CentOS 8/9, Rocky Linux 8/9, Ubuntu 20.04/22.04, Debian 11/12" - return 1 - fi - - return 0 -} - -# Function to install dependencies -install_dependencies() { - print_status "Installing dependencies..." - - case $OS_FAMILY in - "rhel") - # Install EPEL - $PACKAGE_MANAGER install -y epel-release 2>/dev/null || true - - # Install development tools - $PACKAGE_MANAGER groupinstall -y 'Development Tools' 2>/dev/null || { - $PACKAGE_MANAGER install -y gcc gcc-c++ make kernel-devel 2>/dev/null || true - } - - # Install core packages - if [ "$SERVER_OS" = "AlmaLinux9" ] || [ "$SERVER_OS" = "CentOS9" ] || [ "$SERVER_OS" = "RockyLinux9" ]; then - # AlmaLinux 9 / CentOS 9 / Rocky Linux 9 - $PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma python3 python3-pip python3-devel 2>/dev/null || true - $PACKAGE_MANAGER install -y aspell 2>/dev/null || print_status "WARNING: aspell not available, skipping..." - $PACKAGE_MANAGER install -y libc-client-devel 2>/dev/null || print_status "WARNING: libc-client-devel not available, skipping..." - else - # AlmaLinux 8 / CentOS 8 / Rocky Linux 8 - $PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma aspell libc-client-devel python3 python3-pip python3-devel 2>/dev/null || true - fi - ;; - "debian") - # Update package lists - apt update -qq 2>/dev/null || true - - # Install essential packages - apt install -y -qq curl wget git unzip tar gzip bzip2 2>/dev/null || true - - # Install development tools - apt install -y -qq build-essential gcc g++ make python3-dev python3-pip 2>/dev/null || true - - # Install core packages - apt install -y -qq imagemagick php-gd libicu-dev libonig-dev 2>/dev/null || true - apt install -y -qq aspell 2>/dev/null || print_status "WARNING: aspell not available, skipping..." - apt install -y -qq libc-client-dev 2>/dev/null || print_status "WARNING: libc-client-dev not available, skipping..." - ;; - esac - - print_status "SUCCESS: Dependencies installed successfully" -} - -# Function to install CyberPanel -install_cyberpanel() { - print_status "Installing CyberPanel..." - - # Download and run the original installer - if [ -n "$BRANCH_NAME" ]; then - curl --silent -o cyberpanel.sh "https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/cyberpanel.sh" 2>/dev/null - else - curl --silent -o cyberpanel.sh "https://cyberpanel.sh/?dl&$SERVER_OS" 2>/dev/null - fi - - chmod +x cyberpanel.sh - - # Run the installer - if ./cyberpanel.sh $([ "$DEBUG_MODE" = true ] && echo "--debug") > /tmp/cyberpanel_install_output.log 2>&1; then - print_status "SUCCESS: CyberPanel installed successfully" - return 0 - else - print_status "ERROR: CyberPanel installation failed. Check /tmp/cyberpanel_install_output.log for details" - return 1 - fi -} - -# Function to apply fixes -apply_fixes() { - print_status "Applying installation fixes..." - - # Fix database issues - systemctl start mariadb 2>/dev/null || true - systemctl enable mariadb 2>/dev/null || true - mysqladmin -u root password '1234567' 2>/dev/null || true - - # Create cyberpanel database user - mysql -u root -p1234567 -e " - CREATE DATABASE IF NOT EXISTS cyberpanel; - CREATE USER IF NOT EXISTS 'cyberpanel'@'localhost' IDENTIFIED BY 'cyberpanel'; - GRANT ALL PRIVILEGES ON cyberpanel.* TO 'cyberpanel'@'localhost'; - FLUSH PRIVILEGES; - " 2>/dev/null || true - - # Fix LiteSpeed service - cat > /etc/systemd/system/lsws.service << 'EOF' -[Unit] -Description=LiteSpeed Web Server -After=network.target - -[Service] -Type=forking -User=root -Group=root -ExecStart=/usr/local/lsws/bin/lswsctrl start -ExecStop=/usr/local/lsws/bin/lswsctrl stop -ExecReload=/usr/local/lsws/bin/lswsctrl restart -Restart=always -RestartSec=5 - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl enable lsws - systemctl start lsws - - # Fix CyberPanel service - cat > /etc/systemd/system/cyberpanel.service << 'EOF' -[Unit] -Description=CyberPanel Web Interface -After=network.target mariadb.service - -[Service] -Type=simple -User=root -Group=root -WorkingDirectory=/usr/local/CyberCP -ExecStart=/usr/local/CyberPanel-venv/bin/python manage.py runserver 0.0.0.0:8000 -Restart=always -RestartSec=5 -Environment=DJANGO_SETTINGS_MODULE=CyberCP.settings - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl enable cyberpanel - - print_status "SUCCESS: All fixes applied successfully" -} - -# Function to show status summary -show_status_summary() { - echo "" - echo "===============================================================================================================" - echo " CYBERPANEL INSTALLATION STATUS" - echo "===============================================================================================================" - echo "" - - echo "CORE SERVICES STATUS:" - echo "--------------------------------------------------------------------------------" - - # Check services - if systemctl is-active --quiet mariadb; then - echo "SUCCESS: MariaDB Database - RUNNING" - else - echo "ERROR: MariaDB Database - NOT RUNNING" - fi - - if systemctl is-active --quiet lsws; then - echo "SUCCESS: LiteSpeed Web Server - RUNNING" - else - echo "ERROR: LiteSpeed Web Server - NOT RUNNING" - fi - - if systemctl is-active --quiet cyberpanel; then - echo "SUCCESS: CyberPanel Application - RUNNING" - else - echo "ERROR: CyberPanel Application - NOT RUNNING" - fi - - echo "" - echo "NETWORK PORTS STATUS:" - echo "--------------------------------------------------------------------------------" - - # Check ports - if netstat -tlnp | grep -q ":8090 "; then - echo "SUCCESS: Port 8090 (CyberPanel) - LISTENING" - else - echo "ERROR: Port 8090 (CyberPanel) - NOT LISTENING" - fi - - if netstat -tlnp | grep -q ":80 "; then - echo "SUCCESS: Port 80 (HTTP) - LISTENING" - else - echo "ERROR: Port 80 (HTTP) - NOT LISTENING" - fi - - echo "" - echo "SUMMARY:" - echo "--------------------------------------------------------------------------------" - print_status "SUCCESS: INSTALLATION COMPLETED SUCCESSFULLY!" - echo "" - echo "Access CyberPanel at: http://your-server-ip:8090" - echo "Default username: admin" - echo "Default password: 1234567" - echo "" - echo "IMPORTANT: Change the default password immediately!" - echo "" -} - -# Function to show main menu -show_main_menu() { - show_banner - - echo "===============================================================================================================" - echo " SELECT INSTALLATION TYPE" - echo "===============================================================================================================" - echo "" - echo " 1. Fresh Installation (Recommended)" - echo " 2. Update Existing Installation" - echo " 3. Reinstall CyberPanel" - echo " 4. Check System Status" - echo " 5. Advanced Options" - echo " 6. Exit" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Enter your choice [1-6]: " - read -r choice - - case $choice in - 1) - INSTALLATION_TYPE="fresh" - show_fresh_install_menu - return - ;; - 2) - INSTALLATION_TYPE="update" - show_update_menu - return - ;; - 3) - INSTALLATION_TYPE="reinstall" - show_reinstall_menu - return - ;; - 4) - show_system_status - return - ;; - 5) - show_advanced_menu - return - ;; - 6) - echo "" - echo "Goodbye!" - exit 0 - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-6." - echo "" - ;; - esac - done -} - -# Function to show fresh installation menu -show_fresh_install_menu() { - echo "" - echo "===============================================================================================================" - echo " FRESH INSTALLATION SETUP" - echo "===============================================================================================================" - echo "" - - # Check if CyberPanel is already installed - if [ -d "/usr/local/CyberCP" ] && [ -f "/usr/local/CyberCP/manage.py" ]; then - echo "WARNING: CyberPanel appears to be already installed on this system." - echo " Consider using 'Update' or 'Reinstall' options instead." - echo "" - echo -n "Do you want to continue with fresh installation anyway? (y/n): " - read -r response - case $response in - [yY]|[yY][eE][sS]) - ;; - *) - show_main_menu - return - ;; - esac - fi - - echo "Select installation option:" - echo "" - echo " 1. Install Latest Stable Version" - echo " 2. Install Development Version (v2.5.5-dev)" - echo " 3. Install Specific Version/Branch" - echo " 4. Quick Install (Auto-configure everything)" - echo " 5. Back to Main Menu" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select installation option [1-5]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - show_installation_preferences - return - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - show_installation_preferences - return - ;; - 3) - show_version_selection - return - ;; - 4) - BRANCH_NAME="" - AUTO_INSTALL=true - start_installation - return - ;; - 5) - show_main_menu - return - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-5." - echo "" - ;; - esac - done -} - -# Function to show version selection -show_version_selection() { - echo "" - echo "===============================================================================================================" - echo " VERSION SELECTION" - echo "===============================================================================================================" - echo "" - echo "Available versions:" - echo "" - echo " 1. Latest Stable (Recommended)" - echo " 2. v2.5.5-dev (Development)" - echo " 3. v2.5.4 (Previous Stable)" - echo " 4. Custom Branch/Commit" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select version [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - BRANCH_NAME="v2.5.4" - break - ;; - 4) - echo -n "Enter branch name or commit hash: " - read -r BRANCH_NAME - break - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-4." - echo "" - ;; - esac - done - - show_installation_preferences -} - -# Function to show installation preferences -show_installation_preferences() { - echo "" - echo "===============================================================================================================" - echo " INSTALLATION PREFERENCES" - echo "===============================================================================================================" - echo "" - - # Debug mode - echo -n "Enable debug mode for detailed logging? (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - DEBUG_MODE=true - ;; - esac - - # Auto-install - echo -n "Auto-install without further prompts? (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - AUTO_INSTALL=true - ;; - esac - - # Show summary - echo "" - echo "===============================================================================================================" - echo " INSTALLATION SUMMARY" - echo "===============================================================================================================" - echo "" - echo " Type: $INSTALLATION_TYPE" - echo " Version: ${BRANCH_NAME:-'Latest Stable'}" - echo " Debug Mode: $DEBUG_MODE" - echo " Auto Install: $AUTO_INSTALL" - echo "" - echo "===============================================================================================================" - echo "" - - echo -n "Proceed with installation? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - start_installation - ;; - esac -} - -# Function to show update menu -show_update_menu() { - echo "" - echo "===============================================================================================================" - echo " UPDATE INSTALLATION" - echo "===============================================================================================================" - echo "" - - if [ ! -d "/usr/local/CyberCP" ] || [ ! -f "/usr/local/CyberCP/manage.py" ]; then - echo "ERROR: CyberPanel is not installed on this system." - echo " Please use 'Fresh Installation' instead." - echo "" - read -p "Press Enter to return to main menu..." - show_main_menu - return - fi - - # Check current version - local current_version="unknown" - if [ -f "/usr/local/CyberCP/version.txt" ]; then - current_version=$(cat /usr/local/CyberCP/version.txt 2>/dev/null) - fi - - echo "Current Installation:" - echo "Version: $current_version" - echo "Path: /usr/local/CyberCP" - echo "" - - echo "Select update option:" - echo "" - echo " 1. Update to Latest Stable" - echo " 2. Update to Development Version" - echo " 3. Update to Specific Version" - echo " 4. Back to Main Menu" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select update option [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - show_version_selection - return - ;; - 4) - show_main_menu - return - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-4." - echo "" - ;; - esac - done - - echo -n "Proceed with update? (This will backup your current installation) (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - start_installation - ;; - esac -} - -# Function to show reinstall menu -show_reinstall_menu() { - echo "" - echo "===============================================================================================================" - echo " REINSTALL CYBERPANEL" - echo "===============================================================================================================" - echo "" - - if [ ! -d "/usr/local/CyberCP" ] || [ ! -f "/usr/local/CyberCP/manage.py" ]; then - echo "ERROR: CyberPanel is not installed on this system." - echo " Please use 'Fresh Installation' instead." - echo "" - read -p "Press Enter to return to main menu..." - show_main_menu - return - fi - - echo "WARNING: This will completely remove the existing CyberPanel installation" - echo " and install a fresh copy. All data will be lost!" - echo "" - - echo -n "Are you sure you want to reinstall? (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - ;; - *) - show_main_menu - return - ;; - esac - - echo "Select reinstall option:" - echo "" - echo " 1. Reinstall Latest Stable" - echo " 2. Reinstall Development Version" - echo " 3. Reinstall Specific Version" - echo " 4. Back to Main Menu" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select reinstall option [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - show_version_selection - return - ;; - 4) - show_main_menu - return - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-4." - echo "" - ;; - esac - done - - echo -n "Proceed with reinstall? (This will delete all existing data) (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - start_installation - ;; - *) - show_main_menu - ;; - esac -} - -# Function to show system status -show_system_status() { - echo "" - echo "===============================================================================================================" - echo " SYSTEM STATUS CHECK" - echo "===============================================================================================================" - echo "" - - # Check OS - local os_info=$(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2 2>/dev/null || echo 'Unknown') - echo "Operating System: $os_info" - - # Check CyberPanel installation - if [ -d "/usr/local/CyberCP" ] && [ -f "/usr/local/CyberCP/manage.py" ]; then - local version="unknown" - if [ -f "/usr/local/CyberCP/version.txt" ]; then - version=$(cat /usr/local/CyberCP/version.txt 2>/dev/null) - fi - echo "CyberPanel: Installed (Version: $version)" - else - echo "CyberPanel: Not Installed" - fi - - # Check services - echo "" - echo "Services Status:" - if systemctl is-active --quiet mariadb; then - echo " SUCCESS: MariaDB - Running" - else - echo " ERROR: MariaDB - Not Running" - fi - - if systemctl is-active --quiet lsws; then - echo " SUCCESS: LiteSpeed - Running" - else - echo " ERROR: LiteSpeed - Not Running" - fi - - if systemctl is-active --quiet cyberpanel; then - echo " SUCCESS: CyberPanel - Running" - else - echo " ERROR: CyberPanel - Not Running" - fi - - # Check ports - echo "" - echo "Port Status:" - if netstat -tlnp | grep -q ":8090 "; then - echo " SUCCESS: Port 8090 (CyberPanel) - Listening" - else - echo " ERROR: Port 8090 (CyberPanel) - Not Listening" - fi - - if netstat -tlnp | grep -q ":80 "; then - echo " SUCCESS: Port 80 (HTTP) - Listening" - else - echo " ERROR: Port 80 (HTTP) - Not Listening" - fi - - echo "" - echo -n "Return to main menu? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - exit 0 - ;; - *) - show_main_menu - ;; - esac -} - -# Function to show advanced menu -show_advanced_menu() { - echo "" - echo "===============================================================================================================" - echo " ADVANCED OPTIONS" - echo "===============================================================================================================" - echo "" - echo " 1. Fix Installation Issues" - echo " 2. Clean Installation Files" - echo " 3. View Installation Logs" - echo " 4. System Diagnostics" - echo " 5. Back to Main Menu" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select advanced option [1-5]: " - read -r choice - - case $choice in - 1) - show_fix_menu - return - ;; - 2) - show_clean_menu - return - ;; - 3) - show_logs_menu - return - ;; - 4) - show_diagnostics - return - ;; - 5) - show_main_menu - return - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-5." - echo "" - ;; - esac - done -} - -# Function to show fix menu -show_fix_menu() { - echo "" - echo "===============================================================================================================" - echo " FIX INSTALLATION ISSUES" - echo "===============================================================================================================" - echo "" - echo "This will attempt to fix common CyberPanel installation issues:" - echo "โ€ข Database connection problems" - echo "โ€ข Service configuration issues" - echo "โ€ข SSL certificate problems" - echo "โ€ข File permission issues" - echo "" - - echo -n "Proceed with fixing installation issues? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_advanced_menu - ;; - *) - print_status "Applying fixes..." - apply_fixes - print_status "SUCCESS: Fixes applied successfully" - echo "" - read -p "Press Enter to return to advanced menu..." - show_advanced_menu - ;; - esac -} - -# Function to show clean menu -show_clean_menu() { - echo "" - echo "===============================================================================================================" - echo " CLEAN INSTALLATION FILES" - echo "===============================================================================================================" - echo "" - echo "WARNING: This will remove temporary installation files and logs." - echo " This action cannot be undone!" - echo "" - - echo -n "Proceed with cleaning? (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - rm -rf /tmp/cyberpanel_* - rm -rf /var/log/cyberpanel_install.log - echo "SUCCESS: Cleanup complete! Temporary files and logs have been removed." - ;; - esac - - echo "" - echo -n "Return to advanced menu? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to show logs menu -show_logs_menu() { - echo "" - echo "===============================================================================================================" - echo " VIEW INSTALLATION LOGS" - echo "===============================================================================================================" - echo "" - - local log_file="/var/log/cyberpanel_install.log" - - if [ -f "$log_file" ]; then - echo "Installation Log: $log_file" - echo "Log Size: $(du -h "$log_file" | cut -f1)" - echo "" - - echo -n "View recent log entries? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - ;; - *) - echo "" - echo "Recent log entries:" - tail -n 20 "$log_file" - ;; - esac - else - echo "No installation logs found at $log_file" - fi - - echo "" - echo -n "Return to advanced menu? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to show diagnostics -show_diagnostics() { - echo "" - echo "===============================================================================================================" - echo " SYSTEM DIAGNOSTICS" - echo "===============================================================================================================" - echo "" - - echo "Running system diagnostics..." - echo "" - - # Disk space - echo "Disk Usage:" - df -h | grep -E '^/dev/' - - # Memory usage - echo "" - echo "Memory Usage:" - free -h - - # Load average - echo "" - echo "System Load:" - uptime - - # Network interfaces - echo "" - echo "Network Interfaces:" - ip addr show | grep -E '^[0-9]+:|inet ' - - echo "" - echo -n "Return to advanced menu? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to start installation -start_installation() { - echo "" - echo "===============================================================================================================" - echo " STARTING INSTALLATION" - echo "===============================================================================================================" - echo "" - - # Detect OS - if ! detect_os; then - print_status "ERROR: Failed to detect operating system" - exit 1 - fi - - # Install dependencies - install_dependencies - - # Install CyberPanel - if ! install_cyberpanel; then - print_status "ERROR: CyberPanel installation failed" - exit 1 - fi - - # Apply fixes - apply_fixes - - # Show status summary - show_status_summary - - print_status "SUCCESS: Installation completed successfully!" -} - -# Function to parse command line arguments -parse_arguments() { - while [[ $# -gt 0 ]]; do - case $1 in - -b|--branch) - BRANCH_NAME="$2" - shift 2 - ;; - --debug) - DEBUG_MODE=true - set -x - shift - ;; - --auto) - AUTO_INSTALL=true - INTERACTIVE_MODE=false - shift - ;; - -h|--help) - echo "Usage: $0 [OPTIONS]" - echo "Options:" - echo " -b, --branch BRANCH Install from specific branch/commit" - echo " --debug Enable debug mode" - echo " --auto Auto mode without prompts" - echo " -h, --help Show this help message" - echo "" - echo "Examples:" - echo " $0 # Interactive installation" - echo " $0 --debug # Debug mode installation" - echo " $0 --auto # Auto installation" - echo " $0 -b v2.5.5-dev # Install development version" - exit 0 - ;; - *) - print_status "WARNING: Unknown option: $1" - shift - ;; - esac - done -} - -# Main installation function -main() { - # Initialize log file - mkdir -p /var/log - touch "/var/log/cyberpanel_install.log" - - print_status "CyberPanel Clean Installer Starting..." - print_status "Log file: /var/log/cyberpanel_install.log" - - # Parse command line arguments - parse_arguments "$@" - - # Check if auto mode is requested - if [ "$AUTO_INSTALL" = true ]; then - # Run auto mode - print_status "Starting auto mode..." - - # Detect OS - if ! detect_os; then - print_status "ERROR: Failed to detect operating system" - exit 1 - fi - - # Install dependencies - install_dependencies - - # Install CyberPanel - if ! install_cyberpanel; then - print_status "ERROR: CyberPanel installation failed" - exit 1 - fi - - # Apply fixes - apply_fixes - - # Show status summary - show_status_summary - - print_status "SUCCESS: Installation completed successfully!" - else - # Run interactive mode - show_main_menu - fi -} - -# Run main function -main "$@" diff --git a/cyberpanel_complete.sh b/cyberpanel_complete.sh deleted file mode 100644 index 6d276d9c3..000000000 --- a/cyberpanel_complete.sh +++ /dev/null @@ -1,1117 +0,0 @@ -#!/bin/bash - -# CyberPanel Complete Standalone Installer -# Full-featured installer with interactive menus and all options -# This version works when downloaded via curl - -set -e - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -PURPLE='\033[0;35m' -CYAN='\033[0;36m' -WHITE='\033[1;37m' -BOLD='\033[1m' -DIM='\033[2m' -NC='\033[0m' # No Color - -# Global variables -SERVER_OS="" -OS_FAMILY="" -PACKAGE_MANAGER="" -ARCHITECTURE="" -BRANCH_NAME="" -DEBUG_MODE=false -AUTO_INSTALL=false -INTERACTIVE_MODE=true -INSTALLATION_TYPE="" - -# Logging function -log_message() { - echo "[$(date '+%Y-%m-%d %H:%M:%S')] [CYBERPANEL] $1" | tee -a "/var/log/cyberpanel_install.log" 2>/dev/null || echo "[$(date '+%Y-%m-%d %H:%M:%S')] [CYBERPANEL] $1" -} - -# Print colored output -print_status() { - local color=$1 - local message=$2 - echo -e "${color}${message}${NC}" - log_message "$message" -} - -# Function to show banner -show_banner() { - clear - echo -e "${BLUE}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${WHITE}${BOLD}๐Ÿš€ CYBERPANEL COMPLETE INSTALLER ๐Ÿš€${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${CYAN}The Ultimate Web Hosting Control Panel${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${YELLOW}Powered by OpenLiteSpeed โ€ข Fast โ€ข Secure โ€ข Scalable${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${GREEN}โœจ Interactive Menus โ€ข Version Selection โ€ข Advanced Options โœจ${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - echo "" -} - -# Function to detect OS -detect_os() { - print_status "$BLUE" "๐Ÿ” Detecting operating system..." - - # Detect architecture - ARCHITECTURE=$(uname -m) - case $ARCHITECTURE in - x86_64) - print_status "$GREEN" "Architecture: x86_64 (Supported)" - ;; - aarch64|arm64) - print_status "$YELLOW" "Architecture: $ARCHITECTURE (Limited support)" - ;; - *) - print_status "$RED" "Architecture: $ARCHITECTURE (Not supported)" - return 1 - ;; - esac - - # Get OS release information - local OUTPUT=$(cat /etc/*release 2>/dev/null) - if [ -z "$OUTPUT" ]; then - print_status "$RED" "โŒ Cannot read OS release information" - return 1 - fi - - # Detect OS - if echo $OUTPUT | grep -q "AlmaLinux 9" ; then - SERVER_OS="AlmaLinux9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "$GREEN" "Detected: AlmaLinux 9" - elif echo $OUTPUT | grep -q "AlmaLinux 8" ; then - SERVER_OS="AlmaLinux8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "$GREEN" "Detected: AlmaLinux 8" - elif echo $OUTPUT | grep -q "CentOS Linux 9" ; then - SERVER_OS="CentOS9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "$GREEN" "Detected: CentOS Linux 9" - elif echo $OUTPUT | grep -q "CentOS Linux 8" ; then - SERVER_OS="CentOS8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "$GREEN" "Detected: CentOS Linux 8" - elif echo $OUTPUT | grep -q "Rocky Linux 9" ; then - SERVER_OS="RockyLinux9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "$GREEN" "Detected: Rocky Linux 9" - elif echo $OUTPUT | grep -q "Rocky Linux 8" ; then - SERVER_OS="RockyLinux8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "$GREEN" "Detected: Rocky Linux 8" - elif echo $OUTPUT | grep -q "Ubuntu 22.04" ; then - SERVER_OS="Ubuntu2204" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "$GREEN" "Detected: Ubuntu 22.04" - elif echo $OUTPUT | grep -q "Ubuntu 20.04" ; then - SERVER_OS="Ubuntu2004" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "$GREEN" "Detected: Ubuntu 20.04" - elif echo $OUTPUT | grep -q "Debian GNU/Linux 12" ; then - SERVER_OS="Debian12" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "$GREEN" "Detected: Debian GNU/Linux 12" - elif echo $OUTPUT | grep -q "Debian GNU/Linux 11" ; then - SERVER_OS="Debian11" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "$GREEN" "Detected: Debian GNU/Linux 11" - else - print_status "$RED" "โŒ Unsupported OS detected" - print_status "$YELLOW" "Supported OS: AlmaLinux 8/9, CentOS 8/9, Rocky Linux 8/9, Ubuntu 20.04/22.04, Debian 11/12" - return 1 - fi - - return 0 -} - -# Function to install dependencies -install_dependencies() { - print_status "$BLUE" "๐Ÿ“ฆ Installing dependencies..." - - case $OS_FAMILY in - "rhel") - # Install EPEL - $PACKAGE_MANAGER install -y epel-release 2>/dev/null || true - - # Install development tools - $PACKAGE_MANAGER groupinstall -y 'Development Tools' 2>/dev/null || { - $PACKAGE_MANAGER install -y gcc gcc-c++ make kernel-devel 2>/dev/null || true - } - - # Install core packages - if [ "$SERVER_OS" = "AlmaLinux9" ] || [ "$SERVER_OS" = "CentOS9" ] || [ "$SERVER_OS" = "RockyLinux9" ]; then - # AlmaLinux 9 / CentOS 9 / Rocky Linux 9 - $PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma python3 python3-pip python3-devel 2>/dev/null || true - $PACKAGE_MANAGER install -y aspell 2>/dev/null || print_status "$YELLOW" "aspell not available, skipping..." - $PACKAGE_MANAGER install -y libc-client-devel 2>/dev/null || print_status "$YELLOW" "libc-client-devel not available, skipping..." - else - # AlmaLinux 8 / CentOS 8 / Rocky Linux 8 - $PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma aspell libc-client-devel python3 python3-pip python3-devel 2>/dev/null || true - fi - ;; - "debian") - # Update package lists - apt update -qq 2>/dev/null || true - - # Install essential packages - apt install -y -qq curl wget git unzip tar gzip bzip2 2>/dev/null || true - - # Install development tools - apt install -y -qq build-essential gcc g++ make python3-dev python3-pip 2>/dev/null || true - - # Install core packages - apt install -y -qq imagemagick php-gd libicu-dev libonig-dev 2>/dev/null || true - apt install -y -qq aspell 2>/dev/null || print_status "$YELLOW" "aspell not available, skipping..." - apt install -y -qq libc-client-dev 2>/dev/null || print_status "$YELLOW" "libc-client-dev not available, skipping..." - ;; - esac - - print_status "$GREEN" "โœ… Dependencies installed successfully" -} - -# Function to install CyberPanel -install_cyberpanel() { - print_status "$BLUE" "๐Ÿš€ Installing CyberPanel..." - - # Download and run the original installer - if [ -n "$BRANCH_NAME" ]; then - curl --silent -o cyberpanel.sh "https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/cyberpanel.sh" 2>/dev/null - else - curl --silent -o cyberpanel.sh "https://cyberpanel.sh/?dl&$SERVER_OS" 2>/dev/null - fi - - chmod +x cyberpanel.sh - - # Run the installer - if ./cyberpanel.sh $([ "$DEBUG_MODE" = true ] && echo "--debug") > /tmp/cyberpanel_install_output.log 2>&1; then - print_status "$GREEN" "โœ… CyberPanel installed successfully" - return 0 - else - print_status "$RED" "โŒ CyberPanel installation failed. Check /tmp/cyberpanel_install_output.log for details" - return 1 - fi -} - -# Function to apply fixes -apply_fixes() { - print_status "$BLUE" "๐Ÿ”ง Applying installation fixes..." - - # Fix database issues - systemctl start mariadb 2>/dev/null || true - systemctl enable mariadb 2>/dev/null || true - mysqladmin -u root password '1234567' 2>/dev/null || true - - # Create cyberpanel database user - mysql -u root -p1234567 -e " - CREATE DATABASE IF NOT EXISTS cyberpanel; - CREATE USER IF NOT EXISTS 'cyberpanel'@'localhost' IDENTIFIED BY 'cyberpanel'; - GRANT ALL PRIVILEGES ON cyberpanel.* TO 'cyberpanel'@'localhost'; - FLUSH PRIVILEGES; - " 2>/dev/null || true - - # Fix LiteSpeed service - cat > /etc/systemd/system/lsws.service << 'EOF' -[Unit] -Description=LiteSpeed Web Server -After=network.target - -[Service] -Type=forking -User=root -Group=root -ExecStart=/usr/local/lsws/bin/lswsctrl start -ExecStop=/usr/local/lsws/bin/lswsctrl stop -ExecReload=/usr/local/lsws/bin/lswsctrl restart -Restart=always -RestartSec=5 - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl enable lsws - systemctl start lsws - - # Fix CyberPanel service - cat > /etc/systemd/system/cyberpanel.service << 'EOF' -[Unit] -Description=CyberPanel Web Interface -After=network.target mariadb.service - -[Service] -Type=simple -User=root -Group=root -WorkingDirectory=/usr/local/CyberCP -ExecStart=/usr/local/CyberPanel-venv/bin/python manage.py runserver 0.0.0.0:8000 -Restart=always -RestartSec=5 -Environment=DJANGO_SETTINGS_MODULE=CyberCP.settings - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl enable cyberpanel - - print_status "$GREEN" "โœ… All fixes applied successfully" -} - -# Function to show status summary -show_status_summary() { - echo "" - echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—" - echo "โ•‘ โ•‘" - echo "โ•‘ ๐Ÿ“Š CYBERPANEL INSTALLATION STATUS ๐Ÿ“Š โ•‘" - echo "โ•‘ โ•‘" - echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - echo "" - - echo "๐Ÿ”ง CORE SERVICES STATUS:" - echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - - # Check services - if systemctl is-active --quiet mariadb; then - echo "โœ… MariaDB Database: RUNNING" - else - echo "โŒ MariaDB Database: NOT RUNNING" - fi - - if systemctl is-active --quiet lsws; then - echo "โœ… LiteSpeed Web Server: RUNNING" - else - echo "โŒ LiteSpeed Web Server: NOT RUNNING" - fi - - if systemctl is-active --quiet cyberpanel; then - echo "โœ… CyberPanel Application: RUNNING" - else - echo "โŒ CyberPanel Application: NOT RUNNING" - fi - - echo "" - echo "๐ŸŒ NETWORK PORTS STATUS:" - echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - - # Check ports - if netstat -tlnp | grep -q ":8090 "; then - echo "โœ… Port 8090 (CyberPanel): LISTENING" - else - echo "โŒ Port 8090 (CyberPanel): NOT LISTENING" - fi - - if netstat -tlnp | grep -q ":80 "; then - echo "โœ… Port 80 (HTTP): LISTENING" - else - echo "โŒ Port 80 (HTTP): NOT LISTENING" - fi - - echo "" - echo "๐Ÿ“Š SUMMARY:" - echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - print_status "$GREEN" "๐ŸŽ‰ INSTALLATION COMPLETED SUCCESSFULLY!" - echo "" - echo "๐ŸŒ Access CyberPanel at: http://your-server-ip:8090" - echo "๐Ÿ‘ค Default username: admin" - echo "๐Ÿ”‘ Default password: 1234567" - echo "" - echo "โš ๏ธ IMPORTANT: Change the default password immediately!" - echo "" -} - -# Function to show main menu -show_main_menu() { - show_banner - - local options=( - "๐Ÿš€ Fresh Installation (Recommended)" - "๐Ÿ”„ Update Existing Installation" - "๐Ÿ”ง Reinstall CyberPanel" - "๐Ÿ“Š Check System Status" - "๐Ÿ› ๏ธ Advanced Options" - "โŒ Exit" - ) - - echo -e "${WHITE}${BOLD}Select Installation Type:${NC}" - echo "" - for i in "${!options[@]}"; do - local option_num=$((i + 1)) - echo -e "${BLUE}${option_num}.${NC} ${options[i]}" - done - echo "" - - while true; do - echo -e "${CYAN}Enter your choice${NC} [1-6]: " - read -r choice - - case $choice in - 1) - INSTALLATION_TYPE="fresh" - show_fresh_install_menu - return - ;; - 2) - INSTALLATION_TYPE="update" - show_update_menu - return - ;; - 3) - INSTALLATION_TYPE="reinstall" - show_reinstall_menu - return - ;; - 4) - show_system_status - return - ;; - 5) - show_advanced_menu - return - ;; - 6) - echo -e "${GREEN}Goodbye!${NC}" - exit 0 - ;; - *) - echo -e "${RED}Invalid choice. Please enter 1-6.${NC}" - ;; - esac - done -} - -# Function to show fresh installation menu -show_fresh_install_menu() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿš€ Fresh Installation Setup${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - # Check if CyberPanel is already installed - if [ -d "/usr/local/CyberCP" ] && [ -f "/usr/local/CyberCP/manage.py" ]; then - echo -e "${YELLOW}โš ๏ธ CyberPanel appears to be already installed on this system.${NC}" - echo -e "${YELLOW}Consider using 'Update' or 'Reinstall' options instead.${NC}" - echo "" - echo -e "${CYAN}Do you want to continue with fresh installation anyway? (y/n)${NC}: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - ;; - *) - show_main_menu - return - ;; - esac - fi - - # Show installation options - local options=( - "๐Ÿ“ฆ Install Latest Stable Version" - "๐Ÿ”ฌ Install Development Version (v2.5.5-dev)" - "๐Ÿท๏ธ Install Specific Version/Branch" - "โšก Quick Install (Auto-configure everything)" - "๐Ÿ”™ Back to Main Menu" - ) - - echo -e "${WHITE}${BOLD}Fresh Installation Options:${NC}" - echo "" - for i in "${!options[@]}"; do - local option_num=$((i + 1)) - echo -e "${BLUE}${option_num}.${NC} ${options[i]}" - done - echo "" - - while true; do - echo -e "${CYAN}Select installation option${NC} [1-5]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - show_installation_preferences - return - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - show_installation_preferences - return - ;; - 3) - show_version_selection - return - ;; - 4) - BRANCH_NAME="" - AUTO_INSTALL=true - start_installation - return - ;; - 5) - show_main_menu - return - ;; - *) - echo -e "${RED}Invalid choice. Please enter 1-5.${NC}" - ;; - esac - done -} - -# Function to show version selection -show_version_selection() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿท๏ธ Version Selection${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - echo -e "${WHITE}Available versions:${NC}" - echo -e "${BLUE}1.${NC} Latest Stable (Recommended)" - echo -e "${BLUE}2.${NC} v2.5.5-dev (Development)" - echo -e "${BLUE}3.${NC} v2.5.4 (Previous Stable)" - echo -e "${BLUE}4.${NC} Custom Branch/Commit" - echo "" - - while true; do - echo -e "${CYAN}Select version${NC} [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - BRANCH_NAME="v2.5.4" - break - ;; - 4) - echo -e "${CYAN}Enter branch name or commit hash${NC}: " - read -r BRANCH_NAME - break - ;; - *) - echo -e "${RED}Invalid choice. Please enter 1-4.${NC}" - ;; - esac - done - - show_installation_preferences -} - -# Function to show installation preferences -show_installation_preferences() { - echo "" - echo -e "${PURPLE}${BOLD}โš™๏ธ Installation Preferences${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - # Debug mode - echo -e "${CYAN}Enable debug mode for detailed logging? (y/n)${NC} [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - DEBUG_MODE=true - ;; - esac - - # Auto-install - echo -e "${CYAN}Auto-install without further prompts? (y/n)${NC} [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - AUTO_INSTALL=true - ;; - esac - - # Show summary - echo "" - echo -e "${BLUE}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—${NC}" - echo -e "${BLUE}โ•‘${NC} ${WHITE}${BOLD}Installation Summary${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} Type: $INSTALLATION_TYPE" - echo -e "${BLUE}โ•‘${NC} Version: ${BRANCH_NAME:-'Latest Stable'}" - echo -e "${BLUE}โ•‘${NC} Debug Mode: $DEBUG_MODE" - echo -e "${BLUE}โ•‘${NC} Auto Install: $AUTO_INSTALL" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - echo "" - - echo -e "${CYAN}Proceed with installation? (y/n)${NC} [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - start_installation - ;; - esac -} - -# Function to show update menu -show_update_menu() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿ”„ Update Installation${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - if [ ! -d "/usr/local/CyberCP" ] || [ ! -f "/usr/local/CyberCP/manage.py" ]; then - echo -e "${RED}โŒ CyberPanel is not installed on this system.${NC}" - echo -e "${RED}Please use 'Fresh Installation' instead.${NC}" - echo "" - read -p "Press Enter to return to main menu..." - show_main_menu - return - fi - - # Check current version - local current_version="unknown" - if [ -f "/usr/local/CyberCP/version.txt" ]; then - current_version=$(cat /usr/local/CyberCP/version.txt 2>/dev/null) - fi - - echo -e "${GREEN}Current Installation:${NC}" - echo -e "Version: $current_version" - echo -e "Path: /usr/local/CyberCP" - echo "" - - local options=( - "๐Ÿ“ˆ Update to Latest Stable" - "๐Ÿ”ฌ Update to Development Version" - "๐Ÿท๏ธ Update to Specific Version" - "๐Ÿ”™ Back to Main Menu" - ) - - echo -e "${WHITE}${BOLD}Update Options:${NC}" - echo "" - for i in "${!options[@]}"; do - local option_num=$((i + 1)) - echo -e "${BLUE}${option_num}.${NC} ${options[i]}" - done - echo "" - - while true; do - echo -e "${CYAN}Select update option${NC} [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - show_version_selection - return - ;; - 4) - show_main_menu - return - ;; - *) - echo -e "${RED}Invalid choice. Please enter 1-4.${NC}" - ;; - esac - done - - echo -e "${CYAN}Proceed with update? (This will backup your current installation) (y/n)${NC} [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - start_installation - ;; - esac -} - -# Function to show reinstall menu -show_reinstall_menu() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿ”ง Reinstall CyberPanel${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - if [ ! -d "/usr/local/CyberCP" ] || [ ! -f "/usr/local/CyberCP/manage.py" ]; then - echo -e "${RED}โŒ CyberPanel is not installed on this system.${NC}" - echo -e "${RED}Please use 'Fresh Installation' instead.${NC}" - echo "" - read -p "Press Enter to return to main menu..." - show_main_menu - return - fi - - echo -e "${YELLOW}โš ๏ธ WARNING: This will completely remove the existing CyberPanel installation${NC}" - echo -e "${YELLOW}and install a fresh copy. All data will be lost!${NC}" - echo "" - - echo -e "${CYAN}Are you sure you want to reinstall? (y/n)${NC} [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - ;; - *) - show_main_menu - return - ;; - esac - - local options=( - "๐Ÿ“ฆ Reinstall Latest Stable" - "๐Ÿ”ฌ Reinstall Development Version" - "๐Ÿท๏ธ Reinstall Specific Version" - "๐Ÿ”™ Back to Main Menu" - ) - - echo -e "${WHITE}${BOLD}Reinstall Options:${NC}" - echo "" - for i in "${!options[@]}"; do - local option_num=$((i + 1)) - echo -e "${BLUE}${option_num}.${NC} ${options[i]}" - done - echo "" - - while true; do - echo -e "${CYAN}Select reinstall option${NC} [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - show_version_selection - return - ;; - 4) - show_main_menu - return - ;; - *) - echo -e "${RED}Invalid choice. Please enter 1-4.${NC}" - ;; - esac - done - - echo -e "${CYAN}Proceed with reinstall? (This will delete all existing data) (y/n)${NC} [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - start_installation - ;; - *) - show_main_menu - ;; - esac -} - -# Function to show system status -show_system_status() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿ“Š System Status Check${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - # Check OS - local os_info=$(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2 2>/dev/null || echo 'Unknown') - echo -e "${WHITE}Operating System:${NC} $os_info" - - # Check CyberPanel installation - if [ -d "/usr/local/CyberCP" ] && [ -f "/usr/local/CyberCP/manage.py" ]; then - local version="unknown" - if [ -f "/usr/local/CyberCP/version.txt" ]; then - version=$(cat /usr/local/CyberCP/version.txt 2>/dev/null) - fi - echo -e "${GREEN}CyberPanel:${NC} Installed (Version: $version)" - else - echo -e "${RED}CyberPanel:${NC} Not Installed" - fi - - # Check services - echo -e "\n${WHITE}Services Status:${NC}" - if systemctl is-active --quiet mariadb; then - echo -e " ${GREEN}โœ…${NC} MariaDB: Running" - else - echo -e " ${RED}โŒ${NC} MariaDB: Not Running" - fi - - if systemctl is-active --quiet lsws; then - echo -e " ${GREEN}โœ…${NC} LiteSpeed: Running" - else - echo -e " ${RED}โŒ${NC} LiteSpeed: Not Running" - fi - - if systemctl is-active --quiet cyberpanel; then - echo -e " ${GREEN}โœ…${NC} CyberPanel: Running" - else - echo -e " ${RED}โŒ${NC} CyberPanel: Not Running" - fi - - # Check ports - echo -e "\n${WHITE}Port Status:${NC}" - if netstat -tlnp | grep -q ":8090 "; then - echo -e " ${GREEN}โœ…${NC} Port 8090 (CyberPanel): Listening" - else - echo -e " ${RED}โŒ${NC} Port 8090 (CyberPanel): Not Listening" - fi - - if netstat -tlnp | grep -q ":80 "; then - echo -e " ${GREEN}โœ…${NC} Port 80 (HTTP): Listening" - else - echo -e " ${RED}โŒ${NC} Port 80 (HTTP): Not Listening" - fi - - echo "" - echo -e "${CYAN}Return to main menu? (y/n)${NC} [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - exit 0 - ;; - *) - show_main_menu - ;; - esac -} - -# Function to show advanced menu -show_advanced_menu() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿ› ๏ธ Advanced Options${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - local options=( - "๐Ÿ”ง Fix Installation Issues" - "๐Ÿงน Clean Installation Files" - "๐Ÿ“‹ View Installation Logs" - "๐Ÿ” System Diagnostics" - "๐Ÿ”™ Back to Main Menu" - ) - - echo -e "${WHITE}${BOLD}Advanced Options:${NC}" - echo "" - for i in "${!options[@]}"; do - local option_num=$((i + 1)) - echo -e "${BLUE}${option_num}.${NC} ${options[i]}" - done - echo "" - - while true; do - echo -e "${CYAN}Select advanced option${NC} [1-5]: " - read -r choice - - case $choice in - 1) - show_fix_menu - return - ;; - 2) - show_clean_menu - return - ;; - 3) - show_logs_menu - return - ;; - 4) - show_diagnostics - return - ;; - 5) - show_main_menu - return - ;; - *) - echo -e "${RED}Invalid choice. Please enter 1-5.${NC}" - ;; - esac - done -} - -# Function to show fix menu -show_fix_menu() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿ”ง Fix Installation Issues${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - echo -e "${YELLOW}This will attempt to fix common CyberPanel installation issues:${NC}" - echo "โ€ข Database connection problems" - echo "โ€ข Service configuration issues" - echo "โ€ข SSL certificate problems" - echo "โ€ข File permission issues" - echo "" - - echo -e "${CYAN}Proceed with fixing installation issues? (y/n)${NC} [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_advanced_menu - ;; - *) - print_status "$BLUE" "๐Ÿ”ง Applying fixes..." - apply_fixes - print_status "$GREEN" "โœ… Fixes applied successfully" - echo "" - read -p "Press Enter to return to advanced menu..." - show_advanced_menu - ;; - esac -} - -# Function to show clean menu -show_clean_menu() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿงน Clean Installation Files${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - echo -e "${YELLOW}โš ๏ธ WARNING: This will remove temporary installation files and logs.${NC}" - echo -e "${YELLOW}This action cannot be undone!${NC}" - echo "" - - echo -e "${CYAN}Proceed with cleaning? (y/n)${NC} [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - rm -rf /tmp/cyberpanel_* - rm -rf /var/log/cyberpanel_install.log - echo -e "${GREEN}โœ… Cleanup complete! Temporary files and logs have been removed.${NC}" - ;; - esac - - echo "" - echo -e "${CYAN}Return to advanced menu? (y/n)${NC} [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to show logs menu -show_logs_menu() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿ“‹ View Installation Logs${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - local log_file="/var/log/cyberpanel_install.log" - - if [ -f "$log_file" ]; then - echo -e "${WHITE}Installation Log:${NC} $log_file" - echo -e "${WHITE}Log Size:${NC} $(du -h "$log_file" | cut -f1)" - echo "" - - echo -e "${CYAN}View recent log entries? (y/n)${NC} [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - ;; - *) - echo -e "${CYAN}Recent log entries:${NC}" - tail -n 20 "$log_file" - ;; - esac - else - echo -e "${YELLOW}No installation logs found at $log_file${NC}" - fi - - echo "" - echo -e "${CYAN}Return to advanced menu? (y/n)${NC} [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to show diagnostics -show_diagnostics() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿ” System Diagnostics${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - echo -e "${WHITE}Running system diagnostics...${NC}" - echo "" - - # Disk space - echo -e "${WHITE}Disk Usage:${NC}" - df -h | grep -E '^/dev/' - - # Memory usage - echo -e "\n${WHITE}Memory Usage:${NC}" - free -h - - # Load average - echo -e "\n${WHITE}System Load:${NC}" - uptime - - # Network interfaces - echo -e "\n${WHITE}Network Interfaces:${NC}" - ip addr show | grep -E '^[0-9]+:|inet ' - - echo "" - echo -e "${CYAN}Return to advanced menu? (y/n)${NC} [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to start installation -start_installation() { - echo "" - echo -e "${PURPLE}${BOLD}๐Ÿš€ Starting Installation${NC}" - echo -e "${PURPLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - - # Detect OS - if ! detect_os; then - print_status "$RED" "โŒ Failed to detect operating system" - exit 1 - fi - - # Install dependencies - install_dependencies - - # Install CyberPanel - if ! install_cyberpanel; then - print_status "$RED" "โŒ CyberPanel installation failed" - exit 1 - fi - - # Apply fixes - apply_fixes - - # Show status summary - show_status_summary - - print_status "$GREEN" "๐ŸŽ‰ Installation completed successfully!" -} - -# Function to parse command line arguments -parse_arguments() { - while [[ $# -gt 0 ]]; do - case $1 in - -b|--branch) - BRANCH_NAME="$2" - shift 2 - ;; - --debug) - DEBUG_MODE=true - set -x - shift - ;; - --auto) - AUTO_INSTALL=true - INTERACTIVE_MODE=false - shift - ;; - -h|--help) - echo "Usage: $0 [OPTIONS]" - echo "Options:" - echo " -b, --branch BRANCH Install from specific branch/commit" - echo " --debug Enable debug mode" - echo " --auto Auto mode without prompts" - echo " -h, --help Show this help message" - echo "" - echo "Examples:" - echo " $0 # Interactive installation" - echo " $0 --debug # Debug mode installation" - echo " $0 --auto # Auto installation" - echo " $0 -b v2.5.5-dev # Install development version" - exit 0 - ;; - *) - print_status "$YELLOW" "Unknown option: $1" - shift - ;; - esac - done -} - -# Main installation function -main() { - # Initialize log file - mkdir -p /var/log - touch "/var/log/cyberpanel_install.log" - - print_status "$BLUE" "๐Ÿš€ CyberPanel Complete Installer Starting..." - print_status "$BLUE" "Log file: /var/log/cyberpanel_install.log" - - # Parse command line arguments - parse_arguments "$@" - - # Check if auto mode is requested - if [ "$AUTO_INSTALL" = true ]; then - # Run auto mode - print_status "$BLUE" "๐Ÿค– Starting auto mode..." - - # Detect OS - if ! detect_os; then - print_status "$RED" "โŒ Failed to detect operating system" - exit 1 - fi - - # Install dependencies - install_dependencies - - # Install CyberPanel - if ! install_cyberpanel; then - print_status "$RED" "โŒ CyberPanel installation failed" - exit 1 - fi - - # Apply fixes - apply_fixes - - # Show status summary - show_status_summary - - print_status "$GREEN" "๐ŸŽ‰ Installation completed successfully!" - else - # Run interactive mode - show_main_menu - fi -} - -# Run main function -main "$@" diff --git a/cyberpanel_simple.sh b/cyberpanel_simple.sh deleted file mode 100644 index 5f469dbf8..000000000 --- a/cyberpanel_simple.sh +++ /dev/null @@ -1,1117 +0,0 @@ -#!/bin/bash - -# CyberPanel Simple Installer -# Ultra-simple version that works reliably in all terminals - -set -e - -# Global variables -SERVER_OS="" -OS_FAMILY="" -PACKAGE_MANAGER="" -ARCHITECTURE="" -BRANCH_NAME="" -DEBUG_MODE=false -AUTO_INSTALL=false -INSTALLATION_TYPE="" - -# Logging function -log_message() { - echo "[$(date '+%Y-%m-%d %H:%M:%S')] [CYBERPANEL] $1" | tee -a "/var/log/cyberpanel_install.log" 2>/dev/null || echo "[$(date '+%Y-%m-%d %H:%M:%S')] [CYBERPANEL] $1" -} - -# Print status -print_status() { - local message="$1" - echo "$message" - log_message "$message" -} - -# Function to show banner -show_banner() { - clear - echo "" - echo "===============================================================================================================" - echo " CYBERPANEL COMPLETE INSTALLER" - echo "===============================================================================================================" - echo "" - echo " The Ultimate Web Hosting Control Panel" - echo " Powered by OpenLiteSpeed โ€ข Fast โ€ข Secure โ€ข Scalable" - echo "" - echo " Interactive Menus โ€ข Version Selection โ€ข Advanced Options" - echo "" - echo "===============================================================================================================" - echo "" -} - -# Function to detect OS -detect_os() { - print_status "Detecting operating system..." - - # Detect architecture - ARCHITECTURE=$(uname -m) - case $ARCHITECTURE in - x86_64) - print_status "Architecture: x86_64 (Supported)" - ;; - aarch64|arm64) - print_status "Architecture: $ARCHITECTURE (Limited support)" - ;; - *) - print_status "Architecture: $ARCHITECTURE (Not supported)" - return 1 - ;; - esac - - # Get OS release information - local OUTPUT=$(cat /etc/*release 2>/dev/null) - if [ -z "$OUTPUT" ]; then - print_status "ERROR: Cannot read OS release information" - return 1 - fi - - # Detect OS - if echo $OUTPUT | grep -q "AlmaLinux 9" ; then - SERVER_OS="AlmaLinux9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "Detected: AlmaLinux 9" - elif echo $OUTPUT | grep -q "AlmaLinux 8" ; then - SERVER_OS="AlmaLinux8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "Detected: AlmaLinux 8" - elif echo $OUTPUT | grep -q "CentOS Linux 9" ; then - SERVER_OS="CentOS9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "Detected: CentOS Linux 9" - elif echo $OUTPUT | grep -q "CentOS Linux 8" ; then - SERVER_OS="CentOS8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "Detected: CentOS Linux 8" - elif echo $OUTPUT | grep -q "Rocky Linux 9" ; then - SERVER_OS="RockyLinux9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "Detected: Rocky Linux 9" - elif echo $OUTPUT | grep -q "Rocky Linux 8" ; then - SERVER_OS="RockyLinux8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "Detected: Rocky Linux 8" - elif echo $OUTPUT | grep -q "Ubuntu 22.04" ; then - SERVER_OS="Ubuntu2204" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "Detected: Ubuntu 22.04" - elif echo $OUTPUT | grep -q "Ubuntu 20.04" ; then - SERVER_OS="Ubuntu2004" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "Detected: Ubuntu 20.04" - elif echo $OUTPUT | grep -q "Debian GNU/Linux 12" ; then - SERVER_OS="Debian12" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "Detected: Debian GNU/Linux 12" - elif echo $OUTPUT | grep -q "Debian GNU/Linux 11" ; then - SERVER_OS="Debian11" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "Detected: Debian GNU/Linux 11" - else - print_status "ERROR: Unsupported OS detected" - print_status "Supported OS: AlmaLinux 8/9, CentOS 8/9, Rocky Linux 8/9, Ubuntu 20.04/22.04, Debian 11/12" - return 1 - fi - - return 0 -} - -# Function to install dependencies -install_dependencies() { - print_status "Installing dependencies..." - - case $OS_FAMILY in - "rhel") - # Install EPEL - $PACKAGE_MANAGER install -y epel-release 2>/dev/null || true - - # Install development tools - $PACKAGE_MANAGER groupinstall -y 'Development Tools' 2>/dev/null || { - $PACKAGE_MANAGER install -y gcc gcc-c++ make kernel-devel 2>/dev/null || true - } - - # Install core packages - if [ "$SERVER_OS" = "AlmaLinux9" ] || [ "$SERVER_OS" = "CentOS9" ] || [ "$SERVER_OS" = "RockyLinux9" ]; then - # AlmaLinux 9 / CentOS 9 / Rocky Linux 9 - $PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma python3 python3-pip python3-devel 2>/dev/null || true - $PACKAGE_MANAGER install -y aspell 2>/dev/null || print_status "WARNING: aspell not available, skipping..." - $PACKAGE_MANAGER install -y libc-client-devel 2>/dev/null || print_status "WARNING: libc-client-devel not available, skipping..." - else - # AlmaLinux 8 / CentOS 8 / Rocky Linux 8 - $PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma aspell libc-client-devel python3 python3-pip python3-devel 2>/dev/null || true - fi - ;; - "debian") - # Update package lists - apt update -qq 2>/dev/null || true - - # Install essential packages - apt install -y -qq curl wget git unzip tar gzip bzip2 2>/dev/null || true - - # Install development tools - apt install -y -qq build-essential gcc g++ make python3-dev python3-pip 2>/dev/null || true - - # Install core packages - apt install -y -qq imagemagick php-gd libicu-dev libonig-dev 2>/dev/null || true - apt install -y -qq aspell 2>/dev/null || print_status "WARNING: aspell not available, skipping..." - apt install -y -qq libc-client-dev 2>/dev/null || print_status "WARNING: libc-client-dev not available, skipping..." - ;; - esac - - print_status "SUCCESS: Dependencies installed successfully" -} - -# Function to install CyberPanel -install_cyberpanel() { - print_status "Installing CyberPanel..." - - # Download and run the original installer - if [ -n "$BRANCH_NAME" ]; then - curl --silent -o cyberpanel.sh "https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/cyberpanel.sh" 2>/dev/null - else - curl --silent -o cyberpanel.sh "https://cyberpanel.sh/?dl&$SERVER_OS" 2>/dev/null - fi - - chmod +x cyberpanel.sh - - # Run the installer - if ./cyberpanel.sh $([ "$DEBUG_MODE" = true ] && echo "--debug") > /tmp/cyberpanel_install_output.log 2>&1; then - print_status "SUCCESS: CyberPanel installed successfully" - return 0 - else - print_status "ERROR: CyberPanel installation failed. Check /tmp/cyberpanel_install_output.log for details" - return 1 - fi -} - -# Function to apply fixes -apply_fixes() { - print_status "Applying installation fixes..." - - # Fix database issues - systemctl start mariadb 2>/dev/null || true - systemctl enable mariadb 2>/dev/null || true - mysqladmin -u root password '1234567' 2>/dev/null || true - - # Create cyberpanel database user - mysql -u root -p1234567 -e " - CREATE DATABASE IF NOT EXISTS cyberpanel; - CREATE USER IF NOT EXISTS 'cyberpanel'@'localhost' IDENTIFIED BY 'cyberpanel'; - GRANT ALL PRIVILEGES ON cyberpanel.* TO 'cyberpanel'@'localhost'; - FLUSH PRIVILEGES; - " 2>/dev/null || true - - # Fix LiteSpeed service - cat > /etc/systemd/system/lsws.service << 'EOF' -[Unit] -Description=LiteSpeed Web Server -After=network.target - -[Service] -Type=forking -User=root -Group=root -ExecStart=/usr/local/lsws/bin/lswsctrl start -ExecStop=/usr/local/lsws/bin/lswsctrl stop -ExecReload=/usr/local/lsws/bin/lswsctrl restart -Restart=always -RestartSec=5 - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl enable lsws - systemctl start lsws - - # Fix CyberPanel service - cat > /etc/systemd/system/cyberpanel.service << 'EOF' -[Unit] -Description=CyberPanel Web Interface -After=network.target mariadb.service - -[Service] -Type=simple -User=root -Group=root -WorkingDirectory=/usr/local/CyberCP -ExecStart=/usr/local/CyberPanel-venv/bin/python manage.py runserver 0.0.0.0:8000 -Restart=always -RestartSec=5 -Environment=DJANGO_SETTINGS_MODULE=CyberCP.settings - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl enable cyberpanel - - print_status "SUCCESS: All fixes applied successfully" -} - -# Function to show status summary -show_status_summary() { - echo "" - echo "===============================================================================================================" - echo " CYBERPANEL INSTALLATION STATUS" - echo "===============================================================================================================" - echo "" - - echo "CORE SERVICES STATUS:" - echo "--------------------------------------------------------------------------------" - - # Check services - if systemctl is-active --quiet mariadb; then - echo "SUCCESS: MariaDB Database - RUNNING" - else - echo "ERROR: MariaDB Database - NOT RUNNING" - fi - - if systemctl is-active --quiet lsws; then - echo "SUCCESS: LiteSpeed Web Server - RUNNING" - else - echo "ERROR: LiteSpeed Web Server - NOT RUNNING" - fi - - if systemctl is-active --quiet cyberpanel; then - echo "SUCCESS: CyberPanel Application - RUNNING" - else - echo "ERROR: CyberPanel Application - NOT RUNNING" - fi - - echo "" - echo "NETWORK PORTS STATUS:" - echo "--------------------------------------------------------------------------------" - - # Check ports - if netstat -tlnp | grep -q ":8090 "; then - echo "SUCCESS: Port 8090 (CyberPanel) - LISTENING" - else - echo "ERROR: Port 8090 (CyberPanel) - NOT LISTENING" - fi - - if netstat -tlnp | grep -q ":80 "; then - echo "SUCCESS: Port 80 (HTTP) - LISTENING" - else - echo "ERROR: Port 80 (HTTP) - NOT LISTENING" - fi - - echo "" - echo "SUMMARY:" - echo "--------------------------------------------------------------------------------" - print_status "SUCCESS: INSTALLATION COMPLETED SUCCESSFULLY!" - echo "" - echo "Access CyberPanel at: http://your-server-ip:8090" - echo "Default username: admin" - echo "Default password: 1234567" - echo "" - echo "IMPORTANT: Change the default password immediately!" - echo "" -} - -# Function to show main menu -show_main_menu() { - show_banner - - echo "===============================================================================================================" - echo " SELECT INSTALLATION TYPE" - echo "===============================================================================================================" - echo "" - echo " 1. Fresh Installation (Recommended)" - echo " 2. Update Existing Installation" - echo " 3. Reinstall CyberPanel" - echo " 4. Check System Status" - echo " 5. Advanced Options" - echo " 6. Exit" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Enter your choice [1-6]: " - read -r choice - - case $choice in - 1) - INSTALLATION_TYPE="fresh" - show_fresh_install_menu - return - ;; - 2) - INSTALLATION_TYPE="update" - show_update_menu - return - ;; - 3) - INSTALLATION_TYPE="reinstall" - show_reinstall_menu - return - ;; - 4) - show_system_status - return - ;; - 5) - show_advanced_menu - return - ;; - 6) - echo "" - echo "Goodbye!" - exit 0 - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-6." - echo "" - ;; - esac - done -} - -# Function to show fresh installation menu -show_fresh_install_menu() { - echo "" - echo "===============================================================================================================" - echo " FRESH INSTALLATION SETUP" - echo "===============================================================================================================" - echo "" - - # Check if CyberPanel is already installed - if [ -d "/usr/local/CyberCP" ] && [ -f "/usr/local/CyberCP/manage.py" ]; then - echo "WARNING: CyberPanel appears to be already installed on this system." - echo " Consider using 'Update' or 'Reinstall' options instead." - echo "" - echo -n "Do you want to continue with fresh installation anyway? (y/n): " - read -r response - case $response in - [yY]|[yY][eE][sS]) - ;; - *) - show_main_menu - return - ;; - esac - fi - - echo "Select installation option:" - echo "" - echo " 1. Install Latest Stable Version" - echo " 2. Install Development Version (v2.5.5-dev)" - echo " 3. Install Specific Version/Branch" - echo " 4. Quick Install (Auto-configure everything)" - echo " 5. Back to Main Menu" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select installation option [1-5]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - show_installation_preferences - return - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - show_installation_preferences - return - ;; - 3) - show_version_selection - return - ;; - 4) - BRANCH_NAME="" - AUTO_INSTALL=true - start_installation - return - ;; - 5) - show_main_menu - return - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-5." - echo "" - ;; - esac - done -} - -# Function to show version selection -show_version_selection() { - echo "" - echo "===============================================================================================================" - echo " VERSION SELECTION" - echo "===============================================================================================================" - echo "" - echo "Available versions:" - echo "" - echo " 1. Latest Stable (Recommended)" - echo " 2. v2.5.5-dev (Development)" - echo " 3. v2.5.4 (Previous Stable)" - echo " 4. Custom Branch/Commit" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select version [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - BRANCH_NAME="v2.5.4" - break - ;; - 4) - echo -n "Enter branch name or commit hash: " - read -r BRANCH_NAME - break - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-4." - echo "" - ;; - esac - done - - show_installation_preferences -} - -# Function to show installation preferences -show_installation_preferences() { - echo "" - echo "===============================================================================================================" - echo " INSTALLATION PREFERENCES" - echo "===============================================================================================================" - echo "" - - # Debug mode - echo -n "Enable debug mode for detailed logging? (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - DEBUG_MODE=true - ;; - esac - - # Auto-install - echo -n "Auto-install without further prompts? (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - AUTO_INSTALL=true - ;; - esac - - # Show summary - echo "" - echo "===============================================================================================================" - echo " INSTALLATION SUMMARY" - echo "===============================================================================================================" - echo "" - echo " Type: $INSTALLATION_TYPE" - echo " Version: ${BRANCH_NAME:-'Latest Stable'}" - echo " Debug Mode: $DEBUG_MODE" - echo " Auto Install: $AUTO_INSTALL" - echo "" - echo "===============================================================================================================" - echo "" - - echo -n "Proceed with installation? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - start_installation - ;; - esac -} - -# Function to show update menu -show_update_menu() { - echo "" - echo "===============================================================================================================" - echo " UPDATE INSTALLATION" - echo "===============================================================================================================" - echo "" - - if [ ! -d "/usr/local/CyberCP" ] || [ ! -f "/usr/local/CyberCP/manage.py" ]; then - echo "ERROR: CyberPanel is not installed on this system." - echo " Please use 'Fresh Installation' instead." - echo "" - read -p "Press Enter to return to main menu..." - show_main_menu - return - fi - - # Check current version - local current_version="unknown" - if [ -f "/usr/local/CyberCP/version.txt" ]; then - current_version=$(cat /usr/local/CyberCP/version.txt 2>/dev/null) - fi - - echo "Current Installation:" - echo "Version: $current_version" - echo "Path: /usr/local/CyberCP" - echo "" - - echo "Select update option:" - echo "" - echo " 1. Update to Latest Stable" - echo " 2. Update to Development Version" - echo " 3. Update to Specific Version" - echo " 4. Back to Main Menu" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select update option [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - show_version_selection - return - ;; - 4) - show_main_menu - return - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-4." - echo "" - ;; - esac - done - - echo -n "Proceed with update? (This will backup your current installation) (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - start_installation - ;; - esac -} - -# Function to show reinstall menu -show_reinstall_menu() { - echo "" - echo "===============================================================================================================" - echo " REINSTALL CYBERPANEL" - echo "===============================================================================================================" - echo "" - - if [ ! -d "/usr/local/CyberCP" ] || [ ! -f "/usr/local/CyberCP/manage.py" ]; then - echo "ERROR: CyberPanel is not installed on this system." - echo " Please use 'Fresh Installation' instead." - echo "" - read -p "Press Enter to return to main menu..." - show_main_menu - return - fi - - echo "WARNING: This will completely remove the existing CyberPanel installation" - echo " and install a fresh copy. All data will be lost!" - echo "" - - echo -n "Are you sure you want to reinstall? (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - ;; - *) - show_main_menu - return - ;; - esac - - echo "Select reinstall option:" - echo "" - echo " 1. Reinstall Latest Stable" - echo " 2. Reinstall Development Version" - echo " 3. Reinstall Specific Version" - echo " 4. Back to Main Menu" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select reinstall option [1-4]: " - read -r choice - - case $choice in - 1) - BRANCH_NAME="" - break - ;; - 2) - BRANCH_NAME="v2.5.5-dev" - break - ;; - 3) - show_version_selection - return - ;; - 4) - show_main_menu - return - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-4." - echo "" - ;; - esac - done - - echo -n "Proceed with reinstall? (This will delete all existing data) (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - start_installation - ;; - *) - show_main_menu - ;; - esac -} - -# Function to show system status -show_system_status() { - echo "" - echo "===============================================================================================================" - echo " SYSTEM STATUS CHECK" - echo "===============================================================================================================" - echo "" - - # Check OS - local os_info=$(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2 2>/dev/null || echo 'Unknown') - echo "Operating System: $os_info" - - # Check CyberPanel installation - if [ -d "/usr/local/CyberCP" ] && [ -f "/usr/local/CyberCP/manage.py" ]; then - local version="unknown" - if [ -f "/usr/local/CyberCP/version.txt" ]; then - version=$(cat /usr/local/CyberCP/version.txt 2>/dev/null) - fi - echo "CyberPanel: Installed (Version: $version)" - else - echo "CyberPanel: Not Installed" - fi - - # Check services - echo "" - echo "Services Status:" - if systemctl is-active --quiet mariadb; then - echo " SUCCESS: MariaDB - Running" - else - echo " ERROR: MariaDB - Not Running" - fi - - if systemctl is-active --quiet lsws; then - echo " SUCCESS: LiteSpeed - Running" - else - echo " ERROR: LiteSpeed - Not Running" - fi - - if systemctl is-active --quiet cyberpanel; then - echo " SUCCESS: CyberPanel - Running" - else - echo " ERROR: CyberPanel - Not Running" - fi - - # Check ports - echo "" - echo "Port Status:" - if netstat -tlnp | grep -q ":8090 "; then - echo " SUCCESS: Port 8090 (CyberPanel) - Listening" - else - echo " ERROR: Port 8090 (CyberPanel) - Not Listening" - fi - - if netstat -tlnp | grep -q ":80 "; then - echo " SUCCESS: Port 80 (HTTP) - Listening" - else - echo " ERROR: Port 80 (HTTP) - Not Listening" - fi - - echo "" - echo -n "Return to main menu? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - exit 0 - ;; - *) - show_main_menu - ;; - esac -} - -# Function to show advanced menu -show_advanced_menu() { - echo "" - echo "===============================================================================================================" - echo " ADVANCED OPTIONS" - echo "===============================================================================================================" - echo "" - echo " 1. Fix Installation Issues" - echo " 2. Clean Installation Files" - echo " 3. View Installation Logs" - echo " 4. System Diagnostics" - echo " 5. Back to Main Menu" - echo "" - echo "===============================================================================================================" - echo "" - - while true; do - echo -n "Select advanced option [1-5]: " - read -r choice - - case $choice in - 1) - show_fix_menu - return - ;; - 2) - show_clean_menu - return - ;; - 3) - show_logs_menu - return - ;; - 4) - show_diagnostics - return - ;; - 5) - show_main_menu - return - ;; - *) - echo "" - echo "ERROR: Invalid choice. Please enter 1-5." - echo "" - ;; - esac - done -} - -# Function to show fix menu -show_fix_menu() { - echo "" - echo "===============================================================================================================" - echo " FIX INSTALLATION ISSUES" - echo "===============================================================================================================" - echo "" - echo "This will attempt to fix common CyberPanel installation issues:" - echo "โ€ข Database connection problems" - echo "โ€ข Service configuration issues" - echo "โ€ข SSL certificate problems" - echo "โ€ข File permission issues" - echo "" - - echo -n "Proceed with fixing installation issues? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_advanced_menu - ;; - *) - print_status "Applying fixes..." - apply_fixes - print_status "SUCCESS: Fixes applied successfully" - echo "" - read -p "Press Enter to return to advanced menu..." - show_advanced_menu - ;; - esac -} - -# Function to show clean menu -show_clean_menu() { - echo "" - echo "===============================================================================================================" - echo " CLEAN INSTALLATION FILES" - echo "===============================================================================================================" - echo "" - echo "WARNING: This will remove temporary installation files and logs." - echo " This action cannot be undone!" - echo "" - - echo -n "Proceed with cleaning? (y/n) [n]: " - read -r response - case $response in - [yY]|[yY][eE][sS]) - rm -rf /tmp/cyberpanel_* - rm -rf /var/log/cyberpanel_install.log - echo "SUCCESS: Cleanup complete! Temporary files and logs have been removed." - ;; - esac - - echo "" - echo -n "Return to advanced menu? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to show logs menu -show_logs_menu() { - echo "" - echo "===============================================================================================================" - echo " VIEW INSTALLATION LOGS" - echo "===============================================================================================================" - echo "" - - local log_file="/var/log/cyberpanel_install.log" - - if [ -f "$log_file" ]; then - echo "Installation Log: $log_file" - echo "Log Size: $(du -h "$log_file" | cut -f1)" - echo "" - - echo -n "View recent log entries? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - ;; - *) - echo "" - echo "Recent log entries:" - tail -n 20 "$log_file" - ;; - esac - else - echo "No installation logs found at $log_file" - fi - - echo "" - echo -n "Return to advanced menu? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to show diagnostics -show_diagnostics() { - echo "" - echo "===============================================================================================================" - echo " SYSTEM DIAGNOSTICS" - echo "===============================================================================================================" - echo "" - - echo "Running system diagnostics..." - echo "" - - # Disk space - echo "Disk Usage:" - df -h | grep -E '^/dev/' - - # Memory usage - echo "" - echo "Memory Usage:" - free -h - - # Load average - echo "" - echo "System Load:" - uptime - - # Network interfaces - echo "" - echo "Network Interfaces:" - ip addr show | grep -E '^[0-9]+:|inet ' - - echo "" - echo -n "Return to advanced menu? (y/n) [y]: " - read -r response - case $response in - [nN]|[nN][oO]) - show_main_menu - ;; - *) - show_advanced_menu - ;; - esac -} - -# Function to start installation -start_installation() { - echo "" - echo "===============================================================================================================" - echo " STARTING INSTALLATION" - echo "===============================================================================================================" - echo "" - - # Detect OS - if ! detect_os; then - print_status "ERROR: Failed to detect operating system" - exit 1 - fi - - # Install dependencies - install_dependencies - - # Install CyberPanel - if ! install_cyberpanel; then - print_status "ERROR: CyberPanel installation failed" - exit 1 - fi - - # Apply fixes - apply_fixes - - # Show status summary - show_status_summary - - print_status "SUCCESS: Installation completed successfully!" -} - -# Function to parse command line arguments -parse_arguments() { - while [[ $# -gt 0 ]]; do - case $1 in - -b|--branch) - BRANCH_NAME="$2" - shift 2 - ;; - --debug) - DEBUG_MODE=true - set -x - shift - ;; - --auto) - AUTO_INSTALL=true - shift - ;; - -h|--help) - echo "Usage: $0 [OPTIONS]" - echo "Options:" - echo " -b, --branch BRANCH Install from specific branch/commit" - echo " --debug Enable debug mode" - echo " --auto Auto mode without prompts" - echo " -h, --help Show this help message" - echo "" - echo "Examples:" - echo " $0 # Interactive installation" - echo " $0 --debug # Debug mode installation" - echo " $0 --auto # Auto installation" - echo " $0 -b v2.5.5-dev # Install development version" - exit 0 - ;; - *) - print_status "WARNING: Unknown option: $1" - shift - ;; - esac - done -} - -# Main installation function -main() { - # Initialize log file - mkdir -p /var/log - touch "/var/log/cyberpanel_install.log" - - print_status "CyberPanel Simple Installer Starting..." - print_status "Log file: /var/log/cyberpanel_install.log" - - # Parse command line arguments - parse_arguments "$@" - - # Check if auto mode is requested - if [ "$AUTO_INSTALL" = true ]; then - # Run auto mode - print_status "Starting auto mode..." - - # Detect OS - if ! detect_os; then - print_status "ERROR: Failed to detect operating system" - exit 1 - fi - - # Install dependencies - install_dependencies - - # Install CyberPanel - if ! install_cyberpanel; then - print_status "ERROR: CyberPanel installation failed" - exit 1 - fi - - # Apply fixes - apply_fixes - - # Show status summary - show_status_summary - - print_status "SUCCESS: Installation completed successfully!" - else - # Run interactive mode - show_main_menu - fi -} - -# Run main function -main "$@" diff --git a/cyberpanel_standalone.sh b/cyberpanel_standalone.sh deleted file mode 100644 index 5951af816..000000000 --- a/cyberpanel_standalone.sh +++ /dev/null @@ -1,450 +0,0 @@ -#!/bin/bash - -# CyberPanel Standalone Modular Installer -# Self-contained installer with all modules included -# This version works when downloaded via curl - -set -e - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -PURPLE='\033[0;35m' -CYAN='\033[0;36m' -WHITE='\033[1;37m' -BOLD='\033[1m' -DIM='\033[2m' -NC='\033[0m' # No Color - -# Global variables -SERVER_OS="" -OS_FAMILY="" -PACKAGE_MANAGER="" -ARCHITECTURE="" -BRANCH_NAME="" -DEBUG_MODE=false -AUTO_INSTALL=false -INTERACTIVE_MODE=true - -# Logging function -log_message() { - echo "[$(date '+%Y-%m-%d %H:%M:%S')] [CYBERPANEL] $1" | tee -a "/var/log/cyberpanel_install.log" 2>/dev/null || echo "[$(date '+%Y-%m-%d %H:%M:%S')] [CYBERPANEL] $1" -} - -# Print colored output -print_status() { - local color=$1 - local message=$2 - echo -e "${color}${message}${NC}" - log_message "$message" -} - -# Function to show banner -show_banner() { - clear - echo -e "${BLUE}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${WHITE}${BOLD}๐Ÿš€ CYBERPANEL MODULAR INSTALLER ๐Ÿš€${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${CYAN}The Ultimate Web Hosting Control Panel${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${YELLOW}Powered by OpenLiteSpeed โ€ข Fast โ€ข Secure โ€ข Scalable${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${GREEN}โœจ Beautiful UI โ€ข Modular Architecture โ€ข Smart Installation โœจ${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•‘${NC} ${BLUE}โ•‘${NC}" - echo -e "${BLUE}โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" - echo "" -} - -# Function to detect OS -detect_os() { - print_status "$BLUE" "๐Ÿ” Detecting operating system..." - - # Detect architecture - ARCHITECTURE=$(uname -m) - case $ARCHITECTURE in - x86_64) - print_status "$GREEN" "Architecture: x86_64 (Supported)" - ;; - aarch64|arm64) - print_status "$YELLOW" "Architecture: $ARCHITECTURE (Limited support)" - ;; - *) - print_status "$RED" "Architecture: $ARCHITECTURE (Not supported)" - return 1 - ;; - esac - - # Get OS release information - local OUTPUT=$(cat /etc/*release 2>/dev/null) - if [ -z "$OUTPUT" ]; then - print_status "$RED" "โŒ Cannot read OS release information" - return 1 - fi - - # Detect OS - if echo $OUTPUT | grep -q "AlmaLinux 9" ; then - SERVER_OS="AlmaLinux9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "$GREEN" "Detected: AlmaLinux 9" - elif echo $OUTPUT | grep -q "AlmaLinux 8" ; then - SERVER_OS="AlmaLinux8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "$GREEN" "Detected: AlmaLinux 8" - elif echo $OUTPUT | grep -q "CentOS Linux 9" ; then - SERVER_OS="CentOS9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "$GREEN" "Detected: CentOS Linux 9" - elif echo $OUTPUT | grep -q "CentOS Linux 8" ; then - SERVER_OS="CentOS8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "$GREEN" "Detected: CentOS Linux 8" - elif echo $OUTPUT | grep -q "Rocky Linux 9" ; then - SERVER_OS="RockyLinux9" - OS_FAMILY="rhel" - PACKAGE_MANAGER="dnf" - print_status "$GREEN" "Detected: Rocky Linux 9" - elif echo $OUTPUT | grep -q "Rocky Linux 8" ; then - SERVER_OS="RockyLinux8" - OS_FAMILY="rhel" - PACKAGE_MANAGER="yum" - print_status "$GREEN" "Detected: Rocky Linux 8" - elif echo $OUTPUT | grep -q "Ubuntu 22.04" ; then - SERVER_OS="Ubuntu2204" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "$GREEN" "Detected: Ubuntu 22.04" - elif echo $OUTPUT | grep -q "Ubuntu 20.04" ; then - SERVER_OS="Ubuntu2004" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "$GREEN" "Detected: Ubuntu 20.04" - elif echo $OUTPUT | grep -q "Debian GNU/Linux 12" ; then - SERVER_OS="Debian12" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "$GREEN" "Detected: Debian GNU/Linux 12" - elif echo $OUTPUT | grep -q "Debian GNU/Linux 11" ; then - SERVER_OS="Debian11" - OS_FAMILY="debian" - PACKAGE_MANAGER="apt" - print_status "$GREEN" "Detected: Debian GNU/Linux 11" - else - print_status "$RED" "โŒ Unsupported OS detected" - print_status "$YELLOW" "Supported OS: AlmaLinux 8/9, CentOS 8/9, Rocky Linux 8/9, Ubuntu 20.04/22.04, Debian 11/12" - return 1 - fi - - return 0 -} - -# Function to install dependencies -install_dependencies() { - print_status "$BLUE" "๐Ÿ“ฆ Installing dependencies..." - - case $OS_FAMILY in - "rhel") - # Install EPEL - $PACKAGE_MANAGER install -y epel-release 2>/dev/null || true - - # Install development tools - $PACKAGE_MANAGER groupinstall -y 'Development Tools' 2>/dev/null || { - $PACKAGE_MANAGER install -y gcc gcc-c++ make kernel-devel 2>/dev/null || true - } - - # Install core packages - if [ "$SERVER_OS" = "AlmaLinux9" ] || [ "$SERVER_OS" = "CentOS9" ] || [ "$SERVER_OS" = "RockyLinux9" ]; then - # AlmaLinux 9 / CentOS 9 / Rocky Linux 9 - $PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma python3 python3-pip python3-devel 2>/dev/null || true - $PACKAGE_MANAGER install -y aspell 2>/dev/null || print_status "$YELLOW" "aspell not available, skipping..." - $PACKAGE_MANAGER install -y libc-client-devel 2>/dev/null || print_status "$YELLOW" "libc-client-devel not available, skipping..." - else - # AlmaLinux 8 / CentOS 8 / Rocky Linux 8 - $PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma aspell libc-client-devel python3 python3-pip python3-devel 2>/dev/null || true - fi - ;; - "debian") - # Update package lists - apt update -qq 2>/dev/null || true - - # Install essential packages - apt install -y -qq curl wget git unzip tar gzip bzip2 2>/dev/null || true - - # Install development tools - apt install -y -qq build-essential gcc g++ make python3-dev python3-pip 2>/dev/null || true - - # Install core packages - apt install -y -qq imagemagick php-gd libicu-dev libonig-dev 2>/dev/null || true - apt install -y -qq aspell 2>/dev/null || print_status "$YELLOW" "aspell not available, skipping..." - apt install -y -qq libc-client-dev 2>/dev/null || print_status "$YELLOW" "libc-client-dev not available, skipping..." - ;; - esac - - print_status "$GREEN" "โœ… Dependencies installed successfully" -} - -# Function to install CyberPanel -install_cyberpanel() { - print_status "$BLUE" "๐Ÿš€ Installing CyberPanel..." - - # Download and run the original installer - if [ -n "$BRANCH_NAME" ]; then - curl --silent -o cyberpanel.sh "https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/cyberpanel.sh" 2>/dev/null - else - curl --silent -o cyberpanel.sh "https://cyberpanel.sh/?dl&$SERVER_OS" 2>/dev/null - fi - - chmod +x cyberpanel.sh - - # Run the installer - if ./cyberpanel.sh $([ "$DEBUG_MODE" = true ] && echo "--debug") > /tmp/cyberpanel_install_output.log 2>&1; then - print_status "$GREEN" "โœ… CyberPanel installed successfully" - return 0 - else - print_status "$RED" "โŒ CyberPanel installation failed. Check /tmp/cyberpanel_install_output.log for details" - return 1 - fi -} - -# Function to apply fixes -apply_fixes() { - print_status "$BLUE" "๐Ÿ”ง Applying installation fixes..." - - # Fix database issues - systemctl start mariadb 2>/dev/null || true - systemctl enable mariadb 2>/dev/null || true - mysqladmin -u root password '1234567' 2>/dev/null || true - - # Create cyberpanel database user - mysql -u root -p1234567 -e " - CREATE DATABASE IF NOT EXISTS cyberpanel; - CREATE USER IF NOT EXISTS 'cyberpanel'@'localhost' IDENTIFIED BY 'cyberpanel'; - GRANT ALL PRIVILEGES ON cyberpanel.* TO 'cyberpanel'@'localhost'; - FLUSH PRIVILEGES; - " 2>/dev/null || true - - # Fix LiteSpeed service - cat > /etc/systemd/system/lsws.service << 'EOF' -[Unit] -Description=LiteSpeed Web Server -After=network.target - -[Service] -Type=forking -User=root -Group=root -ExecStart=/usr/local/lsws/bin/lswsctrl start -ExecStop=/usr/local/lsws/bin/lswsctrl stop -ExecReload=/usr/local/lsws/bin/lswsctrl restart -Restart=always -RestartSec=5 - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl enable lsws - systemctl start lsws - - # Fix CyberPanel service - cat > /etc/systemd/system/cyberpanel.service << 'EOF' -[Unit] -Description=CyberPanel Web Interface -After=network.target mariadb.service - -[Service] -Type=simple -User=root -Group=root -WorkingDirectory=/usr/local/CyberCP -ExecStart=/usr/local/CyberPanel-venv/bin/python manage.py runserver 0.0.0.0:8000 -Restart=always -RestartSec=5 -Environment=DJANGO_SETTINGS_MODULE=CyberCP.settings - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl enable cyberpanel - - print_status "$GREEN" "โœ… All fixes applied successfully" -} - -# Function to show status summary -show_status_summary() { - echo "" - echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—" - echo "โ•‘ โ•‘" - echo "โ•‘ ๐Ÿ“Š CYBERPANEL INSTALLATION STATUS ๐Ÿ“Š โ•‘" - echo "โ•‘ โ•‘" - echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - echo "" - - echo "๐Ÿ”ง CORE SERVICES STATUS:" - echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - - # Check services - if systemctl is-active --quiet mariadb; then - echo "โœ… MariaDB Database: RUNNING" - else - echo "โŒ MariaDB Database: NOT RUNNING" - fi - - if systemctl is-active --quiet lsws; then - echo "โœ… LiteSpeed Web Server: RUNNING" - else - echo "โŒ LiteSpeed Web Server: NOT RUNNING" - fi - - if systemctl is-active --quiet cyberpanel; then - echo "โœ… CyberPanel Application: RUNNING" - else - echo "โŒ CyberPanel Application: NOT RUNNING" - fi - - echo "" - echo "๐ŸŒ NETWORK PORTS STATUS:" - echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - - # Check ports - if netstat -tlnp | grep -q ":8090 "; then - echo "โœ… Port 8090 (CyberPanel): LISTENING" - else - echo "โŒ Port 8090 (CyberPanel): NOT LISTENING" - fi - - if netstat -tlnp | grep -q ":80 "; then - echo "โœ… Port 80 (HTTP): LISTENING" - else - echo "โŒ Port 80 (HTTP): NOT LISTENING" - fi - - echo "" - echo "๐Ÿ“Š SUMMARY:" - echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - print_status "$GREEN" "๐ŸŽ‰ INSTALLATION COMPLETED SUCCESSFULLY!" - echo "" - echo "๐ŸŒ Access CyberPanel at: http://your-server-ip:8090" - echo "๐Ÿ‘ค Default username: admin" - echo "๐Ÿ”‘ Default password: 1234567" - echo "" - echo "โš ๏ธ IMPORTANT: Change the default password immediately!" - echo "" -} - -# Function to parse command line arguments -parse_arguments() { - while [[ $# -gt 0 ]]; do - case $1 in - -b|--branch) - BRANCH_NAME="$2" - shift 2 - ;; - --debug) - DEBUG_MODE=true - set -x - shift - ;; - --auto) - AUTO_INSTALL=true - INTERACTIVE_MODE=false - shift - ;; - -h|--help) - echo "Usage: $0 [OPTIONS]" - echo "Options:" - echo " -b, --branch BRANCH Install from specific branch/commit" - echo " --debug Enable debug mode" - echo " --auto Auto mode without prompts" - echo " -h, --help Show this help message" - echo "" - echo "Examples:" - echo " $0 # Interactive installation" - echo " $0 --debug # Debug mode installation" - echo " $0 --auto # Auto installation" - echo " $0 -b v2.5.5-dev # Install development version" - exit 0 - ;; - *) - print_status "$YELLOW" "Unknown option: $1" - shift - ;; - esac - done -} - -# Function to run interactive mode -run_interactive_mode() { - show_banner - - echo -e "${WHITE}Welcome to the CyberPanel Modular Installer!${NC}" - echo "" - echo -e "${CYAN}This installer will:${NC}" - echo "โ€ข Detect your operating system" - echo "โ€ข Install required dependencies" - echo "โ€ข Install CyberPanel" - echo "โ€ข Apply necessary fixes" - echo "โ€ข Configure services" - echo "" - - if [ -n "$BRANCH_NAME" ]; then - echo -e "${YELLOW}Installing version: $BRANCH_NAME${NC}" - else - echo -e "${YELLOW}Installing latest stable version${NC}" - fi - - echo "" - read -p "Press Enter to continue or Ctrl+C to cancel..." -} - -# Main installation function -main() { - # Initialize log file - mkdir -p /var/log - touch "/var/log/cyberpanel_install.log" - - print_status "$BLUE" "๐Ÿš€ CyberPanel Modular Installer Starting..." - print_status "$BLUE" "Log file: /var/log/cyberpanel_install.log" - - # Parse command line arguments - parse_arguments "$@" - - # Run interactive mode if not auto - if [ "$AUTO_INSTALL" = false ]; then - run_interactive_mode - fi - - # Detect OS - if ! detect_os; then - print_status "$RED" "โŒ Failed to detect operating system" - exit 1 - fi - - # Install dependencies - install_dependencies - - # Install CyberPanel - if ! install_cyberpanel; then - print_status "$RED" "โŒ CyberPanel installation failed" - exit 1 - fi - - # Apply fixes - apply_fixes - - # Show status summary - show_status_summary - - print_status "$GREEN" "๐ŸŽ‰ CyberPanel installation process completed!" -} - -# Run main function -main "$@" diff --git a/deploy_phpmyadmin_redirect.sh b/deploy_phpmyadmin_redirect.sh deleted file mode 100644 index 203971f78..000000000 --- a/deploy_phpmyadmin_redirect.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -# CyberPanel phpMyAdmin Access Control Deployment Script -# This script implements redirect functionality for unauthenticated phpMyAdmin access - -echo "=== CyberPanel phpMyAdmin Access Control Deployment ===" - -# Check if running as root -if [ "$EUID" -ne 0 ]; then - echo "Please run this script as root" - exit 1 -fi - -# Backup original phpMyAdmin index.php if it exists -if [ -f "/usr/local/CyberCP/public/phpmyadmin/index.php" ]; then - echo "Backing up original phpMyAdmin index.php..." - cp /usr/local/CyberCP/public/phpmyadmin/index.php /usr/local/CyberCP/public/phpmyadmin/index.php.backup.$(date +%Y%m%d_%H%M%S) -fi - -# Deploy the redirect index.php -echo "Deploying phpMyAdmin access control..." -cp /usr/local/CyberCP/phpmyadmin_index_redirect.php /usr/local/CyberCP/public/phpmyadmin/index.php - -# Deploy .htaccess for additional protection -echo "Deploying .htaccess protection..." -cp /usr/local/CyberCP/phpmyadmin_htaccess /usr/local/CyberCP/public/phpmyadmin/.htaccess - -# Set proper permissions -echo "Setting permissions..." -chown lscpd:lscpd /usr/local/CyberCP/public/phpmyadmin/index.php -chmod 644 /usr/local/CyberCP/public/phpmyadmin/index.php -chown lscpd:lscpd /usr/local/CyberCP/public/phpmyadmin/.htaccess -chmod 644 /usr/local/CyberCP/public/phpmyadmin/.htaccess - -# Restart LiteSpeed to ensure changes take effect -echo "Restarting LiteSpeed..." -systemctl restart lscpd - -echo "=== Deployment Complete ===" -echo "" -echo "phpMyAdmin access control has been deployed successfully!" -echo "" -echo "What this does:" -echo "- Users trying to access phpMyAdmin directly without being logged into CyberPanel" -echo " will now be redirected to the CyberPanel login page (/base/)" -echo "- Authenticated users will continue to access phpMyAdmin normally" -echo "" -echo "To revert changes, restore the backup:" -echo "cp /usr/local/CyberCP/public/phpmyadmin/index.php.backup.* /usr/local/CyberCP/public/phpmyadmin/index.php" -echo "" -echo "Test the implementation by:" -echo "1. Opening an incognito/private browser window" -echo "2. Going to https://your-server:2087/phpmyadmin/" -echo "3. You should be redirected to the CyberPanel login page" diff --git a/fix_installation_issues.sh b/fix_installation_issues.sh deleted file mode 100644 index 4a039be65..000000000 --- a/fix_installation_issues.sh +++ /dev/null @@ -1,245 +0,0 @@ -#!/bin/bash - -# CyberPanel Installation Issues Fix Script -# This script fixes the critical issues found during installation - -echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—" -echo "โ•‘ โ•‘" -echo "โ•‘ ๐Ÿ”ง FIXING CYBERPANEL INSTALLATION ISSUES ๐Ÿ”ง โ•‘" -echo "โ•‘ โ•‘" -echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" -echo "" - -# Function to log actions -log_action() { - echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" -} - -# 1. Fix Database Connection Issues -echo "๐Ÿ—„๏ธ FIXING DATABASE CONNECTION ISSUES..." -echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - -log_action "Starting MariaDB service..." -systemctl start mariadb -systemctl enable mariadb - -log_action "Setting MariaDB root password..." -mysqladmin -u root password '1234567' 2>/dev/null || true - -log_action "Creating cyberpanel database user..." -mysql -u root -p1234567 -e " -CREATE DATABASE IF NOT EXISTS cyberpanel; -CREATE USER IF NOT EXISTS 'cyberpanel'@'localhost' IDENTIFIED BY 'cyberpanel'; -GRANT ALL PRIVILEGES ON cyberpanel.* TO 'cyberpanel'@'localhost'; -FLUSH PRIVILEGES; -" 2>/dev/null || true - -log_action "Testing database connections..." -if mysql -u root -p1234567 -e "SELECT 1;" >/dev/null 2>&1; then - echo "โœ… MariaDB root connection: SUCCESS" -else - echo "โŒ MariaDB root connection: FAILED" -fi - -if mysql -u cyberpanel -pcyberpanel -e "SELECT 1;" >/dev/null 2>&1; then - echo "โœ… CyberPanel database connection: SUCCESS" -else - echo "โŒ CyberPanel database connection: FAILED" -fi -echo "" - -# 2. Fix LiteSpeed Service Configuration -echo "๐Ÿš€ FIXING LITESPEED SERVICE CONFIGURATION..." -echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - -log_action "Creating LiteSpeed service file..." -cat > /etc/systemd/system/lsws.service << 'EOF' -[Unit] -Description=LiteSpeed Web Server -After=network.target - -[Service] -Type=forking -User=root -Group=root -ExecStart=/usr/local/lsws/bin/lswsctrl start -ExecStop=/usr/local/lsws/bin/lswsctrl stop -ExecReload=/usr/local/lsws/bin/lswsctrl restart -Restart=always -RestartSec=5 - -[Install] -WantedBy=multi-user.target -EOF - -log_action "Reloading systemd daemon..." -systemctl daemon-reload - -log_action "Enabling LiteSpeed service..." -systemctl enable lsws - -log_action "Starting LiteSpeed service..." -systemctl start lsws - -if systemctl is-active --quiet lsws; then - echo "โœ… LiteSpeed service: STARTED" -else - echo "โŒ LiteSpeed service: FAILED TO START" -fi -echo "" - -# 3. Fix SSL Certificates -echo "๐Ÿ” FIXING SSL CERTIFICATES..." -echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - -log_action "Creating SSL certificate configuration..." -mkdir -p /root/cyberpanel -cat > /root/cyberpanel/cert_conf << 'EOF' -[req] -distinguished_name = req_distinguished_name -req_extensions = v3_req -prompt = no - -[req_distinguished_name] -C = US -ST = State -L = City -O = Organization -OU = Organizational Unit -CN = localhost - -[v3_req] -keyUsage = keyEncipherment, dataEncipherment -extendedKeyUsage = serverAuth -subjectAltName = @alt_names - -[alt_names] -DNS.1 = localhost -IP.1 = 127.0.0.1 -EOF - -log_action "Generating LiteSpeed admin SSL certificate..." -openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ - -keyout /usr/local/lsws/admin/conf/cert/admin.key \ - -out /usr/local/lsws/admin/conf/cert/admin.crt \ - -config /root/cyberpanel/cert_conf 2>/dev/null || true - -log_action "Setting proper permissions for SSL certificates..." -chmod 600 /usr/local/lsws/admin/conf/cert/admin.key 2>/dev/null || true -chmod 644 /usr/local/lsws/admin/conf/cert/admin.crt 2>/dev/null || true - -if [ -f "/usr/local/lsws/admin/conf/cert/admin.crt" ]; then - echo "โœ… LiteSpeed admin SSL certificate: CREATED" -else - echo "โŒ LiteSpeed admin SSL certificate: FAILED" -fi -echo "" - -# 4. Fix Admin Console Files -echo "๐Ÿ–ฅ๏ธ FIXING ADMIN CONSOLE FILES..." -echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - -log_action "Creating admin console directories..." -mkdir -p /usr/local/lsws/admin/fcgi-bin -mkdir -p /usr/local/lsws/admin/conf - -log_action "Creating admin PHP file..." -cat > /usr/local/lsws/admin/fcgi-bin/admin_php << 'EOF' -#!/bin/bash -export PHP_LSAPI_CHILDREN=35 -export PHP_LSAPI_MAX_REQUESTS=1000 -exec /usr/local/lsws/lsphp82/bin/lsphp -b /usr/local/lsws/admin/fcgi-bin/admin_php -EOF - -chmod +x /usr/local/lsws/admin/fcgi-bin/admin_php 2>/dev/null || true - -log_action "Creating admin password file..." -htpasswd -cb /usr/local/lsws/admin/conf/htpasswd admin 1234567 2>/dev/null || true - -log_action "Setting proper ownership..." -chown -R lsadm:lsadm /usr/local/lsws/admin/ 2>/dev/null || true - -if [ -f "/usr/local/lsws/admin/fcgi-bin/admin_php" ]; then - echo "โœ… Admin console files: CREATED" -else - echo "โŒ Admin console files: FAILED" -fi -echo "" - -# 5. Fix CyberPanel Application -echo "๐ŸŽ›๏ธ FIXING CYBERPANEL APPLICATION..." -echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - -log_action "Setting proper permissions for CyberPanel..." -chown -R root:root /usr/local/CyberCP/ 2>/dev/null || true -chmod -R 755 /usr/local/CyberCP/ 2>/dev/null || true - -log_action "Creating CyberPanel service file..." -cat > /etc/systemd/system/cyberpanel.service << 'EOF' -[Unit] -Description=CyberPanel Web Interface -After=network.target mariadb.service - -[Service] -Type=simple -User=root -Group=root -WorkingDirectory=/usr/local/CyberCP -ExecStart=/usr/local/CyberPanel-venv/bin/python manage.py runserver 0.0.0.0:8000 -Restart=always -RestartSec=5 -Environment=DJANGO_SETTINGS_MODULE=CyberCP.settings - -[Install] -WantedBy=multi-user.target -EOF - -log_action "Reloading systemd daemon..." -systemctl daemon-reload - -log_action "Enabling CyberPanel service..." -systemctl enable cyberpanel -echo "" - -# 6. Final Service Status Check -echo "๐Ÿ“Š FINAL SERVICE STATUS CHECK..." -echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - -services=("mariadb" "lsws" "lsmcd" "cyberpanel" "watchdog") - -for service in "${services[@]}"; do - if systemctl is-active --quiet $service; then - echo "โœ… $service: RUNNING" - else - echo "โš ๏ธ $service: NOT RUNNING" - fi -done -echo "" - -# 7. Port Status Check -echo "๐ŸŒ PORT STATUS CHECK..." -echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" - -ports=("3306:MariaDB" "80:HTTP" "443:HTTPS" "8090:CyberPanel" "7080:LiteSpeed Admin") - -for port_info in "${ports[@]}"; do - port=$(echo $port_info | cut -d: -f1) - service=$(echo $port_info | cut -d: -f2) - - if netstat -tlnp | grep -q ":$port "; then - echo "โœ… Port $port ($service): LISTENING" - else - echo "โŒ Port $port ($service): NOT LISTENING" - fi -done -echo "" - -echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—" -echo "โ•‘ โ•‘" -echo "โ•‘ ๐ŸŽ‰ INSTALLATION ISSUES FIXED! ๐ŸŽ‰ โ•‘" -echo "โ•‘ โ•‘" -echo "โ•‘ All critical issues have been addressed. The server is now ready for restart. โ•‘" -echo "โ•‘ โ•‘" -echo "โ•‘ After restart, run: ./service_status_check.sh โ•‘" -echo "โ•‘ โ•‘" -echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" diff --git a/install_phpmyadmin.sh b/install_phpmyadmin.sh deleted file mode 100755 index f19f04738..000000000 --- a/install_phpmyadmin.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/bash -set -e - -echo "=== Installing phpMyAdmin for CyberPanel ===" - -# Check if running as root -if [ "$EUID" -ne 0 ]; then - echo "Please run this script as root" - exit 1 -fi - -# Define constants -phpmyadmin_version="5.2.3" -dest_dir="/usr/local/CyberCP/public/phpmyadmin" -temp_dir="/tmp" -download_url="https://files.phpmyadmin.net/phpMyAdmin/${phpmyadmin_version}/phpMyAdmin-${phpmyadmin_version}-all-languages.tar.gz" - -# Create public directory if it doesn't exist -if [ ! -d "/usr/local/CyberCP/public" ]; then - mkdir -p "/usr/local/CyberCP/public" -fi - -# Remove old installation if exists -if [ -d "$dest_dir" ]; then - echo "Removing old phpMyAdmin installation..." - rm -rf "$dest_dir" -fi - -# Create phpMyAdmin directory -mkdir -p "$dest_dir" - -echo "Downloading phpMyAdmin ${phpmyadmin_version}..." -if ! wget -q -O "${temp_dir}/phpmyadmin.tar.gz" "$download_url"; then - echo "ERROR: Unable to download phpMyAdmin version ${phpmyadmin_version}" - exit 1 -fi - -echo "Extracting phpMyAdmin..." -tar -xzf "${temp_dir}/phpmyadmin.tar.gz" -C "/usr/local/CyberCP/public/" - -# Move extracted directory to phpmyadmin -extracted_dir=$(find /usr/local/CyberCP/public -maxdepth 1 -type d -name "phpMyAdmin-*-all-languages" | head -1) -if [ -n "$extracted_dir" ] && [ -d "$extracted_dir" ]; then - echo "Moving files from $extracted_dir to $dest_dir..." - mv "$extracted_dir"/* "$dest_dir/" 2>/dev/null || true - mv "$extracted_dir"/.* "$dest_dir/" 2>/dev/null || true - rm -rf "$extracted_dir" -fi - -# Cleanup -rm -f "${temp_dir}/phpmyadmin.tar.gz" - -echo "Configuring phpMyAdmin..." - -# Generate random blowfish secret -blowfish_secret=$(openssl rand -hex 16) - -# Read config.sample.inc.php and create config.inc.php -if [ ! -f "$dest_dir/config.sample.inc.php" ]; then - echo "ERROR: config.sample.inc.php not found!" - exit 1 -fi - -# Create config.inc.php -cat > "$dest_dir/config.inc.php" << 'EOF' -. - * - * @package PhpMyAdmin - */ - -declare(strict_types=1); - -/** - * This is needed for cookie based authentication to encrypt password in - * cookie. Needs to be 32 chars long. - */ -$cfg['blowfish_secret'] = 'BLOWFISH_SECRET_PLACEHOLDER'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ - -/** - * Servers configuration - */ -$i = 0; - -/** - * First server - */ -$i++; -/* Authentication type */ -$cfg['Servers'][$i]['AllowNoPassword'] = false; -$cfg['Servers'][$i]['auth_type'] = 'signon'; -$cfg['Servers'][$i]['SignonSession'] = 'SignonSession'; -$cfg['Servers'][$i]['SignonURL'] = 'phpmyadminsignin.php'; -$cfg['Servers'][$i]['LogoutURL'] = 'phpmyadminsignin.php?logout'; - -/* Server parameters */ -$cfg['Servers'][$i]['host'] = 'localhost'; -$cfg['Servers'][$i]['compress'] = false; -$cfg['Servers'][$i]['AllowNoPassword'] = false; - -/* Temp directory */ -$cfg['TempDir'] = '/usr/local/CyberCP/public/phpmyadmin/tmp'; -EOF - -# Replace blowfish secret -sed -i "s/BLOWFISH_SECRET_PLACEHOLDER/$blowfish_secret/g" "$dest_dir/config.inc.php" - -# Create tmp directory -mkdir -p "$dest_dir/tmp" -mkdir -p "$dest_dir/tmp/twig" - -# Copy phpmyadminsignin.php -if [ -f "/usr/local/CyberCP/plogical/phpmyadminsignin.php" ]; then - cp /usr/local/CyberCP/plogical/phpmyadminsignin.php "$dest_dir/phpmyadminsignin.php" - echo "Copied phpmyadminsignin.php" -else - echo "WARNING: phpmyadminsignin.php not found at /usr/local/CyberCP/plogical/phpmyadminsignin.php" -fi - -# Update mysqlhost if remote mysql is configured -if [ -f "/etc/cyberpanel/mysqlPassword" ]; then - mysqlhost=$(python3 -c "import json; data=json.load(open('/etc/cyberpanel/mysqlPassword')); print(data.get('mysqlhost', 'localhost'))" 2>/dev/null || echo "localhost") - if [ "$mysqlhost" != "localhost" ]; then - sed -i "s|localhost|$mysqlhost|g" "$dest_dir/phpmyadminsignin.php" - sed -i "s|'host' => 'localhost'|'host' => '$mysqlhost'|g" "$dest_dir/config.inc.php" - echo "Updated MySQL host to: $mysqlhost" - fi -fi - -# Set permissions -echo "Setting permissions..." -chown -R lscpd:lscpd "$dest_dir" -find "$dest_dir" -type d -exec chmod 755 {} \; -find "$dest_dir" -type f -exec chmod 644 {} \; -chown -R lscpd:lscpd "$dest_dir/tmp" -chmod 755 "$dest_dir/tmp" - -echo "" -echo "=== phpMyAdmin installation completed ===" -echo "Location: $dest_dir" -echo "" diff --git a/rollback_phpmyadmin_redirect.sh b/rollback_phpmyadmin_redirect.sh deleted file mode 100644 index 159ec00a3..000000000 --- a/rollback_phpmyadmin_redirect.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -# CyberPanel phpMyAdmin Access Control Rollback Script -# This script reverts the phpMyAdmin access control changes - -echo "=== CyberPanel phpMyAdmin Access Control Rollback ===" - -# Check if running as root -if [ "$EUID" -ne 0 ]; then - echo "Please run this script as root" - exit 1 -fi - -# Find the most recent backup -LATEST_BACKUP=$(ls -t /usr/local/CyberCP/public/phpmyadmin/index.php.backup.* 2>/dev/null | head -n1) - -if [ -z "$LATEST_BACKUP" ]; then - echo "No backup found. Cannot rollback changes." - echo "You may need to reinstall phpMyAdmin or restore from your own backup." - exit 1 -fi - -echo "Found backup: $LATEST_BACKUP" -echo "Restoring original phpMyAdmin index.php..." - -# Restore the original index.php -cp "$LATEST_BACKUP" /usr/local/CyberCP/public/phpmyadmin/index.php - -# Remove the .htaccess file if it exists -if [ -f "/usr/local/CyberCP/public/phpmyadmin/.htaccess" ]; then - echo "Removing .htaccess file..." - rm /usr/local/CyberCP/public/phpmyadmin/.htaccess -fi - -# Set proper permissions -echo "Setting permissions..." -chown lscpd:lscpd /usr/local/CyberCP/public/phpmyadmin/index.php -chmod 644 /usr/local/CyberCP/public/phpmyadmin/index.php - -# Restart LiteSpeed to ensure changes take effect -echo "Restarting LiteSpeed..." -systemctl restart lscpd - -echo "=== Rollback Complete ===" -echo "" -echo "phpMyAdmin access control has been reverted!" -echo "phpMyAdmin should now work as it did before the changes." -echo "" -echo "Backup file used: $LATEST_BACKUP"