| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767 |
- #!/bin/bash
- # Hestia Control Panel - Upgrade Control Script
- #####################################################################
- ####### Functions & Initialization #######
- #####################################################################
- is_debug_build() {
- if [[ "$new_version" =~ "alpha" ]] || [[ "$new_version" =~ "beta" ]]; then
- DEBUG_MODE="true"
- fi
- # Remove pre-release designation tags from display version
- DISPLAY_VER=$(echo $new_version | sed "s|~alpha||g" | sed "s|~beta||g")
- }
- upgrade_health_check() {
- echo "============================================================================="
- echo "[ ! ] Performing system health check before proceeding with installation... "
- # Perform basic health check against hestia.conf to ensure that
- # system variables exist and are set to expected defaults.
- if [ -z "$VERSION" ]; then
- export VERSION="1.1.0"
- $BIN/v-change-sys-config-value 'VERSION' "$VERSION"
- echo
- echo "[ ! ] Unable to detect installed version of Hestia Control Panel."
- echo " Setting default version to $VERSION and processing upgrade steps."
- echo
- fi
- # Release branch
- if [ -z "$RELEASE_BRANCH" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: RELEASE_BRANCH ('release')"
- $BIN/v-change-sys-config-value 'RELEASE_BRANCH' 'release'
- fi
- # Webmail alias
- if [ ! -z "$IMAP_SYSTEM" ]; then
- if [ -z "$WEBMAIL_ALIAS" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: WEBMAIL_ALIAS ('webmail')"
- $BIN/v-change-sys-config-value 'WEBMAIL_ALIAS' 'webmail'
- fi
- fi
- # phpMyAdmin/phpPgAdmin alias
- if [ ! -z "$DB_SYSTEM" ]; then
- if [ "$DB_SYSTEM" = "mysql" ]; then
- if [ -z "$DB_PMA_ALIAS" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: DB_PMA_ALIAS ('phpMyAdmin')"
- $BIN/v-change-sys-config-value 'DB_PMA_ALIAS' 'phpMyAdmin'
- fi
- fi
- if [ "$DB_SYSTEM" = "pgsql" ]; then
- if [ -z "$DB_PGA_ALIAS" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: DB_PGA_ALIAS ('phpPgAdmin')"
- $BIN/v-change-sys-config-value 'DB_PGA_ALIAS' 'phpPgAdmin'
- fi
- fi
- fi
- # Backup compression level
- if [ -z "$BACKUP_GZIP" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: BACKUP_GZIP ('9')"
- $BIN/v-change-sys-config-value 'BACKUP_GZIP' '9'
- fi
- # Theme
- if [ -z "$THEME" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: THEME ('default')"
- $BIN/v-change-sys-theme 'default'
- fi
- # Default language
- if [ -z "$LANGUAGE" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: LANGUAGE ('en')"
- $BIN/v-change-sys-language 'en'
- fi
- # Disk Quota
- if [ -z "$DISK_QUOTA" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: DISK_QUOTA ('no')"
- $BIN/v-change-sys-config-value 'DISK_QUOTA' 'no'
- fi
- # CRON daemon
- if [ -z "$CRON_SYSTEM" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: CRON_SYSTEM ('cron')"
- $BIN/v-change-sys-config-value 'CRON_SYSTEM' 'cron'
- fi
- # Backend port
- if [ -z "$BACKEND_PORT" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: BACKEND_PORT ('8083')"
- $BIN/v-change-sys-port '8083' >/dev/null 2>&1
- fi
- # Upgrade: Send email notification
- if [ -z "$UPGRADE_SEND_EMAIL" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: UPGRADE_SEND_EMAIL ('true')"
- $BIN/v-change-sys-config-value 'UPGRADE_SEND_EMAIL' 'true'
- fi
- # Upgrade: Send email notification
- if [ -z "$UPGRADE_SEND_EMAIL_LOG" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: UPGRADE_SEND_EMAIL_LOG ('false')"
- $BIN/v-change-sys-config-value 'UPGRADE_SEND_EMAIL_LOG' 'false'
- fi
- # File Manager
- if [ -z "$FILE_MANAGER" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: FILE_MANAGER ('true')"
- echo "[ ! ] File Manager is enabled but not installed, repairing components..."
- $BIN/v-add-sys-filemanager quiet
- fi
-
- # Support for ZSTD / GZIP Change
- if [ -z "$BACKUP_MODE" ]; then
- echo "[ ! ] Setting zstd backup compression type as default..."
- $BIN/v-change-sys-config-value "BACKUP_MODE" "zstd"
- fi
-
- # Login style switcher
- if [ -z "$LOGIN_STYLE" ]; then
- echo "[ ! ] Adding missing variable to hestia.conf: LOGIN_STYLE ('default')"
- $BIN/v-change-sys-config-value "LOGIN_STYLE" "default"
- fi
-
- echo "[ * ] Health check complete. Starting upgrade from $VERSION to $new_version..."
- echo "============================================================================="
- }
- upgrade_welcome_message() {
- echo
- echo ' _ _ _ _ ____ ____ '
- echo ' | | | | ___ ___| |_(_) __ _ / ___| _ \ '
- echo ' | |_| |/ _ \/ __| __| |/ _` | | | |_) | '
- echo ' | _ | __/\__ \ |_| | (_| | |___| __/ '
- echo ' |_| |_|\___||___/\__|_|\__,_|\____|_| '
- echo " "
- echo " Hestia Control Panel Software Update "
- echo " Version: ${DISPLAY_VER} "
- if [[ "$new_version" =~ "beta" ]]; then
- echo " BETA RELEASE "
- fi
- if [[ "$new_version" =~ "alpha" ]]; then
- echo " DEVELOPMENT SNAPSHOT "
- echo " NOT INTENDED FOR PRODUCTION USE "
- echo " USE AT YOUR OWN RISK "
- fi
- echo
- 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 "Installation log: $LOG "
- }
- upgrade_welcome_message_log() {
- echo "=============================================================================="
- echo "Hestia Control Panel Software Update Log"
- echo "=============================================================================="
- echo
- echo "OPERATING SYSTEM: $OS_TYPE ($OS_VERSION)"
- echo "CURRENT VERSION: $VERSION"
- echo "NEW VERSION: $new_version"
- echo "RELEASE BRANCH: $RELEASE_BRANCH"
- if [[ "$new_version" =~ "alpha" ]]; then
- echo "BUILD TYPE: Development snapshot"
- elif [[ "$new_version" =~ "beta" ]]; then
- echo "BUILD TYPE: Beta release"
- else
- echo "BUILD TYPE: Production release"
- fi
- echo
- echo "INSTALLER OPTIONS:"
- echo "============================================================================="
- echo "Send email notification on upgrade complete: $UPGRADE_SEND_EMAIL"
- echo "Send installed log output to admin email: $UPGRADE_SEND_EMAIL_LOG"
- echo
- }
- upgrade_step_message() {
- echo
- echo "[ - ] Now applying any necessary patches from version v$version_step..."
- }
- upgrade_complete_message() {
- # Echo message to console output
- 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 "Discord: https://discord.gg/nXRUZch "
- echo "GitHub: https://github.com/hestiacp/hestiacp/ "
- echo "E-mail: info@hestiacp.com "
- echo
- echo "Help support the Hestia Contol Panel project by donating via PayPal: "
- echo "https://www.hestiacp.com/donate "
- echo
- echo "Made with love & pride by the open-source community around the world. "
- echo
- echo "============================================================================="
- echo
- }
- upgrade_complete_message_log() {
- echo
- echo "============================================================================="
- echo "UPGRADE COMPLETE. "
- echo "Please report any issues on GitHub: "
- echo "https://github.com/hestiacp/hestiacp/issues "
- echo "============================================================================="
- echo
- }
- upgrade_cleanup_message() {
- echo "============================================================================="
- echo "Installation tasks complete, performing clean-up... "
- echo "============================================================================="
- }
- 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='$@'" >> $HESTIA/conf/hestia.conf
- }
- upgrade_send_notification_to_panel () {
- # Add notification to panel if variable is set to true or is not set
- if [[ "$new_version" =~ "alpha" ]]; then
- # Send notifications for development releases
- $HESTIA/bin/v-add-user-notification admin 'Development snapshot installed' '<b>Version:</b> '$new_version'<br><b>Code Branch:</b> '$RELEASE_BRANCH'<br><br>Please tell us about any bugs or issues by opening an issue report on <a href="https://github.com/hestiacp/hestiacp/issues" target="_new"><i class="fab fa-github"></i> GitHub</a> and feel free to share your feedback on our <a href="https://forum.hestiacp.com" target="_new">discussion forum</a>.<br><br><i class="fas fa-heart status-icon red"></i> The Hestia Control Panel development team'
- elif [[ "$new_version" =~ "beta" ]]; then
- # Send feedback notification for beta releases
- $HESTIA/bin/v-add-user-notification admin 'Thank you for testing Hestia Control Panel '$new_version'.' '<b>Please share your feedback with our development team through our <a href="https://forum.hestiacp.com" target="_new">discussion forum</a>.<br><br>Found a bug? Report it on <a href="https://github.com/hestiacp/hestiacp/issues" target="_new"><i class="fab fa-github"></i> GitHub</a>!</b><br><br><i class="fas fa-heart status-icon red"></i> The Hestia Control Panel development team'
- else
- # Send normal upgrade complete notification for stable releases
- $HESTIA/bin/v-add-user-notification admin 'Upgrade complete' 'Your server has been updated to Hestia Control Panel <b>v'$new_version'</b>.<br><br>Please tell us about any bugs or issues by opening an issue report on <a href="https://github.com/hestiacp/hestiacp/issues" target="_new"><i class="fab fa-github"></i> GitHub</a>.<br><br><b>Have a wonderful day!</b><br><br><i class="fas fa-heart status-icon red"></i> The Hestia Control Panel development team'
- fi
- }
- upgrade_send_notification_to_email () {
- if [ "$UPGRADE_SEND_EMAIL" = "true" ]; then
- # Retrieve admin email address, sendmail path, and message temp file path
- admin_email=$($HESTIA/bin/v-list-user admin json | grep "CONTACT" | cut -d'"' -f4)
- send_mail="$HESTIA/web/inc/mail-wrapper.php"
- message_tmp_file="/tmp/hestia-upgrade-complete.txt"
- # Create temporary file
- touch $message_tmp_file
- # Write message to file
- echo "$HOSTNAME has been upgraded from Hestia Control Panel v$VERSION to v${new_version}." >> $message_tmp_file
- echo "Installation log: $LOG" >> $message_tmp_file
- echo "" >> $message_tmp_file
- echo "What's new: https://github.com/hestiacp/hestiacp/blob/$RELEASE_BRANCH/CHANGELOG.md" >> $message_tmp_file
- echo >> $message_tmp_file
- echo "What to do if you run into issues:" >> $message_tmp_file
- echo "- Check our forums for possible solutions: https://forum.hestiacp.com" >> $message_tmp_file
- echo "- File an issue report on GitHub: https://github.com/hestiacp/hestiacp/issues" >> $message_tmp_file
- echo "" >> $message_tmp_file
- echo "===================================================" >> $message_tmp_file
- echo "Have a wonderful day," >> $message_tmp_file
- echo "The Hestia Control Panel development team" >> $message_tmp_file
-
- # Read back message from file and pass through to sendmail
- cat $message_tmp_file | $send_mail -s "Update Installed - v${new_version}" $admin_email
- rm -f $message_tmp_file
- fi
- }
- upgrade_send_log_to_email() {
- if [ "$UPGRADE_SEND_EMAIL_LOG" = "true" ]; then
- admin_email=$(v-list-user admin json | grep "CONTACT" | cut -d'"' -f4)
- send_mail="$HESTIA/web/inc/mail-wrapper.php"
- cat $LOG | $send_mail -s "Update Installation Log - v${new_version}" $admin_email
- fi
- }
- upgrade_init_backup() {
- # Ensure that backup directories are created
- # Hestia Control Panel configuration files
- mkdir -p $HESTIA_BACKUP/conf/hestia/
- # System services (apache2, nginx, bind9, vsftpd, etc).
- if [ ! -z "$WEB_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$WEB_SYSTEM/
- fi
- if [ ! -z "$IMAP_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$IMAP_SYSTEM/
- fi
- if [ ! -z "$MAIL_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$MAIL_SYSTEM/
- fi
- if [ ! -z "$DNS_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$DNS_SYSTEM/
- fi
- if [ ! -z "$PROXY_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$PROXY_SYSTEM/
- fi
- if [ ! -z "$DB_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$DB_SYSTEM/
- fi
- if [ ! -z "$FTP_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$FTP_SYSTEM/
- fi
- if [ ! -z "$FIREWALL_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$FIREWALL_SYSTEM/
- fi
- if [ ! -z "$FIREWALL_EXTENSION" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$FIREWALL_EXTENSION/
- fi
- if [ -e "/etc/ssh/sshd_config" ]; then
- mkdir -p $HESTIA_BACKUP/conf/ssh/
- fi
- # Hosting Packages
- mkdir -p $HESTIA_BACKUP/packages/
- # Domain template files
- mkdir -p $HESTIA_BACKUP/templates/
- # System services (apache2, nginx, bind9, vsftpd, etc).
- if [ ! -z "$WEB_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$WEB_SYSTEM/
- fi
- if [ ! -z "$IMAP_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$IMAP_SYSTEM/
- fi
- if [ ! -z "$MAIL_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$MAIL_SYSTEM/
- fi
- if [ ! -z "$DNS_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$DNS_SYSTEM/
- fi
- if [ ! -z "$PROXY_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$PROXY_SYSTEM/
- fi
- if [ ! -z "$DB_SYSTEM" ]; then
- if [[ "$DB_SYSTEM" =~ "mysql" ]]; then
- mkdir -p $HESTIA_BACKUP/conf/mysql/
- fi
- if [[ "$DB_SYSTEM" =~ "pgsql" ]]; then
- mkdir -p $HESTIA_BACKUP/conf/pgsql/
- fi
- fi
- if [ ! -z "$FTP_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$FTP_SYSTEM/
- fi
- if [ ! -z "$FIREWALL_SYSTEM" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$FIREWALL_SYSTEM/
- fi
- if [ ! -z "$FIREWALL_EXTENSION" ]; then
- mkdir -p $HESTIA_BACKUP/conf/$FIREWALL_EXTENSION/
- fi
- if [ -e "/etc/ssh/sshd_config" ]; then
- mkdir -p $HESTIA_BACKUP/conf/ssh/
- fi
- }
- upgrade_init_logging() {
- # Set log file path
- LOG="$HESTIA_BACKUP/hst-upgrade-$(date +%d%m%Y%H%M).log"
- # Create log file
- touch $LOG
- }
- upgrade_start_backup() {
- echo "[ * ] Backing up existing templates and configuration files..."
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - Packages"
- fi
- cp -rf $HESTIA/data/packages/* $HESTIA_BACKUP/packages/
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - Templates"
- fi
- cp -rf $HESTIA/data/templates/* $HESTIA_BACKUP/templates/
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - Configuration files:"
- fi
- # Hestia Control Panel configuration files
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- hestia"
- fi
- cp -rf $HESTIA/conf/* $HESTIA_BACKUP/conf/hestia/
- # System service configuration files (apache2, nginx, bind9, vsftpd, etc).
- if [ ! -z "$WEB_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- $WEB_SYSTEM"
- fi
- cp -f /etc/$WEB_SYSTEM/*.conf $HESTIA_BACKUP/conf/$WEB_SYSTEM/
- cp -f /etc/$WEB_SYSTEM/conf.d/*.conf $HESTIA_BACKUP/conf/$WEB_SYSTEM/
- fi
- if [ ! -z "$PROXY_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- $PROXY_SYSTEM"
- fi
- cp -f /etc/$PROXY_SYSTEM/*.conf $HESTIA_BACKUP/conf/$PROXY_SYSTEM/
- cp -f /etc/$PROXY_SYSTEM/conf.d/*.conf $HESTIA_BACKUP/conf/$PROXY_SYSTEM/
- cp -f /etc/$PROXY_SYSTEM/conf.d/*.inc $HESTIA_BACKUP/conf/$PROXY_SYSTEM/
- fi
- if [ ! -z "$IMAP_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- $IMAP_SYSTEM"
- fi
- cp -f /etc/$IMAP_SYSTEM/*.conf $HESTIA_BACKUP/conf/$IMAP_SYSTEM/
- cp -f /etc/$IMAP_SYSTEM/conf.d/*.conf $HESTIA_BACKUP/conf/$IMAP_SYSTEM/
- fi
- if [ ! -z "$MAIL_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- $MAIL_SYSTEM"
- fi
- cp -f /etc/$MAIL_SYSTEM/*.conf $HESTIA_BACKUP/conf/$MAIL_SYSTEM/
- fi
- if [ ! -z "$DNS_SYSTEM" ]; then
- if [ "$DNS_SYSTEM" = "bind9" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- $DNS_SYSTEM"
- fi
- cp -f /etc/bind/*.conf $HESTIA_BACKUP/conf/$DNS_SYSTEM/
- fi
- fi
- if [ ! -z "$DB_SYSTEM" ]; then
- if [[ "$DB_SYSTEM" =~ "mysql" ]]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- mysql"
- fi
- cp -f /etc/mysql/*.cnf $HESTIA_BACKUP/conf/mysql/
- cp -f /etc/mysql/conf.d/*.cnf $HESTIA_BACKUP/conf/mysql/ > /dev/null 2>&1
- cp -f /etc/mysql/mariadb.conf.d/*.cnf $HESTIA_BACKUP/conf/mysql/ > /dev/null 2>&1
- fi
- if [[ "$DB_SYSTEM" =~ "pgsql" ]]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- pgsql"
- fi
- cp -f /etc/mysql/*.cnf $HESTIA_BACKUP/conf/pgsql/
- cp -f /etc/mysql/conf.d/*.cnf $HESTIA_BACKUP/conf/pgsql/
- fi
- fi
- if [ ! -z "$FTP_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- $FTP_SYSTEM"
- fi
- if [ "$FTP_SYSTEM" = "vsftpd" ]; then
- cp -f /etc/$FTP_SYSTEM.conf $HESTIA_BACKUP/conf/$FTP_SYSTEM/
- fi
- if [ "$FTP_SYSTEM" = "proftpd" ]; then
- cp -f /etc/proftpd/proftpd.conf $HESTIA_BACKUP/conf/$FTP_SYSTEM/
- fi
- fi
- if [ ! -z "$FIREWALL_EXTENSION" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- $FIREWALL_EXTENSION"
- fi
- cp -f /etc/$FIREWALL_EXTENSION/*.conf $HESTIA_BACKUP/conf/$FIREWALL_EXTENSION/
- cp -f /etc/$FIREWALL_EXTENSION/*.local $HESTIA_BACKUP/conf/$FIREWALL_EXTENSION/
- fi
- if [ -e "/etc/ssh/sshd_config" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- sshd"
- fi
- cp -f /etc/ssh/sshd_config $HESTIA_BACKUP/conf/ssh/sshd_config
- fi
- }
- upgrade_refresh_config() {
- source /usr/local/hestia/conf/hestia.conf
- source /usr/local/hestia/func/main.sh
- }
- upgrade_start_routine() {
- # Parse version numbers for comparison
- function check_version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
- # Remove pre-release designation from version number for upgrade scripts
- VERSION=$(echo $VERSION | sed "s|~alpha||g" | sed "s|~beta||g")
- # Get list of all available version steps and create array
- upgrade_steps=$(ls $HESTIA/install/upgrade/versions/*.sh)
- for script in $upgrade_steps; do
- declare -a available_versions
- available_versions+=($(echo $script | sed "s|/usr/local/hestia/install/upgrade/versions/||g" | sed "s|.sh||g"))
- done
- # Define variables for accessing supported versions
- all_versions=$(printf "%s\n" ${available_versions[@]})
- oldest_version=$(printf "%s\n" ${available_versions[@]} | sort -r | tail -n1)
- latest_version=$(printf "%s\n" ${available_versions[@]} | tail -n1)
- # Check for supported versions and process necessary upgrade steps
- if [ $(check_version $latest_version) -gt $(check_version $VERSION) ]; then
- for version_step in "${available_versions[@]}"
- do
- if [ $(check_version $VERSION) -lt $(check_version "$version_step") ]; then
- upgrade_step_message
- source $HESTIA/install/upgrade/versions/$version_step.sh
- fi
- done
- upgrade_set_version $VERSION
- upgrade_refresh_config
- else
- echo ""
- echo "[ ! ] The latest version of Hestia Control Panel is already installed."
- echo " Verifying configuration..."
- echo ""
- if [ -e "$HESTIA/install/upgrade/versions/$VERSION.sh" ]; then
- source $HESTIA/install/upgrade/versions/$VERSION.sh
- fi
- VERSION="$new_version"
- upgrade_set_version $VERSION
- upgrade_refresh_config
- fi
- #####################################################################
- ####### End version-specific upgrade instruction sets #######
- #####################################################################
- }
- upgrade_phpmyadmin() {
- if [ "$UPGRADE_UPDATE_PHPMYADMIN" = "true" ]; then
- # 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 "[ ! ] Verifying phpMyAdmin v${pma_release_file##*-} installation..."
- # Update permissions
- if [ -e /var/lib/phpmyadmin/blowfish_secret.inc.php ]; then
- chmod 0644 /var/lib/phpmyadmin/blowfish_secret.inc.php
- fi
- 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
- if [ -e /var/lib/phpmyadmin/blowfish_secret.inc.php ]; then
- chmod 0644 /var/lib/phpmyadmin/blowfish_secret.inc.php
- fi
- # Clean up source files
- rm -fr phpMyAdmin-$pma_v-all-languages
- rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
- fi
- fi
- fi
- }
- upgrade_filemanager() {
- if [ "$UPGRADE_UPDATE_FILEMANAGER" = "true" ]; then
- FILE_MANAGER_CHECK=$(cat $HESTIA/conf/hestia.conf | grep "FILE_MANAGER='false'")
- if [ -z "$FILE_MANAGER_CHECK" ]; then
- echo "[ * ] Updating File Manager..."
- # Reinstall the File Manager
- $HESTIA/bin/v-delete-sys-filemanager quiet
- $HESTIA/bin/v-add-sys-filemanager quiet
- fi
- fi
- }
- upgrade_filemanager_update_config() {
- if [ "$UPGRADE_UPDATE_FILEMANAGER_CONFIG" = "true" ]; then
- FILE_MANAGER_CHECK=$(cat $HESTIA/conf/hestia.conf | grep "FILE_MANAGER='false'")
- if [ -z "$FILE_MANAGER_CHECK" ]; then
- if [ -e "$HESTIA/web/fm/configuration.php" ]; then
- echo "[ * ] Updating File Manager configuration..."
- # Update configuration.php
- cp -f $HESTIA_INSTALL_DIR/filemanager/filegator/configuration.php $HESTIA/web/fm/configuration.php
- # Set environment variable for interface
- $HESTIA/bin/v-change-sys-config-value 'FILE_MANAGER' 'true'
- fi
- fi
- fi
- }
- upgrade_rebuild_web_templates() {
- if [ "$UPGRADE_UPDATE_WEB_TEMPLATES" = "true" ]; then
- echo "[ ! ] Updating default web domain templates..."
- $BIN/v-update-web-templates "no" "skip"
- fi
- }
- upgrade_rebuild_mail_templates() {
- if [ "$UPGRADE_UPDATE_MAIL_TEMPLATES" = "true" ]; then
- echo "[ ! ] Updating default mail domain templates..."
- $BIN/v-update-mail-templates "no" "skip"
- fi
- }
- upgrade_rebuild_dns_templates() {
- if [ "$UPGRADE_UPDATE_DNS_TEMPLATES" = "true" ]; then
- echo "[ ! ] Updating default DNS zone templates..."
- $BIN/v-update-dns-templates
- fi
- }
- upgrade_rebuild_users() {
- if [ "$UPGRADE_REBUILD_USERS" = "true" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo "[ * ] Rebuilding user accounts and domains:"
- else
- echo "[ * ] Rebuilding user accounts and domains, this may take a few minutes..."
- fi
- for user in $($HESTIA/bin/v-list-sys-users plain); do
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - $user:"
- else
- echo " - $user..."
- fi
- if [ ! -z "$WEB_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- Web domains..."
- $BIN/v-rebuild-web-domains $user 'no'
- else
- $BIN/v-rebuild-web-domains $user 'no' >/dev/null 2>&1
- fi
- fi
- if [ ! -z "$DNS_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- DNS zones..."
- $BIN/v-rebuild-dns-domains $user 'no'
- else
- $BIN/v-rebuild-dns-domains $user 'no' >/dev/null 2>&1
- fi
- fi
- if [ ! -z "$MAIL_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- Mail domains..."
- $BIN/v-rebuild-mail-domains $user 'no'
- else
- $BIN/v-rebuild-mail-domains $user 'no' >/dev/null 2>&1
- fi
- fi
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " ---- User configuration..."
- $BIN/v-rebuild-user $user 'no'
- else
- $BIN/v-rebuild-user $user 'no' >/dev/null 2>&1
- fi
- done
- fi
- }
- 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
- if [ "$UPGRADE_RESTART_SERVICES" = "true" ]; then
- echo "[ * ] Restarting services..."
- sleep 2
- if [ ! -z "$MAIL_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - $MAIL_SYSTEM"
- fi
- $BIN/v-restart-mail $restart
- fi
- if [ ! -z "$WEB_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - $WEB_SYSTEM"
- fi
- $BIN/v-restart-web $restart
- fi
- if [ ! -z "$PROXY_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - $PROXY_SYSTEM"
- fi
- $BIN/v-restart-proxy $restart
- fi
- if [ ! -z "$DNS_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - $DNS_SYSTEM"
- fi
- $BIN/v-restart-dns $restart
- fi
- for v in `ls /etc/php/`; do
- if [ -e /etc/php/$v/fpm ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - php$v-fpm"
- fi
- $BIN/v-restart-service php$v-fpm $restart
- fi
- done
- if [ ! -z "$FTP_SYSTEM" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - $FTP_SYSTEM"
- fi
- $BIN/v-restart-ftp $restart
- fi
- if [ ! -z "$FIREWALL_EXTENSION" ]; then
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - $FIREWALL_EXTENSION"
- fi
- $BIN/v-restart-service $FIREWALL_EXTENSION yes
- fi
- # Restart SSH daemon service
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - sshd"
- fi
- $BIN/v-restart-service ssh $restart
- fi
- # Always restart the Hestia Control Panel service
- if [ "$DEBUG_MODE" = "true" ]; then
- echo " - hestia"
- fi
- $BIN/v-restart-service hestia $restart
- }
- upgrade_perform_cleanup() {
- # Remove upgrade configuration file as it's not needed
- rm -f $HESTIA_INSTALL_DIR/upgrade/upgrade.conf
- }
|