#!/bin/sh
##### Instalacao do servidor de Painel Video #####
dominio_source_instalador="https://painelvideo.voxtreambrasil.com.br"

# Cores
EfeitoCorTitulo="\033[0;35m"
EfeitoCorOK="\033[0;32m"
EfeitoCorAlerta="\033[1;33m"
EfeitoCorErro="\033[0;31m"
EfeitoFecha="\033[0m"

# Variaveis gerais
senha_ftp=`date +%s | sha256sum | base64 | head -c 15`
senha_painel_mysql=`date +%s | sha256sum | base64 | head -c 15`
senha_root_mysql=`date +%s | sha256sum | base64 | head -c 30`
senha_admin_painel=`date +%s | sha256sum | base64 | head -c 10`

clear

if [ "$1" == "--help" ]; then

echo
echo -e "$EfeitoCorTitulo Modo de uso: sh instalador-painel-video-almalinux.sh OPCOES $EfeitoFecha"
echo
echo -e "$EfeitoCorTitulo --skip-inter          Desativa modo interativo para que não seja necessário aperta teclas para continuar $EfeitoFecha"
echo -e "$EfeitoCorTitulo --ssl                 Instala somente SSL $EfeitoFecha"
echo
exit

fi

echo
echo -e "$EfeitoCorTitulo ######################################################## $EfeitoFecha"
echo -e "$EfeitoCorTitulo # Script de Instalação do Painel de Streaming de Video # $EfeitoFecha"
echo -e "$EfeitoCorTitulo # Criado por Cesar - cesarlwh@gmail.com                # $EfeitoFecha"
echo -e "$EfeitoCorTitulo ######################################################## $EfeitoFecha"
echo

if [ x`echo "$1" | egrep -c "\-\-app|\-\-ssl"` = x0 ]; then

echo -e "$EfeitoCorOK Instalação Painel Video Alma Linux 9 $EfeitoFecha"
echo

echo -e "$EfeitoCorAlerta Informe o domínio do painel de Video $EfeitoFecha"
read -p 'Domínio Video: ' dominio_painel_video

echo -e "$EfeitoCorAlerta Informe o domínio do player de Video $EfeitoFecha"
read -p 'Domínio Player Video: ' dominio_painel_video_player

echo -e "$EfeitoCorAlerta Informe a senha root do MySQL gerada ao instalar painel de audio $EfeitoFecha"
read -p 'Senha root MySQL: ' senha_root_mysql

echo -e "$EfeitoCorAlerta Será configurado o SSL para $dominio_painel_video (painel), $dominio_painel_video_player (player) o DNS já deve estar propagado ou terá problemas na hora da instalação $EfeitoFecha"

echo
echo -e "$EfeitoCorTitulo Confirme se os dados digitados estão corretos $EfeitoFecha"
read -p 'Confirma(y/n): ' confirma

if [ "$confirma" != "${confirma#[Nn]}" ] ;then

clear

echo
echo -e "$EfeitoCorAlerta Reinicie o instalador com os dados corretos... $EfeitoFecha"
echo

exit 1

fi

read -n 1 -s -r -p "Pressione qualquer tecla para continuar com a instalação..."
echo
echo -e "$EfeitoCorOK Iniciando instalacao dos modulos... $EfeitoFecha"
echo

if [ "$1" == "--skip-inter" ] || [ "$2" == "--skip-inter" ]; then

echo
echo -e "$EfeitoCorAlerta Modo interativo desativado! $EfeitoFecha"
echo

silenciar="sim"

fi

adduser painelvideo

echo "painelvideo:$senha_ftp" | chpasswd

cat >> /etc/httpd/conf.d/sites.conf << EOF

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /home/painelvideo/public_html
    ServerName $dominio_painel_video
</VirtualHost>

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /home/painelvideo/public_html/player
    ServerName $dominio_painel_video_player
    ServerAlias playerv.*
</VirtualHost>

EOF

