Browse Source

Merge pull request #379 from Lupul/Hotfix-0621

Improve web template updating when multiphp is enabled
Fix minor bug when rewriting nginx resolver
Check phpmyadmin version before installing
Kristan Kenney 6 years ago
parent
commit
42cb35c402
3 changed files with 65 additions and 34 deletions
  1. 29 12
      bin/v-update-web-templates
  2. 28 19
      install/upgrade/0.9.8-28.sh
  3. 8 3
      install/upgrade/1.00.0-190618.sh

+ 29 - 12
bin/v-update-web-templates

@@ -32,36 +32,53 @@ else
     exit $E_NOTEXIST
 fi
 
+if [ -z "$WEB_SYSTEM" ]; then
+    echo "Error: Missing Web System"
+    log_event "$E_ARGS"
+    exit $E_ARGS
+fi
+
+HST_WEBTEMPLATES="$HESTIA/data/templates/web"
 
 #----------------------------------------------------------#
 #                       Action                             #
 #----------------------------------------------------------#
 
 # Update templates
-if [ -d $HESTIA/data/templates/web ]; then
-    rm -rf $HESTIA/data/templates/web/skel 2>/dev/null  
-    rm -rf $HESTIA/data/templates/web/suspend 2>/dev/null
-    rm -rf $HESTIA/data/templates/web/unassigned 2>/dev/null
+if [ -d "${HST_WEBTEMPLATES}" ]; then
+    rm -rf "${HST_WEBTEMPLATES}/skel" 2>/dev/null
+    rm -rf "${HST_WEBTEMPLATES}/suspend" 2>/dev/null
+    rm -rf "${HST_WEBTEMPLATES}/unassigned" 2>/dev/null
 fi
 
-cp -rf $HESTIA/install/$type/templates/web $HESTIA/data/templates/
+for webtpl_folder in $(ls $HESTIA/install/$type/templates/web/* -d 2>/dev/null | egrep -v '/(nginx)$' ); do
+    cp -rf "${webtpl_folder}" "${HST_WEBTEMPLATES}/"
+done
+
+[ -d "${HST_WEBTEMPLATES}/nginx" ] || mkdir -p "${HST_WEBTEMPLATES}/nginx"
 
 # Update Multi-PHP templates
 php_versions=$(ls /etc/php/*/fpm -d 2>/dev/null | wc -l)
 if [ "$php_versions" -gt 1 ]; then
-    if [ "$WEB_SYSTEM" = "nginx" ]; then
-        for tplname in $(ls $HESTIA/data/templates/web/$WEB_SYSTEM/ | grep -E 'PHP-[0-9][0-9]' ); do
-            rm -fr $HESTIA/data/templates/web/$WEB_SYSTEM/$tplname
-        done
-    fi
     for v in $(ls /etc/php/); do
         if [ ! -d "/etc/php/$v/fpm/pool.d/" ]; then
             continue
         fi
         v_tpl=$(echo "$v" | sed -e 's/[.]//')
-        cp -f $HESTIA/install/$type/multiphp/$WEB_SYSTEM/PHP-$v_tpl.* $HESTIA/data/templates/web/$WEB_SYSTEM/
+        cp -f "$HESTIA/install/$type/multiphp/${WEB_SYSTEM}/PHP-${v_tpl}".* "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/"
     done
