Merge pull request #1542 from master3395/v2.5.5-dev

Remove obsolete documentation and testing scripts related to branch p…
This commit is contained in:
Master3395 2025-09-25 00:56:28 +02:00 committed by GitHub
commit 72c5d274c7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 300 additions and 371 deletions

View File

@ -1,96 +0,0 @@
# Branch Prefix Fix - v2.5.5-dev Issue Resolved
## Problem Identified
The user discovered that when trying to install `2.5.5-dev`, the installer was incorrectly trying to access:
```
https://raw.githubusercontent.com/usmannasir/cyberpanel/2.5.5-dev/requirments.txt
```
But the actual branch exists as `v2.5.5-dev` (with the `v` prefix):
```
https://github.com/usmannasir/cyberpanel/blob/v2.5.5-dev/requirments.txt
```
## Root Cause
The `Branch_Check()` function in `cyberpanel.sh` was not properly handling development version branch names. When a user entered `2.5.5-dev`, the code was setting `Branch_Name="2.5.5-dev"` instead of adding the required `v` prefix to make it `v2.5.5-dev`.
## Solution Applied
### 1. Enhanced Branch Name Logic
Updated the `Branch_Check()` function to automatically add the `v` prefix for development branches:
```bash
# Handle both stable and development versions
if [[ "$1" =~ -dev$ ]]; then
# Add 'v' prefix for development branches if not already present
if [[ "$1" =~ ^v.*-dev$ ]]; then
Branch_Name="${1//[[:space:]]/}"
else
Branch_Name="v${1//[[:space:]]/}"
fi
echo -e "\nSet branch name to $Branch_Name (development version)..."
```
### 2. Updated User Guidance
Modified the version prompt to clarify that the `v` prefix will be automatically added:
```
2.5.5-dev (development version - will auto-add 'v' prefix)
v2.3.5-dev (development version with 'v' prefix)
```
## Verification
**Confirmed**: The `v2.5.5-dev` branch exists and is accessible via [GitHub](https://github.com/usmannasir/cyberpanel/tree/v2.5.5-dev)
**Confirmed**: The requirements file is available at the correct URL
**Confirmed**: The fix handles both formats (`2.5.5-dev` and `v2.5.5-dev`)
**Confirmed**: GitHub API verification works correctly
## Impact
- Users can now enter `2.5.5-dev` and it will automatically work as `v2.5.5-dev`
- Existing users who were already using `v2.5.5-dev` format continue to work
- No breaking changes to existing functionality
- Clearer user guidance about branch naming
## Files Modified
- `cyberpanel/cyberpanel.sh` - Enhanced `Branch_Check()` function
- `cyberpanel/tools/test_fixes.sh` - Updated test cases
- `cyberpanel/BRANCH_PREFIX_FIX.md` - This documentation
## Test Results
```bash
# Test 1: Non-existent branch (should fail)
curl -I https://raw.githubusercontent.com/usmannasir/cyberpanel/2.5.5-dev/requirments.txt
# Result: 404 Not Found ✅
# Test 2: Correct branch name (should work)
curl -I https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/requirments.txt
# Result: 200 OK ✅
```
## Installation Examples
### Now Works:
```bash
sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh)
# When prompted, enter: 2.5.5-dev
# Will automatically use: v2.5.5-dev
```
### Still Works:
```bash
sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh)
# When prompted, enter: v2.5.5-dev
# Will use: v2.5.5-dev (no change)
```
---
**Fix Applied**: September 24, 2025
**Issue**: Branch prefix missing for development versions
**Status**: ✅ Resolved

View File

@ -1266,8 +1266,11 @@ else
fi
echo -e "\nPlease choose to use default admin password \e[31m1234567\e[39m, randomly generate one \e[31m(recommended)\e[39m or specify the admin password?"
printf "%s" "Choose [d]fault, [r]andom or [s]et password: [d/r/s] "
Tmp_Input="r"
printf "%s" "Choose [d]fault, [r]andom or [s]et password (default: random): [d/r/s] "
read -r Tmp_Input
if [[ -z $Tmp_Input ]]; then
Tmp_Input="r"
fi
if [[ $Tmp_Input =~ ^(d|D| ) ]] || [[ -z $Tmp_Input ]]; then
Admin_Pass="1234567"
@ -1309,7 +1312,7 @@ else
fi
echo -e "\nDo you wish to install Memcached process and its PHP extension?"
printf "%s" "Please select [Y/n]: "
printf "%s" "Please select [Y/n] (default: Yes): "
read -r Tmp_Input
if [[ $Tmp_Input =~ ^(no|n|N) ]]; then
Memcached="Off"
@ -1319,7 +1322,7 @@ else
fi
echo -e "\nDo you wish to install Redis process and its PHP extension?"
printf "%s" "Please select [Y/n]: "
printf "%s" "Please select [Y/n] (default: Yes): "
read -r Tmp_Input
if [[ $Tmp_Input =~ ^(no|n|N) ]]; then
Redis="Off"
@ -1331,13 +1334,14 @@ fi
echo -e "\nWould you like to set up a WatchDog \e[31m(beta)\e[39m for Web service and Database service ?"
echo -e "The watchdog script will be automatically started up after installation and server reboot"
echo -e "If you want to kill the watchdog , run \e[31mwatchdog kill\e[39m"
echo -e "Please type Yes or no (with capital \e[31mY\e[39m, default Yes): "
echo -e "Please select [Y/n] (default: Yes): "
read -r Tmp_Input
if [[ $Tmp_Input = "Yes" ]] || [[ $Tmp_Input = "" ]]; then
if [[ $Tmp_Input =~ ^(no|n|N) ]]; then
Watchdog="Off"
echo -e "\nInstall Watchdog set to No...\n"
else
Watchdog="On"
echo -e "\nInstall Watchdog set to Yes...\n"
else
Watchdog="Off"
fi
}
@ -1636,23 +1640,41 @@ if [[ "$Server_OS" =~ ^(CentOS|RHEL|AlmaLinux|RockyLinux|CloudLinux|openEuler) ]
# STEP 4: Setup MariaDB repository for RHEL 9+ based systems (AlmaLinux 9/10, RockyLinux 9, RHEL 9)
if [[ "$Server_OS" =~ ^(AlmaLinux9|AlmaLinux10|RockyLinux9|RHEL9|RHEL10) ]] ; then
# Use the official MariaDB repository setup script for better compatibility
log_info "Setting up MariaDB repository for $Server_OS..."
curl -sS "https://downloads.mariadb.com/MariaDB/mariadb_repo_setup" | bash -s -- --mariadb-server-version="12.1" --skip-maxscale --skip-tools
Check_Return "MariaDB repository setup" "no_exit"
# Verify MariaDB repository was added successfully
if dnf repolist | grep -q "mariadb"; then
log_info "MariaDB repository added successfully"
# First, try to use the official MariaDB repository setup script
log_info "Attempting official MariaDB repository setup script..."
curl -sS "https://downloads.mariadb.com/MariaDB/mariadb_repo_setup" | bash -s -- --mariadb-server-version="12.1" --skip-maxscale --skip-tools 2>/dev/null
# Check if the official script worked
if dnf repolist | grep -q "mariadb" 2>/dev/null; then
log_info "MariaDB repository added successfully via official script"
else
log_warning "MariaDB repository setup may have failed, continuing with installation"
fi
# Fallback manual repository setup if the script fails
if [ ! -f /etc/yum.repos.d/mariadb.repo ]; then
log_warning "Official MariaDB repository setup failed, using fallback method"
# Enhanced fallback: Try multiple repository configurations
log_info "Setting up MariaDB repository using fallback method..."
# Method 1: Use the redirected mirror URL
cat <<EOF >/etc/yum.repos.d/MariaDB.repo
# MariaDB 10.11 RHEL9+ repository list
# http://downloads.mariadb.org/mariadb/repositories/
# MariaDB 12.1 RHEL9+ repository list
# https://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirror.mariadb.org/yum/12.1/rhel9-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
enabled=1
gpgcheck=1
module_hotfixes=1
gpgkey=https://downloads.mariadb.com/MariaDB/MariaDB-Server-GPG-KEY
gpgkey=https://downloads.mariadb.com/MariaDB/MariaDB-ColumnStore-GPG-KEY
EOF
# Method 2: Alternative repository configuration if first fails
if ! dnf repolist | grep -q "mariadb" 2>/dev/null; then
log_info "Trying alternative MariaDB repository configuration..."
cat <<EOF >/etc/yum.repos.d/MariaDB.repo
# MariaDB 12.1 Alternative repository configuration
[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/12.1/rhel9-amd64/
@ -1661,7 +1683,14 @@ enabled=1
gpgcheck=1
module_hotfixes=1
EOF
Check_Return "MariaDB repository fallback setup" "no_exit"
fi
# Method 3: If still no repository, try using AppStream (AlmaLinux 9.6 default)
if ! dnf repolist | grep -q "mariadb" 2>/dev/null; then
log_info "MariaDB repository setup failed, will use AlmaLinux AppStream repository"
# Enable AppStream if not already enabled
dnf config-manager --enable appstream 2>/dev/null || true
fi
fi
# STEP 5: Clean caches after MariaDB repo setup
@ -1693,18 +1722,59 @@ EOF
dnf install -y libnsl zip wget strace net-tools curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel curl-devel git platform-python-devel tar socat python3 zip unzip bind-utils openssl-devel boost-devel boost-program-options
Check_Return "Base system packages" "no_exit"
# Second: Install MariaDB packages (with proper dependency resolution)
dnf install -y mariadb-server mariadb-devel mariadb-client-utils --skip-broken --nobest
Check_Return "MariaDB packages" "no_exit"
# Second: Install MariaDB packages (with comprehensive fallback logic for AlmaLinux 9.6)
log_info "Installing MariaDB packages for AlmaLinux 9.6..."
# STEP 7.1: Check for package conflicts and resolve them
echo "Checking for package conflicts..."
if dnf list installed | grep -q "mariadb-server"; then
echo "MariaDB server installed successfully"
# Try multiple installation methods for maximum compatibility
mariadb_installed=false
# Method 1: Try from MariaDB repository (if available)
if dnf repolist | grep -q "mariadb" 2>/dev/null; then
log_info "Installing MariaDB from official MariaDB repository..."
dnf install -y mariadb-server mariadb-devel mariadb-client-utils --skip-broken --nobest 2>/dev/null
if dnf list installed | grep -q "mariadb-server" 2>/dev/null; then
mariadb_installed=true
log_info "MariaDB installed successfully from official repository"
fi
fi
# Method 2: Try from AppStream repository (AlmaLinux 9.6 default)
if [ "$mariadb_installed" = false ]; then
log_info "Installing MariaDB from AlmaLinux AppStream repository..."
dnf install -y mariadb-server mariadb-devel mariadb-client-utils --skip-broken --nobest --allowerasing 2>/dev/null
if dnf list installed | grep -q "mariadb-server" 2>/dev/null; then
mariadb_installed=true
log_info "MariaDB installed successfully from AppStream repository"
fi
fi
# Method 3: Try with minimal dependencies if still failing
if [ "$mariadb_installed" = false ]; then
log_info "Installing MariaDB with minimal dependencies..."
dnf install -y mariadb-server --skip-broken --nobest --allowerasing 2>/dev/null || true
dnf install -y mariadb-devel --skip-broken --nobest --allowerasing 2>/dev/null || true
if dnf list installed | grep -q "mariadb-server" 2>/dev/null; then
mariadb_installed=true
log_info "MariaDB installed successfully with minimal dependencies"
fi
fi
# Method 4: Final fallback - try MySQL as alternative
if [ "$mariadb_installed" = false ]; then
log_warning "MariaDB installation failed, trying MySQL as fallback..."
dnf install -y mysql-server mysql-devel --skip-broken --nobest --allowerasing 2>/dev/null || true
if dnf list installed | grep -q "mysql-server" 2>/dev/null; then
log_info "MySQL installed as fallback for MariaDB"
mariadb_installed=true
fi
fi
# Final verification
if [ "$mariadb_installed" = false ]; then
log_error "Failed to install MariaDB or MySQL. Manual intervention may be required."
Check_Return "MariaDB packages" "no_exit"
else
echo "Warning: MariaDB server not found, attempting to resolve..."
# Try installing from different sources
dnf install -y mariadb-server --skip-broken --nobest --allowerasing
log_info "Database server installed successfully"
fi
# STEP 8: Install development tools group

View File

@ -415,11 +415,11 @@ if [[ "$Server_OS" = "CentOS" ]] || [[ "$Server_OS" = "AlmaLinux9" ]] ; then
Check_Return "yum repo" "no_exit"
cat << EOF > /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.4 CentOS repository list - created 2021-08-06 02:01 UTC
# MariaDB 12.1 CentOS repository list - updated 2025-09-25
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
baseurl = http://yum.mariadb.org/12.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

View File

@ -228,16 +228,29 @@ class preFlightsChecks:
command = "dnf install -y epel-release"
self.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
# Install PHP dependencies that are missing
# Install AlmaLinux 9 compatibility packages
self.stdOut("Installing AlmaLinux 9 compatibility packages...", 1)
compat_packages = [
"libxcrypt-compat",
"libnsl",
"compat-openssl11",
"compat-openssl11-devel"
]
for package in compat_packages:
command = f"dnf install -y {package}"
self.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
# Install PHP dependencies that are missing (with AlmaLinux 9 compatibility)
self.stdOut("Installing PHP dependencies...", 1)
php_deps = [
# Base packages that should work on all systems
base_deps = [
"ImageMagick", "ImageMagick-devel",
"gd", "gd-devel",
"libicu", "libicu-devel",
"oniguruma", "oniguruma-devel",
"aspell", "aspell-devel",
"libc-client", "libc-client-devel",
"libmemcached", "libmemcached-devel",
"freetype-devel",
"libjpeg-turbo-devel",
"libpng-devel",
@ -256,14 +269,77 @@ class preFlightsChecks:
"gcc-c++"
]
for dep in php_deps:
# Install base packages
for dep in base_deps:
command = f"dnf install -y {dep}"
self.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
# Install MariaDB
self.stdOut("Installing MariaDB...", 1)
command = "dnf install -y mariadb-server mariadb-devel mariadb-client"
self.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
# Install AlmaLinux 9 specific packages with fallbacks
alma9_specific = [
("libc-client", "libc-client-devel"),
("libmemcached", "libmemcached-devel")
]
for package, dev_package in alma9_specific:
# Try to install the main package first
command = f"dnf install -y {package}"
result = self.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
if result == 1:
self.stdOut(f"Successfully installed {package}", 1)
# Try to install the development package
dev_command = f"dnf install -y {dev_package}"
self.call(dev_command, self.distro, dev_command, dev_command, 1, 0, os.EX_OSERR)
else:
self.stdOut(f"Package {package} not available, trying alternatives...", 1)
# Try alternative package names for AlmaLinux 9
alternatives = {
"libc-client": ["libc-client-devel", "uw-imap-devel"],
"libmemcached": ["libmemcached-devel", "memcached-devel"]
}
if package in alternatives:
for alt_package in alternatives[package]:
alt_command = f"dnf install -y {alt_package}"
result = self.call(alt_command, self.distro, alt_command, alt_command, 1, 0, os.EX_OSERR)
if result == 1:
self.stdOut(f"Successfully installed alternative: {alt_package}", 1)
break
# Install MariaDB with enhanced AlmaLinux 9.6 support
self.stdOut("Installing MariaDB for AlmaLinux 9.6...", 1)
# Try multiple installation methods for maximum compatibility
mariadb_commands = [
"dnf install -y mariadb-server mariadb-devel mariadb-client --skip-broken --nobest",
"dnf install -y mariadb-server mariadb-devel mariadb-client --allowerasing",
"dnf install -y mariadb-server mariadb-devel --skip-broken --nobest --allowerasing",
"dnf install -y mariadb-server --skip-broken --nobest --allowerasing"
]
mariadb_installed = False
for cmd in mariadb_commands:
try:
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=300)
if result.returncode == 0:
mariadb_installed = True
self.stdOut(f"MariaDB installed successfully with command: {cmd}", 1)
break
except subprocess.TimeoutExpired:
self.stdOut(f"Timeout installing MariaDB with command: {cmd}", 0)
continue
except Exception as e:
self.stdOut(f"Error installing MariaDB with command: {cmd} - {str(e)}", 0)
continue
if not mariadb_installed:
self.stdOut("MariaDB installation failed, trying MySQL as fallback...", 0)
try:
command = "dnf install -y mysql-server mysql-devel --skip-broken --nobest --allowerasing"
self.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
self.stdOut("MySQL installed as fallback for MariaDB", 1)
except:
self.stdOut("Both MariaDB and MySQL installation failed", 0)
# Install additional required packages
self.stdOut("Installing additional required packages...", 1)
@ -677,18 +753,42 @@ class preFlightsChecks:
self.call(command, self.distro, command, command, 0, 0, os.EX_OSERR)
# Save MySQL password to file for later use
try:
os.makedirs('/etc/cyberpanel', exist_ok=True)
with open('/etc/cyberpanel/mysqlPassword', 'w') as f:
f.write(self.mysql_Root_password)
os.chmod('/etc/cyberpanel/mysqlPassword', 0o600)
self.stdOut("MySQL password saved to /etc/cyberpanel/mysqlPassword", 1)
except Exception as e:
self.stdOut(f"Warning: Could not save MySQL password to file: {str(e)}", 0)
self.ensure_mysql_password_file()
except Exception as e:
self.stdOut(f"Error changing MySQL root password: {str(e)}", 0)
def ensure_mysql_password_file(self):
"""Ensure MySQL password file exists and is properly configured"""
try:
os.makedirs('/etc/cyberpanel', exist_ok=True)
# Check if password file already exists
passFile = '/etc/cyberpanel/mysqlPassword'
if os.path.exists(passFile):
# Verify the file has content
with open(passFile, 'r') as f:
content = f.read().strip()
if content:
self.stdOut("MySQL password file already exists and has content", 1)
return
# Create or update the password file
if hasattr(self, 'mysql_Root_password') and self.mysql_Root_password:
with open(passFile, 'w') as f:
f.write(self.mysql_Root_password)
os.chmod(passFile, 0o600)
self.stdOut("MySQL password saved to /etc/cyberpanel/mysqlPassword", 1)
logging.InstallLog.writeToFile("MySQL password file created successfully")
else:
raise Exception("No MySQL root password available to save")
except Exception as e:
error_msg = f"Critical: Could not save MySQL password to file: {str(e)}"
self.stdOut(error_msg, 0)
logging.InstallLog.writeToFile(error_msg)
raise Exception(error_msg)
def command_exists(self, command):
"""Check if a command exists in PATH"""
try:
@ -813,9 +913,31 @@ class preFlightsChecks:
try:
self.stdOut("Fixing OpenLiteSpeed configurations...", 1)
# Check if OpenLiteSpeed configuration file exists
config_file = self.server_root_path + "conf/httpd_config.conf"
if not os.path.exists(config_file):
self.stdOut("OpenLiteSpeed configuration file not found, creating default configuration...", 1)
# Create the configuration directory if it doesn't exist
os.makedirs(os.path.dirname(config_file), exist_ok=True)
# Create a basic configuration file
with open(config_file, 'w') as f:
f.write("# OpenLiteSpeed Configuration\n")
f.write("serverName localhost\n")
f.write("listener *:8088 {\n")
f.write(" address *:8088\n")
f.write(" secure 0\n")
f.write(" map *:8088 *\n")
f.write("}\n")
f.write("listener *:80 {\n")
f.write(" address *:80\n")
f.write(" secure 0\n")
f.write(" map *:80 *\n")
f.write("}\n")
self.stdOut("Default OpenLiteSpeed configuration created", 1)
# Remove example virtual host
data = open(self.server_root_path + "conf/httpd_config.conf", 'r').readlines()
writeDataToFile = open(self.server_root_path + "conf/httpd_config.conf", 'w')
data = open(config_file, 'r').readlines()
writeDataToFile = open(config_file, 'w')
for items in data:
if items.find("map") > -1 and items.find("Example") > -1:
@ -838,11 +960,15 @@ class preFlightsChecks:
self.stdOut("Changing OpenLiteSpeed port to 80...", 1)
file_path = self.server_root_path + "conf/httpd_config.conf"
if self.modify_file_content(file_path, {"*:8088": "*:80"}):
self.stdOut("OpenLiteSpeed port changed to 80", 1)
self.reStartLiteSpeed()
return True
if os.path.exists(file_path):
if self.modify_file_content(file_path, {"*:8088": "*:80"}):
self.stdOut("OpenLiteSpeed port changed to 80", 1)
self.reStartLiteSpeed()
return True
else:
return False
else:
self.stdOut("OpenLiteSpeed configuration file not found, skipping port change", 1)
return False
except Exception as e:
@ -1322,7 +1448,12 @@ class preFlightsChecks:
command = 'rpm -ivh http://rpms.litespeedtech.com/centos/litespeed-repo-1.2-1.el7.noarch.rpm'
preFlightsChecks.call(command, self.distro, command, command, 1, 1, os.EX_OSERR)
elif self.distro == cent8:
command = 'rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm'
# Use compatible repository version for RHEL-based systems
# AlmaLinux 9 is compatible with el8 repositories
if os_info['name'] in ['almalinux', 'rocky', 'rhel'] and os_info['major_version'] in ['8', '9']:
command = 'rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm'
else:
command = 'rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm'
preFlightsChecks.call(command, self.distro, command, command, 1, 1, os.EX_OSERR)
def fix_selinux_issue(self):
@ -1544,9 +1675,38 @@ class preFlightsChecks:
if self.remotemysql == 'OFF':
passFile = "/etc/cyberpanel/mysqlPassword"
f = open(passFile)
data = f.read()
password = data.split('\n', 1)[0]
# Check if MySQL password file exists, create it if missing
if not os.path.exists(passFile):
logging.InstallLog.writeToFile("MySQL password file not found, creating it...")
try:
# Ensure directory exists
os.makedirs('/etc/cyberpanel', exist_ok=True)
# Use the stored MySQL root password
if hasattr(self, 'mysql_Root_password') and self.mysql_Root_password:
password = self.mysql_Root_password
# Create the password file
with open(passFile, 'w') as f:
f.write(password)
os.chmod(passFile, 0o600)
logging.InstallLog.writeToFile("MySQL password file created successfully")
else:
logging.InstallLog.writeToFile("ERROR: No MySQL root password available")
raise Exception("MySQL root password not available")
except Exception as e:
logging.InstallLog.writeToFile(f"ERROR: Failed to create MySQL password file: {str(e)}")
raise Exception(f"Failed to create MySQL password file: {str(e)}")
else:
# Read existing password file
try:
with open(passFile, 'r') as f:
data = f.read()
password = data.split('\n', 1)[0].strip()
if not password:
raise Exception("Empty password in file")
except Exception as e:
logging.InstallLog.writeToFile(f"ERROR: Failed to read MySQL password file: {str(e)}")
raise Exception(f"Failed to read MySQL password file: {str(e)}")
else:
password = self.mysqlpassword
@ -3753,7 +3913,12 @@ milter_default_action = accept
if result != 1:
logging.InstallLog.writeToFile("[setupPHPSymlink] LiteSpeed repository not found, attempting to add it...")
# Add LiteSpeed repository
repo_command = 'rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm'
# Use compatible repository version for RHEL-based systems
# AlmaLinux 9 is compatible with el8 repositories
if os_info['name'] in ['almalinux', 'rocky', 'rhel'] and os_info['major_version'] in ['8', '9']:
repo_command = 'rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm'
else:
repo_command = 'rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm'
preFlightsChecks.call(repo_command, self.distro, repo_command, repo_command, 1, 0, os.EX_OSERR)
# Check if PHP 8.2 exists
@ -4723,6 +4888,9 @@ def main():
# Apply OS-specific fixes early in the installation process
checks.apply_os_specific_fixes()
# Ensure MySQL password file is created early to prevent FileNotFoundError
checks.ensure_mysql_password_file()
checks.mountTemp()
checks.installQuota()

View File

@ -1,50 +0,0 @@
# CyberPanel Installation Tools
This directory contains utility scripts for testing and validating CyberPanel installation fixes.
## Files
### `test_fixes.sh`
A comprehensive test script that validates all the installation fixes applied to CyberPanel.
**Purpose:**
- Validates that all critical installation issues have been resolved
- Tests requirements file fallback logic
- Verifies MariaDB version updates
- Checks GPG fix implementations
- Validates branch/commit existence verification
**Usage:**
```bash
# Run from the cyberpanel root directory
cd /path/to/cyberpanel
bash tools/test_fixes.sh
```
**Requirements:**
- Linux/Unix environment with bash
- curl command available
- Internet connectivity for API calls
**What it tests:**
1. Requirements file availability (404/200 responses)
2. Commit validation via GitHub API
3. Available branches listing
4. MariaDB repository accessibility
5. File modification verification
6. GPG fix implementation
7. Requirements fallback logic
8. Branch/commit validation
**Note:** This script is primarily for development and maintenance purposes. It's not required for normal CyberPanel installation.
## When to Use
- After modifying installation scripts
- When troubleshooting installation issues
- During development of new fixes
- For quality assurance validation
## Output
The script provides clear ✅/❌ indicators for each test, making it easy to identify any issues with the installation fixes.

View File

@ -1,163 +0,0 @@
#!/bin/bash
# CyberPanel Installation Fixes Test Script
# This script tests the key fixes applied to the installer
echo "=== CyberPanel Installation Fixes Test ==="
echo ""
# Test 1: Check if requirements file fallback logic works
echo "Test 1: Testing requirements file fallback logic..."
echo "Testing non-existent branch (should show 404)..."
if curl -s -I "https://raw.githubusercontent.com/usmannasir/cyberpanel/2.5.5-dev/requirments.txt" | grep -q "404 Not Found"; then
echo "✅ Non-existent branch (without 'v' prefix) correctly returns 404"
else
echo "❌ Non-existent branch test failed"
fi
echo "Testing v2.5.5-dev branch (should show 200)..."
if curl -s -I "https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/requirments.txt" | grep -q "200 OK"; then
echo "✅ v2.5.5-dev branch correctly returns 200"
else
echo "❌ v2.5.5-dev branch test failed"
fi
echo "Testing GitHub API for v2.5.5-dev branch..."
if curl -s "https://api.github.com/repos/usmannasir/cyberpanel/branches/v2.5.5-dev" | grep -q '"name"'; then
echo "✅ v2.5.5-dev branch verified via GitHub API"
else
echo "❌ v2.5.5-dev branch GitHub API test failed"
fi
echo "Testing existing commit (should show 200)..."
if curl -s -I "https://raw.githubusercontent.com/usmannasir/cyberpanel/b05d9cb5bb3c277b22a6070f04844e8a7951585b/requirments.txt" | grep -q "200 OK"; then
echo "✅ Existing commit correctly returns 200"
else
echo "❌ Existing commit test failed"
fi
echo "Testing stable branch (should show 200)..."
if curl -s -I "https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/requirments.txt" | grep -q "200 OK"; then
echo "✅ Stable branch correctly returns 200"
else
echo "❌ Stable branch test failed"
fi
echo ""
# Test 2: Check if commit validation works
echo "Test 2: Testing commit validation..."
echo "Testing valid commit (should return commit info)..."
if curl -s "https://api.github.com/repos/usmannasir/cyberpanel/commits/b05d9cb5bb3c277b22a6070f04844e8a7951585b" | grep -q '"sha"'; then
echo "✅ Valid commit correctly validated"
else
echo "❌ Valid commit validation failed"
fi
echo "Testing invalid commit (should not return commit info)..."
if ! curl -s "https://api.github.com/repos/usmannasir/cyberpanel/commits/invalidcommit123456789" | grep -q '"sha"'; then
echo "✅ Invalid commit correctly rejected"
else
echo "❌ Invalid commit validation failed"
fi
echo ""
# Test 3: Check available branches
echo "Test 3: Testing branch availability..."
echo "Available branches:"
curl -s "https://api.github.com/repos/usmannasir/cyberpanel/branches" | grep '"name"' | head -10
echo ""
# Test 4: Check MariaDB repository availability
echo "Test 4: Testing MariaDB 12.1 repository availability..."
echo "Testing MariaDB 12.1 repository..."
if curl -s -I "https://yum.mariadb.org/12.1/rhel9-amd64/repodata/repomd.xml" | grep -q "200 OK"; then
echo "✅ MariaDB 12.1 repository is accessible"
else
echo "❌ MariaDB 12.1 repository test failed"
fi
echo ""
# Test 5: Check if files were modified correctly
echo "Test 5: Testing file modifications..."
echo "Checking if MariaDB version was updated to 12.1..."
if grep -q "12.1" cyberpanel/cyberpanel.sh; then
echo "✅ MariaDB 12.1 references found in cyberpanel.sh"
else
echo "❌ MariaDB 12.1 references not found in cyberpanel.sh"
fi
if grep -q "12.1" cyberpanel/install/install.py; then
echo "✅ MariaDB 12.1 references found in install.py"
else
echo "❌ MariaDB 12.1 references not found in install.py"
fi
echo ""
# Test 6: Check if GPG fixes were applied
echo "Test 6: Testing GPG fixes..."
echo "Checking if MySQL Community packages were removed from priority..."
if grep -q "mariadb-devel.*mariadb-connector-c-devel" cyberpanel/cyberpanel.sh; then
echo "✅ MariaDB packages prioritized in cyberpanel.sh"
else
echo "❌ MariaDB packages not prioritized in cyberpanel.sh"
fi
if grep -q "--nogpgcheck" cyberpanel/cyberpanel.sh; then
echo "✅ GPG check bypass options added"
else
echo "❌ GPG check bypass options not found"
fi
echo ""
# Test 7: Check if requirements fallback was added
echo "Test 7: Testing requirements fallback logic..."
if grep -q "requirments-old.txt" cyberpanel/install/venvsetup.sh; then
echo "✅ Requirements fallback logic added to venvsetup.sh"
else
echo "❌ Requirements fallback logic not found in venvsetup.sh"
fi
if grep -q "Fallback: Downloaded requirements from stable branch" cyberpanel/install/venvsetup.sh; then
echo "✅ Stable branch fallback added"
else
echo "❌ Stable branch fallback not found"
fi
echo ""
# Test 8: Check if branch validation was added
echo "Test 8: Testing branch validation..."
if grep -q "Verifying branch existence" cyberpanel/cyberpanel.sh; then
echo "✅ Branch existence verification added"
else
echo "❌ Branch existence verification not found"
fi
if grep -q "Verifying commit existence" cyberpanel/cyberpanel.sh; then
echo "✅ Commit existence verification added"
else
echo "❌ Commit existence verification not found"
fi
echo ""
echo "=== Test Summary ==="
echo "All tests completed. Review the results above."
echo ""
echo "Key fixes applied:"
echo "✅ Requirements file 404 error handling"
echo "✅ MariaDB version updated to 12.1"
echo "✅ GPG check failure resolution"
echo "✅ mysql.h header issues fixed"
echo "✅ Non-existent branch handling"
echo "✅ Enhanced error messages and validation"
echo ""
echo "The installer should now handle all the issues that were causing failures."