mysql -u root -p$senha_root_mysql -e "CREATE DATABASE IF NOT EXISTS video;GRANT ALL PRIVILEGES ON video.* TO 'painelvideo'@'%' IDENTIFIED BY '$senha_painel_mysql'"

if [ ! "$silenciar" ]; then
read -n 1 -s -r -p "Pressione qualquer tecla para continuar..."
fi

echo -e "$EfeitoCorOK Iniciando instalacao do Java + Android Studio $EfeitoFecha"
echo

mkdir -p /home/painelvideo/public_html

cd /home/painelvideo/public_html
wget -q ${dominio_source_instalador}/painel-video-responsivo.zip
unzip painel-video-responsivo.zip
rm -f painel-video-responsivo.zip

cat <<EOT >> /home/painelvideo/public_html/admin/inc/conecta.php
<?php
\$host = "localhost";//nome do host
\$user = "painelvideo";//nome de usuario do mysql
\$pass = "$senha_painel_mysql"; //senha do mysql
\$bd_streaming = "video"; //nome do banco de dados

\$conexao = mysqli_connect(\$host,\$user,\$pass);

mysqli_select_db(\$conexao,\$bd_streaming);
?>
EOT

chown painelvideo.painelvideo /home/painelvideo/public_html -Rf

chmod 0755 /home/painelvideo -Rfv

chmod 777 /home/painelvideo/public_html/app -Rf
chmod 777 /home/painelvideo/public_html/player -Rf
chmod 777 /home/painelvideo/public_html/cache -Rf
chmod 777 /home/painelvideo/public_html/temp -Rf

chmod 777 /home/painelvideo/public_html/robots/configurar-ssl-site-adm.sh

cp -Rfp /home/painelvideo/public_html/app/source-app-player /home/painelvideo/public_html/app/source_pre_compilacao
cd /home/painelvideo/public_html/app/source_pre_compilacao
replace 'codigo_versao' '1' -- app/build.gradle
replace 'numero_versao' '1.0' -- app/build.gradle
sed -i '/HASH_GRADLEW_APP/d' /home/painelvideo/public_html/app/source_pre_compilacao/gradlew
export JAVA_HOME=/usr;export PATH=$JAVA_HOME/bin:$PATH;./gradlew assembleRelease
rm -rf /home/painelvideo/public_html/app/source_pre_compilacao

clear

mysql -u root -p$senha_root_mysql video < /home/painelvideo/public_html/banco-de-dados-video.sql

mysql -u root -p$senha_root_mysql video -e "INSERT INTO administradores (codigo, nome, usuario, senha) VALUES (NULL, 'Administrador', 'admin', PASSWORD('$senha_admin_painel'))"
mysql -u root -p$senha_root_mysql video -e "INSERT INTO configuracoes (dominio_padrao, codigo_servidor_atual, manutencao) VALUES ('$dominio_painel_video', '1', 'nao')"

echo -e "$EfeitoCorOK Configurando o servidor de FTP para gerenciar arquivos do painel $EfeitoFecha"
echo

wget -O /etc/motd http://cesar.a2web1.srv.br/motd.txt
echo -e "$EfeitoCorAlerta Finalizando ajustes $EfeitoFecha"
echo

cat >> /var/spool/cron/root << EOF

0 2 * * * /usr/bin/php /home/painelvideo/public_html/robots/limpar-logs.php
*/30 * * * * /usr/bin/php /home/painelvideo/public_html/robots/monitor-servidores.php
*/30 * * * * /usr/bin/php /home/painelvideo/public_html/robots/monitor-capacidade.php
*/10 * * * * /usr/bin/php /home/painelvideo/public_html/robots/atualizar-uso-ftp.php registros=0-20000
*/5 * * * * /usr/bin/php /home/painelvideo/public_html/robots/gerar-estatisticas-wowza.php registros=0-20000
0 3 * * 0 /usr/bin/php /home/painelvideo/public_html/robots/limpar-estatisticas.php
*/10 * * * * /usr/bin/php /home/painelvideo/public_html/robots/monitor-streamings.php registros=0-20000
* * * * * /usr/bin/php -q /home/painelvideo/public_html/robots/agendamentos.php registros=0-10000
* * * * * /usr/bin/php /home/painelvideo/public_html/robots/agendamentos-lives.php registros=0-10000
0 1 * * * /usr/bin/php /home/painelvideo/public_html/robots/backup-painel-mysql.php
EOF