-    chmod a+x $HESTIA/data/templates/web/$WEB_SYSTEM/*.sh
+    chmod a+x "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/"*.sh 2> /dev/null
+
+    # Create default TPL symlink when missing and point to the last php version found
+    if [ ! -z $v_tpl ] && [ "$WEB_SYSTEM" = "nginx" ]; then
+        [ -e "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/default.sh"   ] || ln -s "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/PHP-${v_tpl}.sh" "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/default.sh"
+        [ -e "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/default.tpl"  ] || ln -s "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/PHP-${v_tpl}.tpl" "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/default.tpl"
+        [ -e "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/default.stpl" ] || ln -s "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/PHP-${v_tpl}.stpl" "${HST_WEBTEMPLATES}/${WEB_SYSTEM}/default.stpl"
+    fi
+fi
+
+if [ "$PROXY_SYSTEM" = 'nginx' ] || [ "$php_versions" -le 1 ]; then
+    cp -rf "${HESTIA}/install/${type}/templates/web/nginx" "${HST_WEBTEMPLATES}/"
 fi
 
 # Rebuilding web domains

+ 28 - 19
install/upgrade/0.9.8-28.sh

@@ -3,6 +3,8 @@ HESTIA="/usr/local/hestia"
 HESTIA_BACKUP="/root/hst_upgrade/$(date +%d%m%Y%H%M)"
 spinner="/-\|"
 
+function version_ge(){ test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" -o ! -z "$1" -a "$1" = "$2"; }
+
 # Set version(s)
 pma_v='4.8.5'
 
@@ -11,31 +13,38 @@ if [ "$DB_SYSTEM" = 'mysql' ]; then
     # Display upgrade information
     echo "(*) Upgrading phpMyAdmin to v$pma_v..."
 
-    # Download latest phpMyAdmin release
-    wget --quiet https://files.phpmyadmin.net/phpMyAdmin/$pma_v/phpMyAdmin-$pma_v-all-languages.tar.gz
+    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 $pma_v or newer is already installed: ${pma_release_file##*-}, skipping update..."
+    else
+        [ -d /usr/share/phpmyadmin ] || mkdir -p /usr/share/phpmyadmin
 
-    # Unpack files
-    tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
+        # Download latest phpMyAdmin release
+        wget --quiet https://files.phpmyadmin.net/phpMyAdmin/$pma_v/phpMyAdmin-$pma_v-all-languages.tar.gz
 
-    # Delete file to prevent error
-    rm -fr /usr/share/phpmyadmin/doc/html
+        # Unpack files
+        tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
 
-    # Overwrite old files
-    cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
+        # Delete file to prevent error
+        rm -fr /usr/share/phpmyadmin/doc/html
 
-    # Set config and log directory
-    sed -i "s|define('CONFIG_DIR', '');|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
-    sed -i "s|define('TEMP_DIR', './tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
+        # Overwrite old files
+        cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
 
-    # 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
+        # Set config and log directory
+        sed -i "s|define('CONFIG_DIR', '');|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
+        sed -i "s|define('TEMP_DIR', './tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
 
-    # Clean up
-    rm -fr phpMyAdmin-$pma_v-all-languages
-    rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
+        # 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
+        rm -fr phpMyAdmin-$pma_v-all-languages
+        rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
+    fi
 fi
 
 # Add amd64 to repositories to prevent notifications - https://goo.gl/hmsSV7

+ 8 - 3
install/upgrade/1.00.0-190618.sh

@@ -18,11 +18,14 @@ source /usr/local/hestia/conf/hestia.conf
 # Get hestia version
 version=$(dpkg -l | awk '$2=="hestia" { print $3 }')
 
+function version_ge(){ test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" -o ! -z "$1" -a "$1" = "$2"; }
+
 # Compare version for upgrade routine
 if [ "$version" != "0.9.8-28" ]; then
     source $HESTIA/install/upgrade/0.9.8-28.sh
 fi
 
+
 # Set phpMyAdmin version for upgrade
 pma_v='4.9.0.1'
 
@@ -135,7 +138,7 @@ if [ ! -e /etc/ssl/dhparam.pem ]; then
         fi
     done
     if [ ! -z "$resolver" ]; then
-        sed -i "s/1.0.0.1 1.1.1.1/$dns_resolver/g" /etc/nginx/nginx.conf
+        sed -i "s/1.0.0.1 1.1.1.1/$resolver/g" /etc/nginx/nginx.conf
     fi
 
     # Restart Nginx service
@@ -403,11 +406,13 @@ done
 
 # Upgrade phpMyAdmin if applicable
 if [ "$DB_SYSTEM" = 'mysql' ]; then
-    if [ -e "/usr/share/phpmyadmin/RELEASE-DATE-$pma_v" ]; then
-        echo "(*) phpMyAdmin $pma_v is already installed, skipping update..."
+    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 $pma_v or newer is already installed: ${pma_release_file##*-}, skipping update..."
     else
         # Display upgrade information
         echo "(*) Upgrade phpMyAdmin to 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