Author: jfthomps
Date: Tue Jun 13 15:38:09 2017
New Revision: 1798609

URL: http://svn.apache.org/viewvc?rev=1798609&view=rev
Log:
VCL-1053 - Prepare VCL 2.5 release 

vcl-upgrade.sh:
-updated VCL_VERSION from 2.4.2 to 2.5
-added code to delete MAXVMLIMIT from conf.php
-added code to change $mcryptkey in secrets.php to $cryptkey; if php version >= 
5.3, update value of $cryptkey to be randomly generated data from openssl
-removed php-gd from list of required php packages
-moved code that installs missing packages to be outside for loop so it is only 
run once the full list of missing packages is created
-changed cp commands to include -a parameter so original timestamps from 
archive are retained
-added code to set ownership of web code
-added code to set selinux context of web code
-added code to set ownership of management node code
-updated line placed in .htaccess for old web code to be "Requre all denied" to 
match new httpd configuration

Modified:
    vcl/trunk/vcl-upgrade.sh

Modified: vcl/trunk/vcl-upgrade.sh
URL: 
http://svn.apache.org/viewvc/vcl/trunk/vcl-upgrade.sh?rev=1798609&r1=1798608&r2=1798609&view=diff
==============================================================================
--- vcl/trunk/vcl-upgrade.sh (original)
+++ vcl/trunk/vcl-upgrade.sh Tue Jun 13 15:38:09 2017
@@ -62,7 +62,7 @@ if [ $? -ne 0 ]; then help; fi
 eval set -- "$args"
 
 # ------------------------- variables -------------------------------
-VCL_VERSION=2.4.2
+VCL_VERSION=2.5
 OLD_VERSION=""
 DB_NAME=vcl
 WEB_PATH=/var/www/html/vcl
