457 lines
14 KiB
Bash
Executable File
457 lines
14 KiB
Bash
Executable File
#!/bin/bash
|
|
source progress_bar.sh
|
|
if [[ -e /etc/debian_version ]]; then
|
|
source /etc/os-release
|
|
OS=$ID # debian or ubuntu
|
|
else
|
|
echo "Você não tem instalado ou não esta com sistema Debian ou Ubuntu "
|
|
exit 1
|
|
fi
|
|
if [ "$(uname -m)" = "x86_64" ];then
|
|
echo "Processador (X64) AMD64, continuando"
|
|
else
|
|
echo "Seu processador não é uma AMD64 (X64) ele é um $(uname -m)"
|
|
exit 1
|
|
fi
|
|
|
|
REMOVE=$(pwd)
|
|
|
|
#Usuario
|
|
|
|
|
|
#Root
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "Você não está executando o script com root ou sudo"
|
|
exit 0
|
|
fi
|
|
if [[ $OS == 'ubuntu' ]]; then
|
|
echo "Ubuntu detectado instalando algumas recomendações espere ..."
|
|
apt install screen unzip dos2unix jq zip net-tools -y >>$USUARIO/log.txt 2>&1 ;
|
|
elif [[ $OS == 'debian' ]]; then
|
|
apt install screen unzip zip dos2unix jq net-tools -y >>$USUARIO/log.txt 2>&1 ;
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
|
|
#pode ser aqui ali ou DEBIAN
|
|
TMP=/home/Minecraft-temp
|
|
mkdir $TMP >>$USUARIO/log.txt 2>&1 ;
|
|
|
|
# Remoção dos arquivo de log
|
|
rm -rf $TMP/level.txt >>$USUARIO/log.txt 2>&1 ;
|
|
|
|
echo "o Diretorio do seu usuario é $USUARIO"
|
|
echo "Começamos ás $(TZ=UTC+3 date +"%H:%M:%S")"
|
|
echo " "
|
|
echo "--------------"
|
|
echo " "
|
|
|
|
# --------------- Codigo ------------------------------
|
|
|
|
|
|
variaveis_predefinidas(){
|
|
BDS="$(wget -qO- https://script.sirherobrine23.org/BDS.txt)"
|
|
echo "Atualmente temos os sequinte link download: $BDS"
|
|
USUARIO=$(echo $HOME)
|
|
if [[ -e installed.txt ]]; then
|
|
PATH_TO_INSTALL="$(cat installed.txt)"
|
|
echo "Depois voçê pode alterar o diretorio no arquivo 'installed.txt'"
|
|
echo " "
|
|
echo " "
|
|
else
|
|
read -rp "a onde vai ser instalado: " -e -i "/home/minecraft" PATH_TO_INSTALL
|
|
touch installed.txt -a $PATH_TO_INSTALL
|
|
echo "$PATH_TO_INSTALL" >> installed.txt
|
|
echo " "
|
|
echo " "
|
|
fi
|
|
|
|
cat $PATH_TO_INSTALL/server.properties | grep "level-name=" > /tmp/level.txt ; sed -i "s|level-name=||g" "/tmp/level.txt"
|
|
level=$(dos2unix /tmp/port.txt;cat /tmp/level.txt)
|
|
read -rp "Qual é o nome do Mapa (Só confimação do nome): " -e -i "$level" MAPA_DO_SERVIDOR
|
|
cat $PATH_TO_INSTALL/server.properties | grep "server-port=" > /tmp/port.txt ; sed -i "s|server-port=||g" "/tmp/port.txt"
|
|
PORTAD=$(dos2unix /tmp/port.txt;cat /tmp/port.txt)
|
|
|
|
}
|
|
|
|
json(){
|
|
PATH_TO_INSTALL="$(cat install.json | jq ".install.dir" | sed 's|"||g')"
|
|
BDS="$(wget -qO- $(cat install.json | jq ".global.url_download" | sed 's|"||g'))"
|
|
PORTAD="$(cat install.json | jq ".global.port" | sed 's|"||g')"
|
|
MAPA_DO_SERVIDOR="$(cat install.json | jq ".global.name_map" | sed 's|"||g')"
|
|
level="$(cat install.json | jq ".global.name_map" | sed 's|"||g')"
|
|
}
|
|
|
|
# Usando arquivo json
|
|
|
|
if [[ -e install.json ]];then
|
|
json
|
|
else
|
|
variaveis_predefinidas
|
|
fi
|
|
|
|
limpando(){
|
|
rm mcpe.zip
|
|
rm -rf mcpe/
|
|
}
|
|
|
|
installbysh23(){
|
|
|
|
|
|
#banner
|
|
cat banner.txt;
|
|
# Prerequisite
|
|
echo " ";
|
|
draw_progress_bar 1
|
|
#Download do arquivos servidor
|
|
echo "Baixando o Software do BDS";
|
|
wget "$BDS" -O mcpe.zip >>$USUARIO/log.txt 2>&1 ;
|
|
draw_progress_bar 2
|
|
echo "Descompactando o software do BDS";
|
|
draw_progress_bar 5
|
|
unzip mcpe.zip -d mcpe/ >>$USUARIO/log.txt 2>&1 ;
|
|
rm -rf mcpe.zip;
|
|
draw_progress_bar 10
|
|
|
|
#config
|
|
echo "Configuração Base"
|
|
rm -rf mcpe/server.properties >>$USUARIO/log.txt 2>&1 ;
|
|
rm -rf mcpe/whitelist.json >>$USUARIO/log.txt 2>&1 ;
|
|
cp -r ./server.properties mcpe/ >>$USUARIO/log.txt 2>&1 ;
|
|
cp -r ./whitelist.json mcpe/ >>$USUARIO/log.txt 2>&1 ;
|
|
draw_progress_bar 15
|
|
#Movendo
|
|
echo "Criando e Movendo para o $PATH_TO_INSTALL"
|
|
rm -rf $PATH_TO_INSTALL
|
|
draw_progress_bar 20
|
|
mkdir $PATH_TO_INSTALL
|
|
draw_progress_bar 30
|
|
cp -r mcpe/* $PATH_TO_INSTALL/
|
|
draw_progress_bar 50
|
|
echo "Limpando alguns arquivos"
|
|
rm -rf mcpe/
|
|
echo "O log está no arquivo $USUARIO/log.txt"
|
|
draw_progress_bar 100
|
|
}
|
|
updatebysh23(){
|
|
cat banner.txt
|
|
|
|
#Preparando
|
|
block_progress_bar 1
|
|
echo "Backup?"
|
|
read -rp "Nome do backup: " -e -i "$(TZ=UTC+3 date +"%d-%m-%Y")" BACKUP
|
|
draw_progress_bar 20
|
|
PATH_TO_BACKUP="$HOME/MCPE-BACKUP"
|
|
echo "$PATH_TO_BACKUP"
|
|
mkdir "$PATH_TO_BACKUP"
|
|
|
|
echo "verificando se a arquivos antingos no $(pwd)"
|
|
if [[ -d mcpe/ ]]; then
|
|
rm -rf mcpe/
|
|
fi
|
|
if [[ -e mcpe.zip ]];then
|
|
rm -rf mcpe.zip
|
|
fi
|
|
draw_progress_bar 34
|
|
|
|
# backup
|
|
voltando="$(pwd)"
|
|
cd $PATH_TO_INSTALL
|
|
zip -q "$PATH_TO_BACKUP/$BACKUP.zip" -r *
|
|
cp -r * $PATH_TO_BACKUP/
|
|
cd $voltando
|
|
|
|
# BDS DOWNLOADS
|
|
draw_progress_bar 48
|
|
wget -q "$BDS" -O mcpe.zip
|
|
|
|
# descompactando
|
|
draw_progress_bar 50
|
|
unzip mcpe.zip -d mcpe > /dev/null
|
|
|
|
# configurando
|
|
if [ $? -eq 0 ];then
|
|
echo "Whitelist.json"
|
|
rm mcpe/whitelist.json
|
|
cp $PATH_TO_BACKUP/whitelist.json mcpe/whitelist.json
|
|
else
|
|
echo "$?"
|
|
echo "Saindo error ao extrair os arquivos"
|
|
exit 127
|
|
fi
|
|
|
|
if [ $? -eq 0 ];then
|
|
echo "Server.properties"
|
|
rm mcpe/server.properties
|
|
cp $PATH_TO_BACKUP/server.properties mcpe/server.properties
|
|
else
|
|
echo "Saindo error no comando anterior"
|
|
exit 127
|
|
fi
|
|
|
|
if [ $? -eq 0 ];then
|
|
echo "Mapas/Worlds"
|
|
rm -r mcpe/worlds
|
|
cp $PATH_TO_BACKUP/worlds mcpe/worlds
|
|
else
|
|
echo "Saindo error no comando anterior"
|
|
exit 127
|
|
fi
|
|
|
|
if [ -d $PATH_TO_INSTALL ];then
|
|
"Movendo a instalação antiga para a pasta /tmp/"
|
|
mv -f $PATH_TO_INSTALL /tmp/
|
|
fi
|
|
|
|
#movendo
|
|
cp -rf mcpe/* "$PATH_TO_INSTALL"
|
|
limpando
|
|
}
|
|
backupbysh23(){
|
|
if [ -e /usr/sbin/BDS ] ; then
|
|
echo "Para fazer o backup coloque sim (yes) e de [enter], caso não queira, não (no) e de [enter]"
|
|
read -rp "Vai querer fazer o backup? " -e -i "sim" BC
|
|
case $BC in
|
|
sim | yes ) touch $PATH_TO_INSTALL/backup.txt -a $PATH_TO_INSTALL ; echo "Vamos configurar agora o Gdrive, precisamos fazer um login na sua conta do google. nenhum dado será amarzenado pelo script." ; sleep2 ; gdrive about ;;
|
|
nao | no ) exit;;
|
|
* ) echo "não houve escolha, saindo ..."; exit
|
|
esac
|
|
else
|
|
echo "não podemos cria agora, por favor execute primeiro o --fundo"
|
|
fi
|
|
}
|
|
ipbysh23(){
|
|
#Comando --ip variaveis
|
|
IP_V4=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
|
|
SEARCH_IPV6=$(ip -6 route ls | grep default | grep -Po '(?<=dev )(\S+)' | head -1)
|
|
IP_V6=$(ifconfig $SEARCH_IPV6 | grep "inet6" | awk -F' ' '{print $2}' | awk '{print $1}')
|
|
IP_PUBLICO=$(wget -qO- http://ipecho.net/plain)
|
|
#Echo's
|
|
echo "Seu IPv4 é $IP_V4 para Jogar localmente , e o Seu IPv6 é $(echo -ne $IP_V6)"
|
|
echo " "
|
|
echo "Caso Queira Jogar Remotamento com alguém Abra as Portas 19132 e 19133 no seu Roteador ou seu Firewall, seu IPv4 Publico é $IP_PUBLICO"
|
|
echo "Também verifique se sua operadora ou provedor libera as portas do servidor. contate-os"
|
|
echo " ";
|
|
}
|
|
apache2-installbysh23(){
|
|
|
|
#Instalação do apache2
|
|
echo "Instalando o Apache2"
|
|
apt update >> /dev/null 2>&1
|
|
apt install apache2 -y >> /dev/null 2>&1
|
|
|
|
# Removendo pasta HTML e Adicionando denovo
|
|
rm -rf /var/www/html/
|
|
mkdir /var/www/html/
|
|
|
|
# Pegando as config
|
|
echo "Agora vamos começar a configurar o nova pagina do Apache"
|
|
sleep 2
|
|
echo "Vamos precicar de algumas informações como:"
|
|
echo "Dominio caso você tenha"
|
|
echo "nome que aparacera na Pagina. etc ..."
|
|
sleep 3
|
|
|
|
read -rp "Qual será o dominio ou nos da o IP publico: " -e -i "$(wget -qO- http://ipecho.net/plain)" IPDOMAIN
|
|
read -rp "Qual é o nome que aparacera na pagina: " -e -i "$(cat /tmp/level.txt)" MAINSERVERNAME
|
|
|
|
# Montando as Configurações
|
|
sed -i "s|ENDEREÇODOSERVIDOROUIP|$IPDOMAIN|g" "./html-files/index.html"
|
|
sed -i "s|MAINSERVERNAME|$MAPA_DO_SERVIDOR|g" "./html-files/index.html"
|
|
sed -i "s|PORTASERVER|$PORTAD|g" "./html-files/index.html"
|
|
|
|
# Movendo as configurações
|
|
cp -rf ./html-files/* /var/www/html/
|
|
}
|
|
externobysh23(){
|
|
|
|
# vsftp and Samba
|
|
apt install -y vsftpd samba >> /dev/null 2>&1 ;
|
|
|
|
#config
|
|
sed -i "s|PATHTOISNTALL|$PATH_TO_INSTALL|g" "./smb.conf"
|
|
sed -i "s|root||g" "/etc/ftpusers"
|
|
|
|
rm /etc/samba/smb.conf
|
|
cp -rf ./smb.conf /etc/samba/
|
|
cp -rf ./vsftp.conf /etc/vsftpd.conf
|
|
|
|
service smbd restart
|
|
service vsftpd restart
|
|
|
|
echo "Para adicionar um usuario no Smb use smbpasswd -a username"
|
|
echo "Para usar o ftp não precisar de nada a mais para configura só ter um usuario no sistema"
|
|
|
|
}
|
|
|
|
#
|
|
|
|
fundobysh23(){
|
|
echo " "
|
|
rm /usr/sbin/BDS
|
|
rm -rf /tmp/level.txt
|
|
rm -rf /sbin/mcpe
|
|
rm -rf /usr/sbin/BDS
|
|
rm -rf /usr/sbin/mcpe
|
|
|
|
# -- Config --
|
|
cp fundo.sh /tmp/
|
|
MINE2Sh23="/home/MCPE-Backups"
|
|
read -rp "Qual é o ID da pasta no google Drive caso fará backup para A Nuven (Exemplo: 1-FWzQJWhhJK_00ETU4uVOg6R5c5p_yMP)? " -e -i "" ID
|
|
read -rp "Aonde você vai quere colocar os Backups Locais (Caso queira)? " -e -i "$MINE2Sh23" MINE2Sh23
|
|
mkdir $MINE2Sh23
|
|
sed -i "s|ID|$ID|g" "/tmp/fundo.sh";
|
|
sed -i "s|MINE|$PATH_TO_INSTALL|g" "/tmp/fundo.sh";
|
|
sed -i "s|NAME|$MAPA_DO_SERVIDOR|g" "/tmp/fundo.sh";
|
|
sed -i "s|2MINESh23|$MINE2Sh23|g" "/tmp/fundo.sh";
|
|
cp -rf /tmp/fundo.sh /usr/sbin/BDS
|
|
chmod a+x /usr/sbin/BDS
|
|
# -- Config --
|
|
echo " "
|
|
}
|
|
sistemabysh23(){
|
|
|
|
wget "https://drive.google.com/uc?export=download&id=1UlemfOSQUxbxTFDriAeDV7o1hRwXcS43" -O /usr/bin/gdrive >>$USUARIO/log.txt 2>&1 ;
|
|
chmod a+x /usr/bin/gdrive
|
|
|
|
# ---------------------------------------
|
|
echo " "
|
|
rm -rf /usr/sbin/mcpe-server
|
|
rm -rf /sbin/mcpe-server
|
|
rm -rf /sbin/BDS
|
|
rm -rf /usr/sbin/BDS
|
|
rm -rf /tmp/level.txt
|
|
|
|
# -- Config --
|
|
cp fundo.sh /tmp/
|
|
MINE2Sh23="/var/www/html"
|
|
|
|
if [[ -e IDs.txt ]];then
|
|
ID="$(cat IDs.txt)"
|
|
else
|
|
read -rp "Qual é o ID da pasta no google Drive caso fará backup para A Nuven (Exemplo: 1-FWzQJWhhJK_00ETU4uVOg6R5c5p_yMP)? " -e -i "" ID
|
|
echo "$ID" > IDs.txt
|
|
dos2unix IDs.txt
|
|
fi
|
|
if [[ -e pasta.txt ]];then
|
|
MINE2Sh23="$(cat $HOME/pasta.txt)"
|
|
else
|
|
read -rp "Aonde você vai quere colocar os Backups Locais (Caso queira)? " -e -i "$MINE2Sh23" MINE2Sh23
|
|
echo $MINE2Sh23 > pasta.txt
|
|
dos2unix pasta.txt
|
|
fi
|
|
mkdir $MINE2Sh23
|
|
sed -i "s|IDSh23|$ID|g" "/tmp/fundo.sh";
|
|
sed -i "s|MINESh23|$PATH_TO_INSTALL|g" "/tmp/fundo.sh";
|
|
sed -i "s|NAMESh23|$MAPA_DO_SERVIDOR|g" "/tmp/fundo.sh";
|
|
sed -i "s|MINE2Sh23|$MINE2Sh23|g" "/tmp/fundo.sh";
|
|
cp -rf /tmp/fundo.sh /usr/sbin/BDS
|
|
chmod a+x /usr/sbin/BDS
|
|
# -- Config --
|
|
echo " "
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------
|
|
|
|
echo "Iniciando as Configurações do arquivo para Inicialização junto com o Sistema"
|
|
cp start-on-system.sh /tmp/systemsh23.sh;
|
|
sed -i "s|IDSh23|$ID|g" "/tmp/systemsh23.sh";
|
|
sed -i "s|MINESh23|$PATH_TO_INSTALL|g" "/tmp/systemsh23.sh";
|
|
sed -i "s|NAMESh23|$MAPA_DO_SERVIDOR|g" "/tmp/systemsh23.sh";
|
|
sed -i "s|MINE2Sh23|$MINE2Sh23|g" "/tmp/systemsh23.sh";
|
|
cp "/tmp/systemsh23.sh" "/etc/init.d/BDS";
|
|
echo "copiando o arquivo";
|
|
chmod a+x /etc/init.d/BDS;
|
|
update-rc.d BDS defaults
|
|
update-rc.d BDS enable
|
|
echo "pronto ele inicia junto com sistema, o comando abaixo pode ajudar"
|
|
echo " "
|
|
echo ' service BDS start|stop|restart'
|
|
echo " "
|
|
echo "Para desativar o Inicio altomatico execute $0 --remover-service ou $0 -R"
|
|
echo "Para quem quiser iniciar manualmente:"
|
|
echo "Execute 'screen BDS'"
|
|
echo "E para deixar o servidor em segundo plano aperte CRTL + A + D. deixara em segundo plano para voltar basta executar o comando screen -r"
|
|
}
|
|
#
|
|
removerservicesh23(){
|
|
update-rc.d BDS defaults-disabled
|
|
update-rc.d BDS disable
|
|
rm -rf /etc/init.d/BDS
|
|
}
|
|
#
|
|
script-update(){
|
|
curl https://script.sirherobrine23.org/BDS-Script.sh | bash
|
|
}
|
|
crontabsh23(){
|
|
|
|
|
|
read -rp "Por favor nos informe uma data via crontab!(Exemplo 0 23 * * *, voce tamém pode usar o https://crontab.guru/#0_23_*_*_*) " -e -i "0 23 * * *" CRON
|
|
mkdir /bc/
|
|
#
|
|
if [[ -e IDs.txt ]];then
|
|
ID="$(cat IDs.txt)"
|
|
else
|
|
read -rp "Qual é o ID da pasta no google Drive caso fará backup para A Nuven (Exemplo: 1-FWzQJWhhJK_00ETU4uVOg6R5c5p_yMP)? " -e -i "" ID
|
|
echo "$ID" > IDs.txt
|
|
dos2unix IDs.txt
|
|
fi
|
|
if [[ -e pasta.txt ]];then
|
|
MINE2Sh23="$(cat pasta.txt)"
|
|
else
|
|
read -rp "Aonde você vai quere colocar os Backups Locais (Caso queira)? " -e -i "$MINE2Sh23" MINE2Sh23
|
|
echo $MINE2Sh23 > pasta.txt
|
|
dos2unix pasta.txt
|
|
fi
|
|
mkdir $MINE2Sh23
|
|
cp -rf backup-mcpe.sh /tmp/backup.sh
|
|
sed -i "s|IDSh23|$ID|g" "/tmp/fundo.sh";
|
|
sed -i "s|MINESh23|$PATH_TO_INSTALL|g" "/tmp/backup.sh";
|
|
sed -i "s|NAMESh23|$MAPA_DO_SERVIDOR|g" "/tmp/backup.sh";
|
|
sed -i "s|MINE2Sh23|$MINE2Sh23|g" "/tmp/backup.sh";
|
|
rm -rf /bc/backup-mcpe.sh
|
|
cp -rf /tmp/backup.sh /bc/backup-mcpe.sh
|
|
#
|
|
echo "adiciona essa linha a seguir no crontab"
|
|
echo "$CRON bash /bc/backup-mcpe.sh"
|
|
read -rp "De [ENTER] para continua" -e -i "" NULL
|
|
crontab -e
|
|
}
|
|
|
|
|
|
# Escolha -------------- *** -----------
|
|
enable_trapping
|
|
# Create progress bar
|
|
setup_scroll_area
|
|
case $1 in
|
|
--install | -i ) installbysh23 ;;
|
|
--update | -u ) updatebysh23 ;;
|
|
--backup | -b ) backupbysh23 ;;
|
|
--start-on-system | -s ) sistemabysh23 ;;
|
|
--ip | -P ) ipbysh23 ;;
|
|
--apache2 | --page | -a ) apache2-installbysh23 ;;
|
|
--files | -f ) externobysh23 ;;
|
|
--update-script | -ds ) script-update ;;
|
|
--remover-service | -R ) removerservicesh23 ;;
|
|
--crontab | -c ) crontabsh23 ;;
|
|
--remover | -r ) rm -rf "$REMOVE";;
|
|
--help | -h ) cat help.txt ; echo " ";;
|
|
--teste ) echo "$0 $1 $2 $3 $4 $5";;
|
|
*) echo "Exeute $0 --help - o comando $0 $1 não existe aqui";echo " "
|
|
esac
|
|
destroy_scroll_area
|
|
|
|
|
|
# --------------- Codigo ------------------------------
|
|
|
|
echo " "
|
|
echo "--------------"
|
|
echo " "
|
|
echo "qualquer erro no script me comunique no https://github.com/Sirherobrine23/Minecraft-Bedrock-auto-install/issues"
|
|
echo "Terminamos as $(TZ=UTC+3 date +"%H:%M:%S")"
|
|
rm -rf mcpe.zip
|
|
echo " "
|