File: //usr/local/locaweb/bin/lwcorp_php_muda_versao.sh
#!/bin/bash
# VARS e FUNCTIONS
. /etc/lwcorp/lwcorp.functions
#
# Antes de mais nada, faz um configtest
#
configtest
if [ $? != 0 ]; then
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nHA UM PROBLEMA NA SAIDA DO CONFIGTEST DO APACHE2.\n\nVERIFIQUE ISSO ANTES DE PROSSEGUIR." 9 80
exit 1
fi
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nOBSERVACOES:\n\n1 - ANTES DE PROSSEGUIR, DOCUMENTE ESTA MUDANCA EM UMA CHANGE;\n2 - AO FIM DA CONFIGURACAO, O APACHE2 SERA REINICIADO;" 10 80
#
# VERIFICA A VERSAO ATUAL DO PHP:
#
if [ -e "/etc/apache2/mods-enabled/php5.conf" ];then
PHPCURRENT="php5"
PHPVERSION="php54 php55 php56"
elif [ -e "/etc/apache2/mods-enabled/php54.conf" ];then
PHPCURRENT="php54"
PHPVERSION="php5 php55 php56"
elif [ -e "/etc/apache2/mods-enabled/php55.conf" ];then
PHPCURRENT="php55"
PHPVERSION="php5 php54 php56"
elif [ -e "/etc/apache2/mods-enabled/php56.conf" ];then
PHPCURRENT="php56"
PHPVERSION="php5 php54 php55"
elif [ -e "/etc/apache2/mods-enabled/suphp.conf" ];then
PHPCURRENT="suphp"
PHPVERSION="php5 php54 php55 php56"
else
#
# Se nao foi identificada versao do PHP:
#
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --yesno "\nESTE SERVIDOR NAO TEM PHP ATIVO\n" 7 80
echo "$LOGDATE - [Servidor sem PHP ativo. Processo cancelado]" >> $LOGFILE
exit 1
fi
if [ $PHPCURRENT == "suphp" ];then
echo "$LOGDATE - [Analista informado sobre versao atual do PHP. Versao atual do PHP: $PHPCURRENT (PHP 5.3)]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --yesno "\nESTE SERVIDOR UTILIZA SUPHP. AO MUDAR A VERSAO DO PHP, PASSARA PARA MOD_PHP.\n\nRECOMENDACAO: SOMENTE PROSSIGA APOS ALINHAR ISSO COM O CLIENTE.\n\nVOCE DESEJA PROSSEGUIR?\n" 11 80
if [ $? -ne 0 ]; then
dialog --backtitle "$LWCORPHEADER" --title "$TITLECANCELADO" --msgbox "\nPROCESSO CANCELADO.\n" 7 80
echo "$LOGDATE - [Analista cancelou o processo]" >> $LOGFILE
fi
elif [ $PHPCURRENT == "php5" ];then
echo "$LOGDATE - [Informada versao atual do PHP. Versao atual do PHP: $PHPCURRENT (PHP 5.3)]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nINFORMACAO:\n\nVERSAO ATUAL DO PHP: $PHPCURRENT.\n\nOBSERVACAO: php5 = PHP 5.3 ;)" 11 80
else
echo "$LOGDATE - [Informada versao atual do PHP. Versao atual do PHP: $PHPCURRENT]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nINFORMACAO:\n\nVERSAO ATUAL DO PHP: $PHPCURRENT." 9 80
fi
#
# Menu de selecao do novo PHP:
#
echo "$LOGDATE - [Aguardando analista selecionar nova versao desejada do PHP]" >> $LOGFILE
PHP_VERSION_SELECTED=$(dialog --backtitle "$LWCORPHEADER" --stdout --radiolist "\nSELECIONE O PHP DESEJADO:" 0 0 0 `for a in $PHPVERSION; do echo "$a '' off"; done`)
#
# Se o analista nao selecionou uma versao:
#
if [ -z $PHP_VERSION_SELECTED ];then
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nVOCE NAO SELECIONOU UMA DAS OPCOES.\n\nCONFIGURACAO CANCELADA." 9 65
echo "$LOGDATE - [Analista nao selecionou a nova versao do PHP e/ou cancelou a configuracao]" >> $LOGFILE;
exit 1
else
echo "$LOGDATE - [Analista selecionou a nova versao $PHP_VERSION_SELECTED. Aguardando confirmacao]" >> $LOGFILE;
fi
#
# Confirmacao da mudanca de versao do PHP:
#
dialog --backtitle "$LWCORPHEADER" --title "$TITLECONFIRMACAO" --yesno "\nALTERACAO DE VERSAO DO PHP:\n\nVERSAO ATUAL: $PHPCURRENT\nNOVA VERSAO: $PHP_VERSION_SELECTED\n\nOBS.: PARA APLICAR A MUDANCA, O APACHE2 SERA REINICIADO.\n\nVOCE DESEJA PROSSEGUIR?\n" 14 65
#
# Aplica a nova versao se o analista responder "SIM" na confirmacao anterior ou cancela de escolheu "NAO".
#
if [ $? -eq 0 ]; then
echo "$LOGDATE - [Analista confirmou alteracao de versao do PHP. Iniciando mudanca]" >> $LOGFILE
# Desativa o PHP atual:
echo "$LOGDATE - [Desativando PHP $PHPCURRENT]" >> $LOGFILE
echo -e "\033[1;32mDesativando o $PHPCURRENT\033[0m"
a2dismod $PHPCURRENT
echo ""
# Habilita o PHP selecionado
echo "$LOGDATE - [Ativando PHP $PHP_VERSION_SELECTED]" >> $LOGFILE
echo -e "\033[1;32mAtivando o $PHP_VERSION_SELECTED\033[0m"
a2enmod $PHP_VERSION_SELECTED
echo ""
# Reinicia o Apache2:
echo "$LOGDATE - [Reiniciando o Apache2]" >> $LOGFILE
echo -e "\033[1;32mReiniciando o Apache2:\033[0m"
/etc/init.d/apache2 stop && sleep 5 && /etc/init.d/apache2 start
# Atualiza TAG do CF:
rm -f /etc/default/locaweb/description/php5* > /dev/null
if [ $PHP_VERSION_SELECTED == "php5" ];then
touch /etc/default/locaweb/description/php53
elif [ $PHP_VERSION_SELECTED == "php56" ];then
touch /etc/default/locaweb/description/php
else
touch /etc/default/locaweb/description/$PHP_VERSION_SELECTED
fi
else
#
# Se o analista respondeu NAO, cai fora:
#
echo "$LOGDATE - [Analista respondeu NAO ou teclou ENTER sem selecionar uma opcao. Configuracao cancelada]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLECANCELADO" --msgbox "\nPROCESSO CANCELADO.\n" 7 80
exit 1
fi
#
# Verifica se a configuracao validando saida do comando anterior
#
case $? in
0) echo "$LOGDATE - [Apache2 reiniciado e nova versao do PHP aplicada com sucesso]" >> $LOGFILE ;
dialog --backtitle "$LWCORPHEADER" --title "$TITLESUCESSO" --msgbox "\nVERSAO DO PHP ALTERADA COM SUCESSO\n\nNOVA VERSAO: ${PHP_VERSION_SELECTED}." 9 65; exit 0;;
*) echo "$LOGDATE - [Erro no reinicio do Apache2. Verifique isso e tente novamente]" >> $LOGFILE ;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nERRO NO REINICIO DO APACHE APOS TROCA DE VERSAO DO PHP.\n\nVERIFIQUE ISSO E TENTE NOVAMENTE." 9 65; exit 1;;
esac