#!/bin/bash # Hestia Control Panel - Upgrade Control Script ##################################################################### ####### Functions & Initialization ####### ##################################################################### upgrade_welcome_message() { echo echo ' _ _ _ _ ____ ____ ' echo ' | | | | ___ ___| |_(_) __ _ / ___| _ \ ' echo ' | |_| |/ _ \/ __| __| |/ _` | | | |_) | ' echo ' | _ | __/\__ \ |_| | (_| | |___| __/ ' echo ' |_| |_|\___||___/\__|_|\__,_|\____|_| ' echo " " echo " Hestia Control Panel Software Update " echo " Version: $new_version " echo "========================================================================" echo echo "(!) IMPORTANT INFORMATION: " echo echo "Default configuration files and templates may be modified or replaced " echo "during the upgrade process. You may restore these files from: " echo "" echo "Backup directory: $HESTIA_BACKUP/ " echo echo "This process may take a few minutes, please wait... " echo echo "========================================================================" echo } upgrade_complete_message() { # Add notification to panel $HESTIA/bin/v-add-user-notification admin 'Upgrade complete' 'Your server has been updated to Hestia Control Panel v'$new_version'.

Please tell us about any bugs or issues by opening an issue report on GitHub or e-mail info@hestiacp.com.

Have a wonderful day!

