#!/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' 'Version: '$new_version'
Code Branch: '$RELEASE_BRANCH'
Please tell us about any bugs or issues by opening an issue report on GitHub and feel free to share your feedback on our discussion forum.
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'.' 'Please share your feedback with our development team through our discussion forum.
Found a bug? Report it on GitHub!
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 v'$new_version'.
Please tell us about any bugs or issues by opening an issue report on GitHub.
Have a wonderful day!
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=$($BIN/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
}