echo -e "$EfeitoCorAlerta Será configurado o SSL para $dominio_painel_video (painel), $dominio_painel_video_player (player) o DNS já deve estar propagado ou terá problemas na hora da instalação $EfeitoFecha"
echo -e "$EfeitoCorAlerta Se DNS não foi configurado ainda OU não esta propagado(pingando) não continue, espere propagar antes de continuar apartir de aqui... $EfeitoFecha"

echo
read -n 1 -s -r -p "Pressione qualquer tecla para continuar..."
echo

systemctl stop httpd

cd

certbot -n --agree-tos --register-unsafely-without-email certonly --standalone -d $dominio_painel_video

certbot -n --agree-tos --register-unsafely-without-email certonly --standalone -d $dominio_painel_video_player

if [ -f "/etc/letsencrypt/live/$dominio_painel_video/cert.pem" ]; then

cat <<EOT >> /etc/httpd/conf.d/$dominio_painel_video.conf

NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot /home/painelvideo/public_html
    ServerName $dominio_painel_video

    ErrorLog logs/ssl_error_log
    TransferLog logs/ssl_access_log
    LogLevel warn

    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
    SSLCertificateFile /etc/letsencrypt/live/$dominio_painel_video/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/$dominio_painel_video/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/$dominio_painel_video/chain.pem

    SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

</VirtualHost>

EOT

else

echo -e "$EfeitoCorErro Erro ao instalar SSL para domínio $dominio_painel_video, verifique os logs na tela. $EfeitoFecha"
echo
read -n 1 -s -r -p "Pressione qualquer tecla para continuar..."

fi

if [ -f "/etc/letsencrypt/live/$dominio_painel_video/cert.pem" ]; then

cat <<EOT >> /etc/httpd/conf.d/$dominio_painel_video_player.conf

NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot /home/painelvideo/public_html/player
    ServerName $dominio_painel_video_player

    ErrorLog logs/ssl_error_log
    TransferLog logs/ssl_access_log
    LogLevel warn

    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
    SSLCertificateFile /etc/letsencrypt/live/$dominio_painel_video_player/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/$dominio_painel_video_player/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/$dominio_painel_video_player/chain.pem

    SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

</VirtualHost>

EOT

else

echo -e "$EfeitoCorErro Erro ao instalar SSL para domínio $dominio_painel_video_player, verifique os logs na tela. $EfeitoFecha"
echo
read -n 1 -s -r -p "Pressione qualquer tecla para continuar..."

fi

systemctl restart httpd
systemctl restart php-fpm

