#! /bin/bash
################################################################################
#
# alterar_dominio - Rafael Carreiro
#
#		Realizar alteracao de dominio
#
#       Ordem de execução
#       1.  Faz verificacao de informacoes armazenadas pelo script executado 
#           anteriormente "iniciar_upgrade.sh";
#
#-------------------------------------------------------------------------------
#
#               Histórico
#
#		v0.2	2016-08-18, Rafael Carreiro:
#				Simplificacao no codigo, parte de renomear arquivos .yml
#				dentro de app/config/domains.
#
#		v0.1	2016-08-17 - Rafael Carreiro:
#				Script criado com base em outros codigos ja prontos.	
#
################################################################################
clear
#######################################
# IDENTIFICA USUARIO
#######################################
USER=$(whoami)
echo -e "\nIniciando verificacao de usuario..."
if [ $USER = "root" ] ;then
    echo -e "\nVocê não pode rodar como root.\n"
    exit 1
else
    :
fi
echo -e "Usuario: \"$USER\""
echo -e "Verificacao concluida.\n"

#######################################
# VERIFICA PATH DO PROJETO
#######################################
echo -e "Verificando PATH e arquivos de configuracao..."
HOME="/home/$USER"
TMP_DIR="$HOME/tmp_upgrade"
PATH_TARGET="$HOME/public_html"
CONFIG_INC="$PATH_TARGET/conf/config.inc.php"
DOMAIN_INC="$PATH_TARGET/custom/domain/domain.inc.php"
CONSTANTS_INC="$PATH_TARGET/conf/constants.inc.php"
DB_USER=$(grep -E "define\(\"_DIRECTORYDB_USER\"\," $CONFIG_INC | cut -f4 -d '"')
DB_PASS=$(grep -E "define\(\"_DIRECTORYDB_PASS\"\," $CONFIG_INC | cut -f4 -d '"')
DB_HOST=$(grep -E "define\(\"_DIRECTORYDB_HOST\"\," $CONFIG_INC | cut -f4 -d '"')
DB_MAIN=$(grep -E "define\(\"_DIRECTORYDB_NAME\"\," $CONFIG_INC | cut -f4 -d '"')
EDIR_ROOT="$PATH_TARGET"
EDIR11_ROOT="$HOME/edirectory"
BD_TXT="$TMP_DIR/bd.txt"

#	Estava conflitando os dominios por alteracoes manuais que foram necessarias
#	para adequacao do upgrade para 11.1 entao...
rm -rf $TMP_DIR
[ "$?" != 0 ] && echo "Problema" && exit

[ ! -d "$TMP_DIR" ] && mkdir $TMP_DIR

criar_bd(){
# Cria arquivo domains.txt limpo
    DOMAINS="$TMP_DIR/domains.txt"
    [[ ! -f $DOMAINS ]] && touch $DOMAINS

# Cria arquivo db_domains.txt limpo
    DB_DOMAINS="$TMP_DIR/db_domains.txt"
    [[ ! -f $DB_DOMAINS ]] && touch $DB_DOMAINS

# Alimenta arquivo domains.txt
    echo -e "Verificando dominios..."
    grep -E "domainInfo\[" $DOMAIN_INC | cut -f2 -d '"' > $DOMAINS
    echo -e "Dominios encontrados:\n"
    cat -n $DOMAINS

# Alimenta arquivo db_domains.txt
    echo -e "\nVerificando databases dos dominios..."
    mysql -u"$DB_USER" -p"$DB_PASS" -e "use $DB_MAIN ; \
    select database_name from Domain;" | grep "domain" > $DB_DOMAINS
    echo -e "Databases encontradas:\n"
    cat -n $DB_DOMAINS
    echo ""

# Alimenta o arquivo domains_staging.txt
    DOMAIN1=$(head -1 $DOMAINS)
    DB_DOMAIN1=$(head -1 $DB_DOMAINS)

    DOMAINS_STAGING="$TMP_DIR/domains_staging.txt"

    cp -f $DOMAINS $DOMAINS_STAGING
    for i in $(cat $DOMAINS)
       do
       sed -i "s/$i/$i-v11.arcastaging.com/g" $DOMAINS_STAGING
    done

    [[ ! -f $DOMAINS_STAGING ]] && echo -e "Problema, arquivo $DOMAINS_STAGING nao encontrado."

# Cria o arquivo bd.txt vazio
    BD_TXT="$TMP_DIR/bd.txt"
    [[ -f $BD_TXT ]] && cat /dev/null > $BD_TXT
    [[ ! -f $BD_TXT ]] && touch $BD_TXT

# Alimenta o arquivo bd.txt
    num_domain=$(cat $DOMAINS | wc -l)
    c=0

    for i in $(seq 1 $num_domain);
    do
        c=$((c+1))
    echo -e "$c:$(cat -n $DOMAINS | sed 's/[\ ]//g' | grep "^$i" | awk '{print $2}'):\
$(cat -n $DOMAINS_STAGING | sed 's/[\ ]//g' | grep "^$i" | awk '{print $2}'):\
$(cat -n $DB_DOMAINS | sed "s/^\ .* $i/$i/g" | grep "^$i" | awk '{print $2}')" >> $BD_TXT
    done
	echo -e "Base de dados criada com sucesso."
	cat $BD_TXT
}

##  Se BD existir...
if [ ! -f "$BD_TXT" ] ; then
    echo -e "\nCriando base de dados com informacoes do projeto..."
    criar_bd
    echo -e "Concluido\n"
else
    :
fi

DIR_DOMAINS=$EDIR11_ROOT/app/config/domains
cd $DIR_DOMAINS

for dominio in $(cat $BD_TXT | cut -d: -f2); do
	echo -e "Informe o novo dominio para \"$dominio\" : "
	read novodominio
	sed -i "s/$dominio/$novodominio/g" $EDIR11_ROOT/web/custom/domain/domain.inc.php && echo -e "domain.inc.php - ok"
	sed -i "s/$dominio/$novodominio/g" $EDIR11_ROOT/app/config/domain.yml && echo -e "domain.yml - ok"
	mysql -u$DB_USER -p$DB_PASS -e "use $DB_MAIN; update Domain set name='$novodominio', url='$novodominio' where url='$dominio';"
    [ "$?" == 0 ] && echo -e "table Domain - ok"

	mv $DIR_DOMAINS/$dominio.configs.yml $DIR_DOMAINS/$novodominio.configs.yml
	[ "$?" == 0 ]&& echo -e "$novodominio.configs.yml - ok" 
	mv $DIR_DOMAINS/$dominio.payment.yml $DIR_DOMAINS/$novodominio.payment.yml
	[ "$?" == 0 ]&& echo -e "$novodominio.payment.yml - ok" 
	mv $DIR_DOMAINS/$dominio.route.yml $DIR_DOMAINS/$novodominio.route.yml
	[ "$?" == 0 ]&& echo -e "$novodominio.route.yml - ok" 

done
echo -e "Limpando cache..."
rm -rf $EDIR11_ROOT/app/cache
[ "$?" == 0 ]&& echo -e "cache deletado - ok" 

echo -e "Recriando indice do elastic..."
for i in $(cat $BD_TXT | cut -d: -f2); do
    php $EDIR11_ROOT/app/console edirectory:sync -r --env=prod --domain=$novodominio --force-domain=$novodominio
done
echo -e "Ok, tudo pronto.\nNovo dominio: $novodominio\n\n"


##FIM