The Hestia Control Panel development team' # Echo message to console output echo echo "========================================================================" echo echo "Upgrade complete! If you encounter any issues or find a bug, " echo "please take a moment to report it to us on GitHub at the URL below: " echo "https://github.com/hestiacp/hestiacp/issues " echo echo "We hope that you enjoy using this version of Hestia Control Panel, " echo "have a wonderful day! " echo echo "Sincerely, " echo "The Hestia Control Panel development team " echo echo "Web: https://www.hestiacp.com/ " echo "Forum: https://forum.hestiacp.com/ " echo "GitHub: https://github.com/hestiacp/hestiacp/ " echo "E-mail: info@hestiacp.com " echo echo "Made with love & pride by the open-source community around the world. " echo echo } upgrade_init_backup() { # Ensure that backup directories are created mkdir -p $HESTIA_BACKUP/conf/ mkdir -p $HESTIA_BACKUP/packages/ mkdir -p $HESTIA_BACKUP/templates/ } upgrade_refresh_config() { source /usr/local/hestia/conf/hestia.conf source /usr/local/hestia/func/main.sh } upgrade_start_routine() { ##################################################################### ####### Ensure that release branch variable exists ####### ##################################################################### release_branch_check=$(cat $HESTIA/conf/hestia.conf | grep RELEASE_BRANCH) if [ -z "$release_branch_check" ]; then echo "(*) Adding global release branch variable to system configuration..." $BIN/v-change-sys-config-value 'RELEASE_BRANCH' 'release' fi ##################################################################### ####### Start upgrade for pre-release builds ####### ####### Ensures clean upgrade path from v1.0.1 onwards ####### ####### DO NOT MODIFY THIS SECTION ####### ##################################################################### if [ $VERSION = "0.9.8-25" ] || [ $VERSION = "0.9.8-26" ] || [ $VERSION = "0.9.8-27" ] || [ $VERSION = "0.9.8-28" ] || [ $VERSION = "0.9.8-29" ] || [ $VERSION = "0.10.0" ] || [ $VERSION = "1.00.0-190618" ] || [ $VERSION = "1.00.0-190621" ] || [ $VERSION = "1.0.0" ]; then source $HESTIA/install/upgrade/versions/previous/0.9.8-29.sh source $HESTIA/install/upgrade/versions/previous/1.00.0-190618.sh source $HESTIA/install/upgrade/versions/previous/1.0.1.sh VERSION="1.0.1" upgrade_refresh_config fi ##################################################################### ####### Start standard upgrade process ####### ####### Place instructions for all post v1.0.1 builds below ####### ##################################################################### # Ensure that latest upgrade commands are processed if version is the same if [ $VERSION = "$new_version" ]; then echo "(!) The latest version of Hestia Control Panel is already installed." echo " Verifying configuration..." echo "" source $HESTIA/install/upgrade/versions/latest.sh VERSION="$new_version" upgrade_refresh_config fi # Upgrade to Version 1.0.2 if [ $VERSION = "1.0.1" ]; then source $HESTIA/install/upgrade/versions/previous/1.0.2.sh VERSION="1.0.2" upgrade_refresh_config fi # Upgrade to Version 1.0.3 if [ $VERSION = "1.0.2" ]; then source $HESTIA/install/upgrade/versions/previous/1.0.3.sh VERSION="1.0.3" upgrade_refresh_config fi # Upgrade to Version 1.0.4 if [ $VERSION = "1.0.3" ]; then source $HESTIA/install/upgrade/versions/previous/1.0.4.sh VERSION="1.0.4" upgrade_refresh_config fi # Upgrade to Version 1.0.5 if [ $VERSION = "1.0.4" ]; then source $HESTIA/install/upgrade/versions/previous/1.0.5.sh VERSION="1.0.5" upgrade_refresh_config fi # Upgrade to Version 1.0.6 if [ $VERSION = "1.0.5" ]; then source $HESTIA/install/upgrade/versions/previous/1.0.6.sh VERSION="1.0.6" upgrade_refresh_config fi # Upgrade to Version 1.1.0 if [ $VERSION = "1.0.6" ]; then source $HESTIA/install/upgrade/versions/previous/1.1.0.sh VERSION="1.1.0" upgrade_refresh_config fi # Upgrade to Version 1.1.1 if [ $VERSION = "1.1.0" ]; then source $HESTIA/install/upgrade/versions/previous/1.1.1.sh VERSION="1.1.1" upgrade_refresh_config fi # Upgrade to Version 1.2.0 if [ $VERSION = "1.1.1" ] || [ $VERSION = "1.1.2" ]; then source $HESTIA/install/upgrade/versions/latest.sh VERSION="$new_version" upgrade_refresh_config fi ##################################################################### ####### End version-specific upgrade instruction sets ####### ##################################################################### } upgrade_phpmyadmin() { # Check if MariaDB/MySQL is installed on the server before attempting to install or upgrade phpMyAdmin if [ "$DB_SYSTEM" = "mysql" ]; then # Define version check function function version_ge(){ test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" -o ! -z "$1" -a "$1" = "$2"; } pma_release_file=$(ls /usr/share/phpmyadmin/RELEASE-DATE-* 2>/dev/null |tail -n 1) if version_ge "${pma_release_file##*-}" "$pma_v"; then echo "(!) phpMyAdmin v${pma_release_file##*-} is already installed, skipping update..." else # Display upgrade information echo "(*) Upgrading phpMyAdmin to version v$pma_v..." [ -d /usr/share/phpmyadmin ] || mkdir -p /usr/share/phpmyadmin # Download latest phpMyAdmin release wget --quiet https://files.phpmyadmin.net/phpMyAdmin/$pma_v/phpMyAdmin-$pma_v-all-languages.tar.gz # Unpack files tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz # Delete file to prevent error rm -fr /usr/share/phpmyadmin/doc/html # Overwrite old files cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin # Set config and log directory sed -i "s|define('CONFIG_DIR', ROOT_PATH);|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php sed -i "s|define('TEMP_DIR', ROOT_PATH . 'tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');|" /usr/share/phpmyadmin/libraries/vendor_config.php # Create temporary folder and change permissions if [ ! -d /usr/share/phpmyadmin/tmp ]; then mkdir /usr/share/phpmyadmin/tmp chmod 777 /usr/share/phpmyadmin/tmp fi # Clean up source files rm -fr phpMyAdmin-$pma_v-all-languages rm -f phpMyAdmin-$pma_v-all-languages.tar.gz fi fi } update_php_templates() { echo "(*) Updating default PHP templates..." # Update default template cp -f $HESTIA_INSTALL_DIR/templates/web/php-fpm/default.tpl \ $HESTIA/data/templates/web/php-fpm/default.tpl # Update no-php template cp -f $HESTIA_INSTALL_DIR/templates/web/php-fpm/no-php.tpl \ $HESTIA/data/templates/web/php-fpm/no-php.tpl # Update socket template cp -f $HESTIA_INSTALL_DIR/templates/web/php-fpm/socket.tpl \ $HESTIA/data/templates/web/php-fpm/socket.tpl for version in $($HESTIA/bin/v-list-sys-php plain); do echo "(*) Updating templates for PHP ${version}..." cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl \ $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl; done } upgrade_get_version() { # Retrieve new version number for Hestia Control Panel from .deb package new_version=$(dpkg -l | awk '$2=="hestia" { print $3 }') } upgrade_set_version() { # Set new version number in hestia.conf sed -i "/VERSION/d" $HESTIA/conf/hestia.conf echo "VERSION='$new_version'" >> $HESTIA/conf/hestia.conf } upgrade_rebuild_users() { for user in $($HESTIA/bin/v-list-sys-users plain); do echo "(*) Rebuilding domains and account for user: $user..." if [ ! -z "$WEB_SYSTEM" ]; then $BIN/v-rebuild-web-domains $user 'no' >/dev/null 2>&1 fi if [ ! -z "$DNS_SYSTEM" ]; then $BIN/v-rebuild-dns-domains $user 'no' >/dev/null 2>&1 fi if [ ! -z "$MAIL_SYSTEM" ]; then $BIN/v-rebuild-mail-domains $user 'no' >/dev/null 2>&1 fi done } upgrade_restart_services() { # Refresh user interface theme if [ "$THEME" ]; then if [ "$THEME" != "default" ]; then echo "(*) Applying user interface updates..." $BIN/v-change-sys-theme $THEME fi fi echo "(*) Restarting services..." sleep 5 if [ ! -z "$MAIL_SYSTEM" ]; then $BIN/v-restart-mail $restart fi if [ ! -z "$WEB_SYSTEM" ]; then $BIN/v-restart-web $restart $BIN/v-restart-proxy $restart fi if [ ! -z "$DNS_SYSTEM" ]; then $BIN/v-restart-dns $restart fi for v in `ls /etc/php/`; do if [ -e /etc/php/$v/fpm ]; then $BIN/v-restart-service php$v-fpm $restart fi done if [ ! -z "$FTP_SYSTEM" ]; then $BIN/v-restart-ftp $restart fi if [ ! -z "$FIREWALL_EXTENSION" ]; then $BIN/v-restart-service $FIREWALL_EXTENSION yes fi # Restart SSH daemon and Hestia Control Panel service $BIN/v-restart-service ssh $restart $BIN/v-restart-service hestia $restart }