@@ -438,6 +438,23 @@ function confUpgradeFrom22() {
 
        sed -i '/ENABLE_ITECSAUTH/G' $WEB_PATH-$VCL_VERSION/.ht-inc/conf.php
        if [ $? -ne 0 ]; then echo "Error: Failed to update conf.php"; exit 1; 
fi
+
+       if grep -q MAXVMLIMIT $WEB_PATH-$VCL_VERSION/.ht-inc/conf.php; then
+               sed -i '/MAXVMLIMIT/d' $WEB_PATH-$VCL_VERSION/.ht-inc/conf.php
+               if [ $? -ne 0 ]; then echo "Error: Failed to update conf.php"; 
exit 1; fi
+       fi
+
+       phpver=$(echo '<?php echo PHP_VERSION; ?>' | php | cut -c1-3 | sed 
's/\.//')
+       if (( $phpver >= 53 )); then
+               random=$(openssl rand 32 | base64)
+               sed -i "/mcryptkey/a \$cryptkey='$random';" 
$WEB_PATH-$VCL_VERSION/.ht-inc/secrets.php
+               if [ $? -ne 0 ]; then echo "Error: Failed to update 
secrets.php"; exit 1; fi
+               sed -i '/mcryptkey/d' $WEB_PATH-$VCL_VERSION/.ht-inc/secrets.php
+               if [ $? -ne 0 ]; then echo "Error: Failed to update 
secrets.php"; exit 1; fi
+       else
+               sed -i "s/mcryptkey/cryptkey/" 
$WEB_PATH-$VCL_VERSIONS/.ht-inc/secrets.php
+               if [ $? -ne 0 ]; then echo "Error: Failed to update 
secrets.php"; exit 1; fi
+       fi
 }
 
 function confUpgradeFrom221() {
@@ -527,6 +544,18 @@ function confUpgradeFrom23() {
 
        sed -i '/ENABLE_ITECSAUTH/G' $WEB_PATH-$VCL_VERSION/.ht-inc/conf.php
        if [ $? -ne 0 ]; then echo "Error: Failed to update conf.php"; exit 1; 
fi
+
+       if grep -q MAXVMLIMIT $WEB_PATH-$VCL_VERSION/.ht-inc/conf.php; then
+               sed -i '/MAXVMLIMIT/d' $WEB_PATH-$VCL_VERSION/.ht-inc/conf.php
+               if [ $? -ne 0 ]; then echo "Error: Failed to update conf.php"; 
exit 1; fi
+       fi
+
+       phpver=$(echo '<?php echo PHP_VERSION; ?>' | php | cut -c1-3 | sed 
's/\.//')
+       if (( $phpver >= 53 )); then
+               random=$(openssl rand 32 | base64)
+               sed -i "s%\$cryptkey.*$%\$cryptkey = '$random';%" 
$WEB_PATH-$VCL_VERSION/.ht-inc/secrets.php
+               if [ $? -ne 0 ]; then echo "Error: Failed to update 
secrets.php"; exit 1; fi
+       fi
 }
 
 function confUpgradeFrom231() {
@@ -537,7 +566,21 @@ function confUpgradeFrom232() {
        confUpgradeFrom23
 }
 
-# ------------------- download/validate arvhice ---------------------
+function confUpgradeFrom242() {
+       if grep -q MAXVMLIMIT $WEB_PATH-$VCL_VERSION/.ht-inc/conf.php; then
+               sed -i '/MAXVMLIMIT/d' $WEB_PATH-$VCL_VERSION/.ht-inc/conf.php
+               if [ $? -ne 0 ]; then echo "Error: Failed to update conf.php"; 
exit 1; fi
+       fi
+
+       phpver=$(echo '<?php echo PHP_VERSION; ?>' | php | cut -c1-3 | sed 
's/\.//')
+       if (( $phpver >= 53 )); then
+               random=$(openssl rand 32 | base64)
+               sed -i "s%\$cryptkey.*$%\$cryptkey = '$random';%" 
$WEB_PATH-$VCL_VERSION/.ht-inc/secrets.php
+               if [ $? -ne 0 ]; then echo "Error: Failed to update 
secrets.php"; exit 1; fi
+       fi
+}
+
+# ------------------- download/validate archive ---------------------
 print_break
 cd $WORKPATH
 if [[ ! -f $ARCHIVE ]]; then
@@ -630,7 +673,7 @@ if [[ $DOWEB -eq 1 ]]; then
        if [ $? -ne 0 ]; then generic_error "Failed to create backup of web 
code at $WEB_PATH"; exit 1; fi;
 fi
 
-# -------------------------- backup web code -------------------------
+# -------------------------- backup mn code -------------------------
 if [[ $DOMN -eq 1 ]]; then
        echo "Backing up management node code..."
        tar czf $WORKPATH/managmentnode-${OLD_VERSION}-backup.tar.gz $MN_PATH
@@ -642,7 +685,7 @@ if [[ $DOWEB -eq 1 ]]; then
        print_break
        echo "Ensuring required php components are installed..."
        missing=
-       for pkg in php php-gd php-mysql php-xml php-xmlrpc php-ldap 
php-mbstring; do
+       for pkg in php php-mysql php-xml php-xmlrpc php-ldap php-mbstring; do
                alt=$(echo $pkg | sed 's/php/php53/')
                if ! (rpm --quiet -q $pkg || rpm --quiet -q $alt); then
                        missing="$missing $pkg"
@@ -650,31 +693,44 @@ if [[ $DOWEB -eq 1 ]]; then
                if rpm -qa | grep -q php53; then
                        missing=$(echo $missing | sed 's/php/php53/g')
                fi
-               if [[ $missing != "" ]]; then
-                       echo "yum -q -y install $missing"
-                       yum -q -y install $missing
-                       if [ $? -ne 0 ]; then generic_error "Failed to install 
php components"; exit 1;
-                       else echo "php components successfully installed"; fi
-               fi
        done
+       if [[ $missing != "" ]]; then
+               echo "yum -q -y install $missing"
+               yum -q -y install $missing
+               if [ $? -ne 0 ]; then generic_error "Failed to install php 
components"; exit 1;
+               else echo "php components successfully installed"; fi
+       fi
 fi
 
 # ------------------------- copy web code in place -------------------------
 if [[ $DOWEB -eq 1 ]]; then
        print_break
        echo "Installing new VCL web code..."
-       /bin/cp -r $WORKPATH/apache-VCL-$VCL_VERSION/web/ 
${WEB_PATH}-$VCL_VERSION
+       /bin/cp -ar $WORKPATH/apache-VCL-$VCL_VERSION/web/ 
${WEB_PATH}-$VCL_VERSION
        if [ $? -ne 0 ]; then generic_error "Failed to install new VCL web 
code"; exit 1; fi;
+       chown -R root:root ${WEB_PATH}-$VCL_VERSION/
+       if [ $? -ne 0 ]; then generic_error "Failed to set ownership of VCL web 
code to root"; exit 1; fi;
+       chown apache ${WEB_PATH}-$VCL_VERSION/.ht-inc/cryptkey
+       if [ $? -ne 0 ]; then generic_error "Failed to set ownership of VCL web 
code cryptkey directory to apache"; exit 1; fi;
        chown apache ${WEB_PATH}-$VCL_VERSION/.ht-inc/maintenance
+       if [ $? -ne 0 ]; then generic_error "Failed to set ownership of VCL web 
code maintenance directory to apache"; exit 1; fi;
+       if [[ -x /usr/sbin/getenforce ]] && /usr/sbin/getenforce | grep -q -i 
enforcing; then
+               chcon -R -t httpd_sys_content_t ${WEB_PATH}-$VCL_VERSION
+               if [ $? -ne 0 ]; then generic_error "Failed to set SELinux 
context of web directory"; exit 1; fi;
+               chcon -t httpd_sys_rw_content_t 
${WEB_PATH}-$VCL_VERSION/.ht-inc/cryptkey
+               if [ $? -ne 0 ]; then generic_error "Failed to set SELinux 
context of web cryptkey directory"; exit 1; fi;
+               chcon -t httpd_sys_rw_content_t 
${WEB_PATH}-$VCL_VERSION/.ht-inc/maintenance
+               if [ $? -ne 0 ]; then generic_error "Failed to set SELinux 
context of web maintenance directory"; exit 1; fi;
+       fi
 fi
 
 # ---------------------------- configure web code --------------------------
 if [[ $DOWEB -eq 1 ]]; then
        print_break
        echo "Copying in web configuration files from previous version"
-       /bin/cp -f ${WEB_PATH}/.ht-inc/secrets.php 
${WEB_PATH}-$VCL_VERSION/.ht-inc/
+       /bin/cp -af ${WEB_PATH}/.ht-inc/secrets.php 
${WEB_PATH}-$VCL_VERSION/.ht-inc/
        if [ $? -ne 0 ]; then echo "Error: Failed to copy secrets.php"; exit 1; 
fi;
-       /bin/cp -f ${WEB_PATH}/.ht-inc/conf.php 
${WEB_PATH}-$VCL_VERSION/.ht-inc/
+       /bin/cp -af ${WEB_PATH}/.ht-inc/conf.php 
${WEB_PATH}-$VCL_VERSION/.ht-inc/
        if [ $? -ne 0 ]; then echo "Error: Failed to copy conf.php"; exit 1; fi;
 
        if [[ $OLD_VERSION = '2.2' ]]; then confUpgradeFrom22; fi
@@ -683,10 +739,11 @@ if [[ $DOWEB -eq 1 ]]; then
        if [[ $OLD_VERSION = '2.3' ]]; then confUpgradeFrom23; fi
        if [[ $OLD_VERSION = '2.3.1' ]]; then confUpgradeFrom231; fi
        if [[ $OLD_VERSION = '2.3.2' ]]; then confUpgradeFrom232; fi
+       if [[ $OLD_VERSION = '2.4.2' ]]; then confUpgradeFrom242; fi
 
-       /bin/cp -f ${WEB_PATH}/.ht-inc/pubkey.pem 
${WEB_PATH}-$VCL_VERSION/.ht-inc/
+       /bin/cp -af ${WEB_PATH}/.ht-inc/pubkey.pem 
${WEB_PATH}-$VCL_VERSION/.ht-inc/
        if [ $? -ne 0 ]; then echo "Error: Failed to copy pubkey.pem"; exit 1; 
fi;
-       /bin/cp -f ${WEB_PATH}/.ht-inc/keys.pem 
${WEB_PATH}-$VCL_VERSION/.ht-inc/
+       /bin/cp -af ${WEB_PATH}/.ht-inc/keys.pem 
${WEB_PATH}-$VCL_VERSION/.ht-inc/
        if [ $? -ne 0 ]; then echo "Error: Failed to copy keys.pem"; exit 1; fi;
 fi
 
@@ -695,12 +752,15 @@ if [[ $DOMN -eq 1 ]]; then
        print_break
        echo "Installing management node components..."
        if [[ ! -d ${MN_PATH}-$OLD_VERSION ]]; then
-               /bin/cp -r ${MN_PATH} ${MN_PATH}-$VCL_VERSION
+               /bin/cp -ar ${MN_PATH} ${MN_PATH}-$VCL_VERSION
                if [ $? -ne 0 ]; then generic_error "Failed to install new VCL 
management node code (1)"; exit 1; fi;
+               chown -R root:root ${MN_PATH}-$VCL_VERSION/
+               if [ $? -ne 0 ]; then generic_error "Failed to set ownership of 
VCL management node code to root"; exit 1; fi;
        fi
-       /bin/cp -r ${MN_PATH}-$OLD_VERSION ${MN_PATH}-$VCL_VERSION
-       /bin/cp -r $WORKPATH/apache-VCL-$VCL_VERSION/managementnode/* 
${MN_PATH}-$VCL_VERSION
+       /bin/cp -ar ${MN_PATH}-$OLD_VERSION ${MN_PATH}-$VCL_VERSION
        if [ $? -ne 0 ]; then generic_error "Failed to install new VCL 
management node code (2)"; exit 1; fi;
+       /bin/cp -ar $WORKPATH/apache-VCL-$VCL_VERSION/managementnode/* 
${MN_PATH}-$VCL_VERSION
+       if [ $? -ne 0 ]; then generic_error "Failed to install new VCL 
management node code (3)"; exit 1; fi;
 fi
 
 # -------------------- configure management node code ------------------
@@ -766,7 +826,7 @@ if [[ $DOWEB -eq 1 ]]; then
        if [[ -f ${WEB_PATH}-$OLD_VERSION/.htaccess ]]; then
                mv -f ${WEB_PATH}-$OLD_VERSION/.htaccess 
${WEB_PATH}-$OLD_VERSION/.htaccess.preupgrade
        fi
-       echo "Deny from all" > ${WEB_PATH}-$OLD_VERSION/.htaccess
+       echo "Require all denied" > ${WEB_PATH}-$OLD_VERSION/.htaccess
        if [ $? -ne 0 ]; then echo "Error: Failed to create new 
${WEB_PATH}-$OLD_VERSION/.htaccess file"; exit 1; fi
 fi
 


Reply via email to