upgrade.sh 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. #!/bin/bash
  2. # Hestia Control Panel - Upgrade Control Script
  3. #####################################################################
  4. ####### Functions & Initialization #######
  5. #####################################################################
  6. upgrade_welcome_message() {
  7. echo
  8. echo ' _ _ _ _ ____ ____ '
  9. echo ' | | | | ___ ___| |_(_) __ _ / ___| _ \ '
  10. echo ' | |_| |/ _ \/ __| __| |/ _` | | | |_) | '
  11. echo ' | _ | __/\__ \ |_| | (_| | |___| __/ '
  12. echo ' |_| |_|\___||___/\__|_|\__,_|\____|_| '
  13. echo " "
  14. echo " Hestia Control Panel Software Update "
  15. echo " Version: $new_version "
  16. echo "========================================================================"
  17. echo
  18. echo "(!) IMPORTANT INFORMATION: "
  19. echo
  20. echo "Default configuration files and templates may be modified or replaced "
  21. echo "during the upgrade process. You may restore these files from: "
  22. echo ""
  23. echo "Backup directory: $HESTIA_BACKUP/ "
  24. echo
  25. echo "This process may take a few minutes, please wait... "
  26. echo
  27. echo "========================================================================"
  28. echo
  29. }
  30. upgrade_complete_message() {
  31. # Add notification to panel
  32. $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> or e-mail <a href="mailto:info@hestiacp.com?Subject="['$new_version'] Bug Report: ">info@hestiacp.com</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'
  33. # Echo message to console output
  34. echo
  35. echo "========================================================================"
  36. echo
  37. echo "Upgrade complete! If you encounter any issues or find a bug, "
  38. echo "please take a moment to report it to us on GitHub at the URL below: "
  39. echo "https://github.com/hestiacp/hestiacp/issues "
  40. echo
  41. echo "We hope that you enjoy using this version of Hestia Control Panel, "
  42. echo "have a wonderful day! "
  43. echo
  44. echo "Sincerely, "
  45. echo "The Hestia Control Panel development team "
  46. echo
  47. echo "Web: https://www.hestiacp.com/ "
  48. echo "Forum: https://forum.hestiacp.com/ "
  49. echo "GitHub: https://github.com/hestiacp/hestiacp/ "
  50. echo "E-mail: info@hestiacp.com "
  51. echo
  52. echo "Made with love & pride by the open-source community around the world. "
  53. echo
  54. echo
  55. }
  56. upgrade_init_backup() {
  57. # Ensure that backup directories are created
  58. mkdir -p $HESTIA_BACKUP/conf/
  59. mkdir -p $HESTIA_BACKUP/packages/
  60. mkdir -p $HESTIA_BACKUP/templates/
  61. }
  62. upgrade_refresh_config() {
  63. source /usr/local/hestia/conf/hestia.conf
  64. source /usr/local/hestia/func/main.sh
  65. }
  66. upgrade_start_routine() {
  67. #####################################################################
  68. ####### Ensure that release branch variable exists #######
  69. #####################################################################
  70. release_branch_check=$(cat $HESTIA/conf/hestia.conf | grep RELEASE_BRANCH)
  71. if [ -z "$release_branch_check" ]; then
  72. echo "(*) Adding global release branch variable to system configuration..."
  73. $BIN/v-change-sys-config-value 'RELEASE_BRANCH' 'release'
  74. fi
  75. #####################################################################
  76. ####### Start upgrade for pre-release builds #######
  77. ####### Ensures clean upgrade path from v1.0.1 onwards #######
  78. ####### DO NOT MODIFY THIS SECTION #######
  79. #####################################################################
  80. 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
  81. source $HESTIA/install/upgrade/versions/previous/0.9.8-29.sh
  82. source $HESTIA/install/upgrade/versions/previous/1.00.0-190618.sh
  83. source $HESTIA/install/upgrade/versions/previous/1.0.1.sh
  84. VERSION="1.0.1"
  85. upgrade_refresh_config
  86. fi
  87. #####################################################################
  88. ####### Start standard upgrade process #######
  89. ####### Place instructions for all post v1.0.1 builds below #######
  90. #####################################################################
  91. # Ensure that latest upgrade commands are processed if version is the same
  92. if [ $VERSION = "$new_version" ]; then
  93. echo "(!) The latest version of Hestia Control Panel is already installed."
  94. echo " Verifying configuration..."
  95. echo ""
  96. source $HESTIA/install/upgrade/versions/latest.sh
  97. VERSION="$new_version"
  98. upgrade_refresh_config
  99. fi
  100. # Upgrade to Version 1.0.2
  101. if [ $VERSION = "1.0.1" ]; then
  102. source $HESTIA/install/upgrade/versions/previous/1.0.2.sh
  103. VERSION="1.0.2"
  104. upgrade_refresh_config
  105. fi
  106. # Upgrade to Version 1.0.3
  107. if [ $VERSION = "1.0.2" ]; then
  108. source $HESTIA/install/upgrade/versions/previous/1.0.3.sh
  109. VERSION="1.0.3"
  110. upgrade_refresh_config
  111. fi
  112. # Upgrade to Version 1.1.0
  113. if [ $VERSION = "1.0.3" ]; then
  114. source $HESTIA/install/upgrade/versions/latest.sh
  115. VERSION="$new_version"
  116. upgrade_refresh_config
  117. fi
  118. #####################################################################
  119. ####### End version-specific upgrade instruction sets #######
  120. #####################################################################
  121. }
  122. upgrade_phpmyadmin() {
  123. # Check if MariaDB/MySQL is installed on the server before attempting to install or upgrade phpMyAdmin
  124. if [ "$DB_SYSTEM" = "mysql" ]; then
  125. # Define version check function
  126. function version_ge(){ test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" -o ! -z "$1" -a "$1" = "$2"; }
  127. pma_release_file=$(ls /usr/share/phpmyadmin/RELEASE-DATE-* 2>/dev/null |tail -n 1)
  128. if version_ge "${pma_release_file##*-}" "$pma_v"; then
  129. echo "(!) phpMyAdmin v${pma_release_file##*-} is already installed, skipping update..."
  130. else
  131. # Display upgrade information
  132. echo "(*) Upgrading phpMyAdmin to version v$pma_v..."
  133. [ -d /usr/share/phpmyadmin ] || mkdir -p /usr/share/phpmyadmin
  134. # Download latest phpMyAdmin release
  135. wget --quiet https://files.phpmyadmin.net/phpMyAdmin/$pma_v/phpMyAdmin-$pma_v-all-languages.tar.gz
  136. # Unpack files
  137. tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
  138. # Delete file to prevent error
  139. rm -fr /usr/share/phpmyadmin/doc/html
  140. # Overwrite old files
  141. cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
  142. # Set config and log directory
  143. sed -i "s|define('CONFIG_DIR', '');|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
  144. sed -i "s|define('TEMP_DIR', './tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
  145. # Create temporary folder and change permissions
  146. if [ ! -d /usr/share/phpmyadmin/tmp ]; then
  147. mkdir /usr/share/phpmyadmin/tmp
  148. chmod 777 /usr/share/phpmyadmin/tmp
  149. fi
  150. # Clean up source files
  151. rm -fr phpMyAdmin-$pma_v-all-languages
  152. rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
  153. fi
  154. fi
  155. }
  156. upgrade_get_version() {
  157. # Retrieve new version number for Hestia Control Panel from .deb package
  158. new_version=$(dpkg -l | awk '$2=="hestia" { print $3 }')
  159. }
  160. upgrade_set_version() {
  161. # Set new version number in hestia.conf
  162. sed -i "/VERSION/d" $HESTIA/conf/hestia.conf
  163. echo "VERSION='$new_version'" >> $HESTIA/conf/hestia.conf
  164. }
  165. upgrade_rebuild_users() {
  166. for user in `ls /usr/local/hestia/data/users/`; do
  167. echo "(*) Rebuilding domains and account for user: $user..."
  168. if [ ! -z "$WEB_SYSTEM" ]; then
  169. $BIN/v-rebuild-web-domains $user >/dev/null 2>&1
  170. fi
  171. if [ ! -z "$DNS_SYSTEM" ]; then
  172. $BIN/v-rebuild-dns-domains $user >/dev/null 2>&1
  173. fi
  174. if [ ! -z "$MAIL_SYSTEM" ]; then
  175. $BIN/v-rebuild-mail-domains $user >/dev/null 2>&1
  176. fi
  177. done
  178. }
  179. upgrade_restart_services() {
  180. echo "(*) Restarting services..."
  181. sleep 3
  182. if [ ! -z "$MAIL_SYSTEM" ]; then
  183. $BIN/v-restart-mail $restart
  184. fi
  185. if [ ! -z "$WEB_SYSTEM" ]; then
  186. $BIN/v-restart-web $restart
  187. $BIN/v-restart-proxy $restart
  188. fi
  189. if [ ! -z "$DNS_SYSTEM" ]; then
  190. $BIN/v-restart-dns $restart
  191. fi
  192. for v in `ls /etc/php/`; do
  193. if [ -e /etc/php/$v/fpm ]; then
  194. $BIN/v-restart-service php$v-fpm $restart
  195. fi
  196. done
  197. if [ ! -z "$FTP_SYSTEM" ]; then
  198. $BIN/v-restart-ftp $restart
  199. fi
  200. if [ ! -z "$FIREWALL_EXTENSION" ]; then
  201. $BIN/v-restart-service $FIREWALL_EXTENSION yes
  202. fi
  203. # Restart SSH daemon and Hestia Control Panel service
  204. $BIN/v-restart-service ssh $restart
  205. $BIN/v-restart-service hestia $restart
  206. }