File: //usr/local/locaweb/bin/lwcorp_apache2_seta_ip_vhost.sh
#!/bin/bash
# FUNCTIONS
. /etc/lwcorp/lwcorp.functions
#
# SE O SERVIDOR NAO POSSUIR IP ADICIONAL, O SCRIPT PARA
#
if [[ -z $SERVERIPADDR ]]; then
echo "$LOGDATE - [O servidor nao possui endereco IP adicional. O processo foi cancelado]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLEINFO" --msgbox "\nESTE SERVIDOR NAO POSSUI ENDERECO IP ADICIONAL.\n\nABORTANDO." 9 65
exit 1
fi
#
# SE O CONFIGTEST DO APACHE DER ERRO, O SCRIPT PARA
#
/usr/sbin/apache2ctl configtest 2> /dev/null
if [ $? -ne "0" ];then
echo "$LOGDATE - [Existe um erro no 'configtest' do Apache2. Processo abortado]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nEXISTE UM ERRO NO CONFIGTEST DO APACHE.\n\nCORRIJA ISSO ANTES DE PROSSEGUIR." 9 65
exit 1
fi
#
# SELECIONA A HOSPEDAGEM
#
FTP_USER_SELECTED=$(dialog --backtitle "$LWCORPHEADER" --stdout --radiolist "\nSELECIONE A HOSPEDAGEM:" 0 0 0 `for a in $CSUSERS; do echo "$a '' off"; done`)
if [ -z $FTP_USER_SELECTED ];then
echo "$LOGDATE - [Analista nao selecionou a hospedagem e/ou cancelou a configuracao de IP em vhost]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nCONFIGURACAO CANCELADA." 7 65
exit 1
else
echo "$LOGDATE - [Selecionada hospedagem '$FTP_USER_SELECTED']" >> $LOGFILE
fi
#
# VALIDA USUARIO
#
getent passwd $FTP_USER_SELECTED >/dev/null
if [ $? -ne "0" ];then
echo "$LOGDATE - [Analista informou usuario inexistente. Cancelada configuracao de IP em vhost]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nUSUARIO NAO ENCONTRADO.\n\nCANCELANDO A CONFIGURACAO." 9 65
exit 1
fi
#
# ENDERECOS IP PRESENTES NO SERVIDOR
#
IP_ADDR_SELECTED=$(dialog --backtitle "$LWCORPHEADER" --stdout --radiolist "\nSELECIONE O ENDERECO IP:" 0 0 0 `for a in $SERVERIPADDR; do echo "$a '' off"; done`)
if [ -z $IP_ADDR_SELECTED ];then
echo "$LOGDATE - [Analista nao selecionou um IP e/ou cancelou a configuracao de IP em vhost]" >> $LOGFILE
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nVOCE NAO SELECIONOU UM ENDERECO IP.\n\nCANCELANDO A CONFIGURACAO." 9 65
exit 1
fi
grep -w $IP_ADDR_SELECTED /etc/apache2/sites-enabled/*.ws-ssl >/dev/null
if [ $? -eq "0" ];then
echo "$LOGDATE - [Analista informou IP ja em uso em outro vhost. Cancelada configuracao de IP em vhost]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nO IP '$IP_ADDR_SELECTED' JA ESTA EM USO EM UM VHOST." 7 65
exit 1
fi
#
# CONFIRMACAO DO USUARIO
#
dialog --backtitle "$LWCORPHEADER" --title "$TITLECONFIRMACAO" --yesno "\nUSER: $FTP_USER_SELECTED\nIP: $IP_ADDR_SELECTED\n\nESTA ALTERACAO REQUER UM RESTART DO APACHE2.\n\nDESEJA PROSSEGUIR?" 11 65
case $? in
0) ;;
*) echo "$LOGDATE - [Processo cancelado pelo analista]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLECANCELADO" --msgbox "\nOK, CANCELADO." 7 65; exit 1;;
esac
#
# CONFIGTEST
#
/usr/sbin/apache2ctl configtest 2> /dev/null
case $? in
0) ;;
*) echo "$LOGDATE - [Processo cancelado devido a uma falha no Apache2 identificada pelo configtest]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nHA UM PROBLEMA NO CONFIGTEST DO APACHE.\n\nCORRIJA ISSO ANTES DE PROSSEGUIR." 9 65; exit 1;;
esac
sed -i "/VirtualHost/s/$(grep VirtualHost /etc/apache2/sites-available/$FTP_USER_SELECTED.hospedagemdesites.ws-ssl | grep 443 | cut -d: -f1 | awk '{print$2}')/$IP_ADDR_SELECTED/g" /etc/apache2/sites-available/$FTP_USER_SELECTED.hospedagemdesites.ws-ssl
case $? in
0) SEDSUCCESS="true";;
*) SEDSUCCESS="false";;
esac
case $SEDSUCCESS in
true) /usr/sbin/apache2ctl configtest 2> /dev/null;;
false) echo "$LOGDATE - [Erro na configuracao do IP '$IP_ADDR_SELECTED' para o site '$FTP_USER_SELECTED'.]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nOCORREU UM ERRO AO SETAR IP NO VHOST. VERIFICAR." 7 65; exit 1;;
esac
case $? in
0) /usr/sbin/apache2ctl configtest 2> /dev/null;;
*) echo "$LOGDATE - [Erro na configuracao do IP '$IP_ADDR_SELECTED' para o site '$FTP_USER_SELECTED' apos ajuste no Vhost.]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nOCORREU UM ERRO CONFIGTEST APOS SETAR IP NO VHOST." 7 65; exit 1;;
esac
case $? in
0) echo "$LOGDATE - [Configurado IP '$IP_ADDR_SELECTED' no site '$FTP_USER_SELECTED'. O Apache2 foi reiniciado com sucesso]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEINFO" --msgbox "\nCONFIGURACAO REALIZADA COM SUCESSO." 7 65; exit 0;;
*) echo "$LOGDATE - [Erro na configuracao do IP '$IP_ADDR_SELECTED' no site '$FTP_USER_SELECTED'.]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nOCORREU UM ERRO NO RESTART DO APACHE2. VERIFICAR." 7 65; exit 1;;
esac