286 lines
9.9 KiB
Bash
286 lines
9.9 KiB
Bash
#!/bin/bash
|
|
ROOTS="0"
|
|
if command -v bds >/dev/null 2>&1;then
|
|
echo "..."
|
|
else
|
|
echo "o comando bsd não foi indentificado, verifique se o bds-common está instalado, continuando ..."
|
|
fi
|
|
if [ "$EUID" -ne $ROOTS ]; then
|
|
echo "Você não está executando o script com root ou sudo, por favor execute de novo o com: $0 $1"
|
|
exit 23
|
|
fi
|
|
if [[ -e /home/$SUDO_USER/bds_maneger.json ]];then
|
|
test
|
|
else
|
|
echo "Por favor coloque um aquivo com o nome install.json na pasta /etc/bds-maneger ou se não, copia e renomeia o arquivo exemplo_install.jsonc"
|
|
exit 127
|
|
fi
|
|
if ! cat /home/$SUDO_USER/bds_maneger.json | grep -q '//';then
|
|
echo "You install.json have coment lines"
|
|
exit 127
|
|
fi
|
|
# --------------- Codigo ------------------------------
|
|
TMP=/tmp/Minecraft-temp
|
|
mkdir $TMP &> /dev/null
|
|
DOMAINTEST=$(cat "/home/$SUDO_USER/bds_maneger.json" | jq ".pages.domain" | sed 's|"||g')
|
|
IPDOMAIN="$([ $DOMAINTEST = 'null' ] && wget -qO- http://ipecho.net/plain || echo $DOMAINTEST)"
|
|
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)"
|
|
IP_V6="$(ifconfig | grep "inet6" | awk -F' ' '{print $2}' | awk '{print $1}' | head -1) "
|
|
PUBLIC_IP="$(wget -qO- http://ipecho.net/plain)"
|
|
# -------------------------------------------------------------------------------------
|
|
|
|
# As opções como comandos - init
|
|
startserver(){
|
|
if ! screen -list | grep -q "bedrock"; then
|
|
echo "We are stopping your server!"
|
|
rm -rf /tmp/mcpe.txt
|
|
screen -L -Logfile /tmp/mcpe.txt -dmS bedrock bds
|
|
else
|
|
echo "This does not work with Minecraft Bedrock Server in the background"
|
|
fi
|
|
}
|
|
|
|
stopserver(){
|
|
echo "We are stopping your server!"
|
|
screen -S bedrock -p 0 -X stuff 'stop\n'
|
|
if whiptail --title "do you want me to backup your Worlds?" --yesno "Yes e No." 10 50
|
|
then
|
|
bds-backup
|
|
else
|
|
echo "ok, there will be no backup of your Worlds!"
|
|
fi
|
|
}
|
|
|
|
addservice(){
|
|
echo "Creating the settings to start on the system"
|
|
cp /opt/bds-maneger/start-on-system.sh /etc/init.d/bds
|
|
chmod a+x /etc/init.d/bds;
|
|
update-rc.d bds defaults
|
|
update-rc.d bds enable
|
|
echo "The do Minecraft Bedrock Server is starting with system, help commands:"
|
|
echo 'service bds start'
|
|
echo 'service bds stop'
|
|
echo 'service bds restart'
|
|
echo 'service bds backup'
|
|
echo "How to disable service to Minecraft Bedrock Server, select option 4 in the menu"
|
|
sleep 5s
|
|
}
|
|
|
|
removerservice(){
|
|
echo "Disabled Minecraft Bedrock Server in systemctl"
|
|
update-rc.d bds defaults-disabled
|
|
update-rc.d bds disable
|
|
echo "Removing Minecraft on folder init.d"
|
|
rm -rf /etc/init.d/bds
|
|
}
|
|
|
|
installnginx(){
|
|
#Instalação do nginx
|
|
echo "Installing the nginx server"
|
|
apt update &> /dev/null
|
|
apt install nginx -y &> /dev/null
|
|
|
|
# Pegando as config
|
|
echo "Now settings web pages to add Minecraft server list (simples html)"
|
|
|
|
PORTAD="$(cat '/etc/BDS-Common/server.properties'|grep 'server-port='|sed 's|server-port=||g'|head -1)"
|
|
PORTADv6="$(cat '/etc/BDS-Common/server.properties'|grep 'server-portv6='|sed 's|server-portv6=||g'|head -1)"
|
|
MAPANAME="$(cat '/etc/BDS-Common/server.properties'|grep 'level-name='|sed 's|level-name=||g'|head -1)"
|
|
|
|
# Montando as Configurações
|
|
cat /opt/bds-maneger/html-files/index.html |sed "s|MAINSERVERNAME|$MAPANAME|g"|sed "s|ENDEREÇODOSERVIDOROUIP|$IPDOMAIN|g"|sed "s|PORTASERVERv6|$PORTADv6|g"|sed "s|PORTASERVER|$PORTAD|g" > /var/www/Minecraft/index.html
|
|
}
|
|
|
|
smbftp(){
|
|
echo "Installing the samba and vsftpd"
|
|
# vsftp
|
|
apt install -y vsftpd samba &> /dev/null
|
|
|
|
echo "freeing root access on the ftp server"
|
|
#config
|
|
sed -i "s|root||g" "/etc/ftpusers"
|
|
|
|
echo "Ending the settings"
|
|
rm /etc/samba/smb.conf
|
|
cp -rf /opt/bds-maneger/smb.conf /etc/samba/
|
|
cp -rf /opt/bds-maneger/vsftp.conf /etc/vsftpd.conf
|
|
|
|
echo "Restarting service the do samba (Windows Share)"
|
|
service smbd restart
|
|
echo "Restarting service the do vsftpd (FTP Server)"
|
|
service vsftpd restart
|
|
|
|
echo "we're done the settings do samba and vsftpd"
|
|
echo "To add user in ftp server just add one user in system"
|
|
sleep 2s
|
|
echo "To add user in smb (Windows Share) just user smbpass -a <USER>"
|
|
}
|
|
|
|
|
|
oldtonew(){
|
|
echo "Vamos começar!!!"
|
|
read -rp "A onde está a instalação da versão antiga? " -e -i "/home/minecraft" oldtonewpath
|
|
if [ -d $oldtonewpath ]
|
|
then
|
|
echo "Fazendo Backup!!!"
|
|
zip -rqq /etc/BDS-Common/OLDEST_bysh23-$(TZ=UTC+3 date +"%d-%m-%Y_%H-%M-%S").zip -r $oldtonewpath
|
|
echo "Copiando os mapas"
|
|
cp -rf $oldtonewpath/worlds/./ /etc/BDS-Common/worlds
|
|
echo "Copiando as Configurações, whitelist e permissions."
|
|
cp -rf $oldtonewpath/whitelist.json /etc/BDS-Common/
|
|
cp -rf $oldtonewpath/permissions.json /etc/BDS-Common/
|
|
cp -rf $oldtonewpath/server.properties /etc/BDS-Common/
|
|
LINESSs="$(($(tput lines) - 5))"
|
|
COLLSs="$(($(tput cols) - 10))"
|
|
CONFIRMOLDTONEW="$(whiptail --cancel-button "Sair" --title "" \
|
|
--menu "" --fb $LINESSs $COLLSs 2 \
|
|
"1" "Não Apagar" \
|
|
"2" "Apagar" 3>&1 1>&2 2>&3)"
|
|
case $CONFIRMOLDTONEW in
|
|
2) rm -rf $oldtonewpath ;;
|
|
1) echo não vamos remover;;
|
|
esac
|
|
echo "Terminamos"
|
|
else
|
|
echo "O diretorio não existe"
|
|
exit 23
|
|
fi
|
|
}
|
|
|
|
|
|
crontab-config(){
|
|
crontab -l > /tmp/cront
|
|
if ! cat /tmp/cront | grep -q '/etc/init.d/bds backup';then
|
|
echo "Your have one crontab config"
|
|
else
|
|
# MIN="0"
|
|
echo "Select Number) for to minute"
|
|
select MIN in '*' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
|
do break;done
|
|
#
|
|
# HOUR="23"
|
|
echo "Select Number) for to Hour"
|
|
select HOUR in '*' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
|
do break;done
|
|
#
|
|
# DAYMONTH="*"
|
|
echo "Select Number) for to month day number"
|
|
select DAYMONTH in '*' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
|
do break;done
|
|
#
|
|
# MONTH="*"
|
|
echo "Select Number) for to Month number"
|
|
select MONTH in '*' 1 2 3 4 5 6 7 8 9 10 11 12
|
|
do break;done
|
|
#
|
|
# DAYWEEK="*"
|
|
echo "Select Number) for to week day"
|
|
select DAYWEEK in '*' 1 2 3 4 5 6
|
|
do break;done
|
|
|
|
echo "$MIN $HOUR $DAYMONTH $MONTH $DAYWEEK /etc/init.d/bds backup" >> /tmp/cront
|
|
crontab /tmp/cront
|
|
fi
|
|
}
|
|
|
|
|
|
speedtest_internet(){
|
|
speedtest-cli > /tmp/speedtest.txt
|
|
DOWN="$(cat /tmp/speedtest.txt | grep 'Download:'|sed 's|Download:||g'|sed 's|Mbit/s||g'|sed 's| ||g'|sed -e 's|\.| |g'|awk '{print $1}')"
|
|
UPLO="$(cat /tmp/speedtest.txt | grep 'Upload:'|sed 's|Upload:||g'|sed 's|Mbit/s||g'|sed 's| ||g'|sed -e 's|\.| |g'|awk '{print $1}')"
|
|
if ! (($DOWN>10));then
|
|
echo "Temos uma internet rasoavel para Download"
|
|
else
|
|
echo "Não temos uma internet recomendada para Download"
|
|
fi
|
|
#
|
|
if ! (($UPLO>10));then
|
|
echo "Temos uma internet rasoavel para Upload"
|
|
else
|
|
echo "Não temos uma internet recomendada para Upload"
|
|
fi
|
|
}
|
|
|
|
# As opções como comandos - end
|
|
|
|
figlet Minecraft Bedrock
|
|
echo "By Sh23"
|
|
|
|
for asss in {0..10}
|
|
do
|
|
if [ $asss = 10 ]
|
|
then
|
|
break
|
|
else
|
|
echo -ne "\respere um pouco "
|
|
sleep 0.1s
|
|
echo -ne "\respere um pouco . "
|
|
sleep 0.1s
|
|
echo -ne "\respere um pouco .. "
|
|
sleep 0.1s
|
|
echo -ne "\respere um pouco ..."
|
|
sleep 0.1s
|
|
fi
|
|
done
|
|
|
|
while [ true ]
|
|
do
|
|
|
|
if [ $nogui = 'true' ]
|
|
then
|
|
|
|
echo "Seu endereço IPv4: $IP_V4"
|
|
echo "Seu endereço IPv6: $IP_V6"
|
|
echo "Seu IP Publico: $PUBLIC_IP"
|
|
echo "Pasta dos Arquivos: /etc/BDS-Common"
|
|
echo "Porta do Servido: $PORTAD"
|
|
echo "Dominio ou IP que será Utilizado: $IPDOMAIN"
|
|
read -rp "
|
|
1: Iniciar o Servidor manualmente
|
|
2: Para o Servidor manualmente
|
|
3: Adicionar um serviço para iniciar junto com o sistema
|
|
4: Remover o serviço que iniciar o BDS junto com sistema
|
|
5: Instalar o nginx para ter uma pagina para adionar o servidor via navegador
|
|
6: Instalar o servidor samba e ftp para acesso remoto
|
|
7: Atualizando antigas versões para a nova (Isso caso voçê tenha usado os pacotes bds e bds-install)
|
|
|
|
|
|
|
|
Qual é Sua Opção: " -e -i "" LE
|
|
|
|
else
|
|
LINESS="$(($(tput lines) - 5))"
|
|
COLLS="$(($(tput cols) - 10))"
|
|
|
|
LE="$(whiptail --cancel-button "Sair" --title "Minecraft Bedrock Server Maneger" \
|
|
--backtitle "Pasta dos Arquivos: /etc/BDS-Common, Dominio/IP que será Utilizado: $IPDOMAIN" \
|
|
--menu "Seu Endereço Publico: $PUBLIC_IP , Seu endereço Iv4: $IP_V4 , Seu endereço IPv6: $IP_V6" --fb $LINESS $COLLS 10 \
|
|
"1" "Iniciar o Servidor manualmente" \
|
|
"2" "Para o Servidor manualmente" \
|
|
"3" "Adicionar um serviço para iniciar junto com o sistema" \
|
|
"4" "Remover o serviço que iniciar o BDS junto com sistema" \
|
|
"5" "Instalar o nginx para ter uma pagina para adionar o servidor via navegador" \
|
|
"6" "Instalar o servidor samba e ftp para acesso remoto" \
|
|
"7" "Atualizando antigas versões para a nova, Isso caso voçê tenha usado os pacotes bds e bds-install" 3>&1 1>&2 2>&3)"
|
|
|
|
fi
|
|
|
|
#
|
|
case $LE in
|
|
1) startserver;;
|
|
2) stopserver;;
|
|
3) addservice;;
|
|
4) removerservice;;
|
|
5) installnginx;;
|
|
6) smbftp;;
|
|
7) oldtonew;;
|
|
*) echo "saindo ...";break
|
|
esac
|
|
echo "OK";sleep 1s
|
|
done
|
|
echo "--------------------------"
|
|
# --------------- Codigo ------------------------------
|
|
echo " "
|
|
echo "qualquer erro no script me comunique no https://github.com/Sirherobrine23/Minecraft-Bedrock-auto-install/issues"
|
|
echo " "
|
|
exit 0 |