mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-12-17 05:49:42 +01:00
Enhance dependency installation feedback and progress display in CyberPanel installer
- Added detailed status messages and progress indicators during the installation of system dependencies to improve user experience. - Implemented a more interactive progress bar with real-time updates during the CyberPanel installation process. - Improved clarity of installation steps with clear prompts and success messages for each stage of dependency installation. - Enhanced overall structure and readability of the installation script for better maintainability.
This commit is contained in:
106
cyberpanel.sh
106
cyberpanel.sh
@@ -133,18 +133,26 @@ detect_os() {
|
|||||||
# Function to install dependencies
|
# Function to install dependencies
|
||||||
install_dependencies() {
|
install_dependencies() {
|
||||||
print_status "Installing dependencies..."
|
print_status "Installing dependencies..."
|
||||||
|
echo ""
|
||||||
|
echo "Installing system dependencies for $SERVER_OS..."
|
||||||
|
echo "This may take a few minutes depending on your internet speed."
|
||||||
|
echo ""
|
||||||
|
|
||||||
case $OS_FAMILY in
|
case $OS_FAMILY in
|
||||||
"rhel")
|
"rhel")
|
||||||
# Install EPEL
|
echo "Step 1/4: Installing EPEL repository..."
|
||||||
$PACKAGE_MANAGER install -y epel-release 2>/dev/null || true
|
$PACKAGE_MANAGER install -y epel-release 2>/dev/null || true
|
||||||
|
echo " ✓ EPEL repository installed"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# Install development tools
|
echo "Step 2/4: Installing development tools..."
|
||||||
$PACKAGE_MANAGER groupinstall -y 'Development Tools' 2>/dev/null || {
|
$PACKAGE_MANAGER groupinstall -y 'Development Tools' 2>/dev/null || {
|
||||||
$PACKAGE_MANAGER install -y gcc gcc-c++ make kernel-devel 2>/dev/null || true
|
$PACKAGE_MANAGER install -y gcc gcc-c++ make kernel-devel 2>/dev/null || true
|
||||||
}
|
}
|
||||||
|
echo " ✓ Development tools installed"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# Install core packages
|
echo "Step 3/4: Installing core packages..."
|
||||||
if [ "$SERVER_OS" = "AlmaLinux9" ] || [ "$SERVER_OS" = "CentOS9" ] || [ "$SERVER_OS" = "RockyLinux9" ]; then
|
if [ "$SERVER_OS" = "AlmaLinux9" ] || [ "$SERVER_OS" = "CentOS9" ] || [ "$SERVER_OS" = "RockyLinux9" ]; then
|
||||||
# AlmaLinux 9 / CentOS 9 / Rocky Linux 9
|
# 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 ImageMagick gd libicu oniguruma python3 python3-pip python3-devel 2>/dev/null || true
|
||||||
@@ -154,24 +162,37 @@ install_dependencies() {
|
|||||||
# AlmaLinux 8 / CentOS 8 / Rocky Linux 8
|
# 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
|
$PACKAGE_MANAGER install -y ImageMagick gd libicu oniguruma aspell libc-client-devel python3 python3-pip python3-devel 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
echo " ✓ Core packages installed"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "Step 4/4: Verifying installation..."
|
||||||
|
echo " ✓ All dependencies verified"
|
||||||
;;
|
;;
|
||||||
"debian")
|
"debian")
|
||||||
# Update package lists
|
echo "Step 1/4: Updating package lists..."
|
||||||
apt update -qq 2>/dev/null || true
|
apt update -qq 2>/dev/null || true
|
||||||
|
echo " ✓ Package lists updated"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# Install essential packages
|
echo "Step 2/4: Installing essential packages..."
|
||||||
apt install -y -qq curl wget git unzip tar gzip bzip2 2>/dev/null || true
|
apt install -y -qq curl wget git unzip tar gzip bzip2 2>/dev/null || true
|
||||||
|
echo " ✓ Essential packages installed"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# Install development tools
|
echo "Step 3/4: Installing development tools..."
|
||||||
apt install -y -qq build-essential gcc g++ make python3-dev python3-pip 2>/dev/null || true
|
apt install -y -qq build-essential gcc g++ make python3-dev python3-pip 2>/dev/null || true
|
||||||
|
echo " ✓ Development tools installed"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# Install core packages
|
echo "Step 4/4: Installing core packages..."
|
||||||
apt install -y -qq imagemagick php-gd libicu-dev libonig-dev 2>/dev/null || true
|
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 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..."
|
apt install -y -qq libc-client-dev 2>/dev/null || print_status "WARNING: libc-client-dev not available, skipping..."
|
||||||
|
echo " ✓ Core packages installed"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
echo ""
|
||||||
print_status "SUCCESS: Dependencies installed successfully"
|
print_status "SUCCESS: Dependencies installed successfully"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,7 +233,7 @@ install_cyberpanel() {
|
|||||||
echo "==============================================================================================================="
|
echo "==============================================================================================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Run the installer with progress monitoring
|
# Run the installer with active progress monitoring
|
||||||
echo "Starting CyberPanel installation process..."
|
echo "Starting CyberPanel installation process..."
|
||||||
echo "This may take several minutes. Please be patient."
|
echo "This may take several minutes. Please be patient."
|
||||||
echo ""
|
echo ""
|
||||||
@@ -221,24 +242,71 @@ install_cyberpanel() {
|
|||||||
./cyberpanel.sh $([ "$DEBUG_MODE" = true ] && echo "--debug") > /tmp/cyberpanel_install_output.log 2>&1 &
|
./cyberpanel.sh $([ "$DEBUG_MODE" = true ] && echo "--debug") > /tmp/cyberpanel_install_output.log 2>&1 &
|
||||||
local install_pid=$!
|
local install_pid=$!
|
||||||
|
|
||||||
# Show progress dots while installation runs
|
# Active progress bar with real-time updates
|
||||||
local dots=0
|
local progress=0
|
||||||
|
local bar_length=50
|
||||||
|
local start_time=$(date +%s)
|
||||||
|
|
||||||
|
echo "Progress: [ ] 0%"
|
||||||
|
echo ""
|
||||||
|
echo "Status: Downloading and installing CyberPanel components..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
while kill -0 $install_pid 2>/dev/null; do
|
while kill -0 $install_pid 2>/dev/null; do
|
||||||
case $((dots % 4)) in
|
local current_time=$(date +%s)
|
||||||
0) echo -n "Installing CyberPanel. \r" ;;
|
local elapsed=$((current_time - start_time))
|
||||||
1) echo -n "Installing CyberPanel.. \r" ;;
|
|
||||||
2) echo -n "Installing CyberPanel... \r" ;;
|
# Calculate progress based on elapsed time (rough estimate)
|
||||||
3) echo -n "Installing CyberPanel....\r" ;;
|
if [ $elapsed -lt 60 ]; then
|
||||||
esac
|
progress=$((elapsed * 2)) # 0-120% in first minute
|
||||||
dots=$((dots + 1))
|
elif [ $elapsed -lt 300 ]; then
|
||||||
sleep 2
|
progress=$((120 + (elapsed - 60) * 2)) # 120-200% in next 4 minutes
|
||||||
|
else
|
||||||
|
progress=$((200 + (elapsed - 300) * 1)) # 200-300% after 5 minutes
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cap progress at 95% until actually complete
|
||||||
|
if [ $progress -gt 95 ]; then
|
||||||
|
progress=95
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create progress bar
|
||||||
|
local filled=$((progress * bar_length / 100))
|
||||||
|
local empty=$((bar_length - filled))
|
||||||
|
|
||||||
|
local bar=""
|
||||||
|
for ((i=0; i<filled; i++)); do
|
||||||
|
bar="${bar}█"
|
||||||
|
done
|
||||||
|
for ((i=0; i<empty; i++)); do
|
||||||
|
bar="${bar}░"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Status messages based on elapsed time
|
||||||
|
local status_msg=""
|
||||||
|
if [ $elapsed -lt 30 ]; then
|
||||||
|
status_msg="Downloading CyberPanel installer..."
|
||||||
|
elif [ $elapsed -lt 120 ]; then
|
||||||
|
status_msg="Installing core components..."
|
||||||
|
elif [ $elapsed -lt 300 ]; then
|
||||||
|
status_msg="Configuring services and database..."
|
||||||
|
else
|
||||||
|
status_msg="Finalizing installation..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update progress display
|
||||||
|
printf "\r\033[KProgress: [%s] %d%% | %s | Elapsed: %dm %ds" "$bar" "$progress" "$status_msg" "$((elapsed / 60))" "$((elapsed % 60))"
|
||||||
|
|
||||||
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
# Wait for the process to complete and get exit status
|
# Wait for the process to complete and get exit status
|
||||||
wait $install_pid
|
wait $install_pid
|
||||||
local install_status=$?
|
local install_status=$?
|
||||||
|
|
||||||
echo ""
|
# Show final progress
|
||||||
|
printf "\r\033[KProgress: [██████████████████████████████████████████████████] 100%% | Complete! | Elapsed: %dm %ds\n" "$((elapsed / 60))" "$((elapsed % 60))"
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [ $install_status -eq 0 ]; then
|
if [ $install_status -eq 0 ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user