echo
echo -e "$EfeitoCorAlerta $vversao $EfeitoFecha"
echo
echo -e "$EfeitoCorAlerta Porta SSH: $porta_ssh $EfeitoFecha"
echo
echo -e "$EfeitoCorTitulo ######################################################## $EfeitoFecha"
echo -e "$EfeitoCorAlerta FTP: $dominio_painel_video $EfeitoFecha"
echo -e "$EfeitoCorAlerta Usuario FTP: painelvideo $EfeitoFecha"
echo -e "$EfeitoCorAlerta Senha FTP: $senha_ftp $EfeitoFecha"
echo -e "$EfeitoCorTitulo ######################################################## $EfeitoFecha"
echo -e "$EfeitoCorAlerta Senha Root MySQL: $senha_root_mysql $EfeitoFecha"
echo -e "$EfeitoCorAlerta Usuário MySQL: painelvideo $EfeitoFecha"
echo -e "$EfeitoCorAlerta Senha MySQL: $senha_painel_mysql $EfeitoFecha"
echo -e "$EfeitoCorAlerta Banco MySQL: video $EfeitoFecha"
echo -e "$EfeitoCorTitulo ######################################################## $EfeitoFecha"
echo -e "$EfeitoCorAlerta URL Painel: https://$dominio_painel_video/admin/login $EfeitoFecha"
echo -e "$EfeitoCorAlerta Login: admin $EfeitoFecha"
echo -e "$EfeitoCorAlerta Senha: $senha_admin_painel $EfeitoFecha"
echo
echo -e "$EfeitoCorAlerta Painel Video: /home/painelvideo/public_html $EfeitoFecha"
echo -e "$EfeitoCorAlerta Players: /home/painelvideo/public_html/player $EfeitoFecha"
echo -e "$EfeitoCorTitulo ######################################################## $EfeitoFecha"
echo
echo -e "$EfeitoCorOK Instalacao do servidor concluida. $EfeitoFecha"
echo
echo

fi

if [ x`echo "$1 $2" | grep -c "\-\-ssl"` = x1 ]; then

echo -e "$EfeitoCorAlerta Informe o domínio do painel de Video $EfeitoFecha"
read -p 'Domínio Video: ' dominio_painel_video

echo -e "$EfeitoCorAlerta Informe o domínio do player de Video $EfeitoFecha"
read -p 'Domínio Player Video: ' dominio_painel_video_player

echo -e "$EfeitoCorAlerta Será configurado o SSL para $dominio_painel_video (painel), $dominio_painel_video_player (player) o DNS já deve estar propagado ou terá problemas na hora da instalação $EfeitoFecha"

echo
read -n 1 -s -r -p "Pressione qualquer tecla para continuar..."
echo

systemctl stop httpd

vversao=`wget -q -O - http://cesar.a2web1.srv.br/versao.txt`

certbot -n --agree-tos --register-unsafely-without-email certonly --standalone -d $dominio_painel_video

certbot -n --agree-tos --register-unsafely-without-email certonly --standalone -d $dominio_painel_video_player

if [ -f "/etc/letsencrypt/live/$dominio_painel_video/cert.pem" ]; then

cat <<EOT >> /etc/httpd/conf.d/$dominio_painel_video.conf

NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot /home/painelvideo/public_html
    ServerName $dominio_painel_video

    ErrorLog logs/ssl_error_log
    TransferLog logs/ssl_access_log
    LogLevel warn

    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
    SSLCertificateFile /etc/letsencrypt/live/$dominio_painel_video/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/$dominio_painel_video/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/$dominio_painel_video/chain.pem

    SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

</VirtualHost>

EOT

else

echo -e "$EfeitoCorErro Erro ao instalar SSL para domínio $dominio_painel_video, verifique os logs na tela. $EfeitoFecha"
echo
read -n 1 -s -r -p "Pressione qualquer tecla para continuar..."

fi

if [ -f "/etc/letsencrypt/live/$dominio_painel_video/cert.pem" ]; then

cat <<EOT >> /etc/httpd/conf.d/$dominio_painel_video_player.conf

NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot /home/painelvideo/public_html/player
    ServerName $dominio_painel_video_player

    ErrorLog logs/ssl_error_log
    TransferLog logs/ssl_access_log
    LogLevel warn

    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
    SSLCertificateFile /etc/letsencrypt/live/$dominio_painel_video_player/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/$dominio_painel_video_player/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/$dominio_painel_video_player/chain.pem

    SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

</VirtualHost>

EOT

else

echo -e "$EfeitoCorErro Erro ao instalar SSL para domínio $dominio_painel_video_player, verifique os logs na tela. $EfeitoFecha"
echo
read -n 1 -s -r -p "Pressione qualquer tecla para continuar..."

fi

systemctl restart httpd

echo
echo -e "$EfeitoCorOK Instalação concluída! $EfeitoFecha"
echo

fi