Merge branch 'master' of yunohost:NotreAmiLeCube/nalc-server

This commit is contained in:
sys4-fr 2018-04-01 13:21:47 +02:00
commit 647b4db86f
2 changed files with 100 additions and 30 deletions

31
backup.sh Executable file
View File

@ -0,0 +1,31 @@
#!/bin/bash
bak=/home/minetest/nalc-server-0.4/backup
if [[ ! -d $bak ]]; then
mkdir $bak
fi
bak_tmp=/var/tmp/nalc-0.4_dump
if [[ ! -d $bak_tmp ]]; then
mkdir $bak_tmp
fi
rm -r /home/minetest/nalc-server-0.4/minetest/worlds/nalc/rollback.sqlite
tar -I pbzip2 -cvf $bak/world.tar.bz2 /home/minetest/nalc-server-0.4/minetest/worlds/nalc
pg_dump nalc-0.4 > $bak_tmp/nalc-0.4.sql
pg_dump players-nalc-0.4 > $bak_tmp/players-nalc-0.4.sql
if [[ -e $bak/dump_sql.tar.bz2 ]]; then
cd $bak
tar -jxvf dump_sql.tar.bz2
cd ..
fi
rdiff-backup --no-file-statistics $bak_tmp $bak
cd $bak
tar -I pbzip2 -cvf dump_sql.tar.bz2 --remove-files *.sql
cd ..
rm -rf $bak_tmp

View File

@ -25,9 +25,9 @@ usage() {
echo "--makeopt | -j : Passer des options à make."
echo "--ssh <user@host>: Identifiants ssh."
echo "--url <URL>: URL distante personnalisée."
echo -e "\tSi l'option --ssh est passée en option, il s'agira du chemin distant."
echo "--irrlicht | -i : Chemin personnalisé des sources irrlicht."
echo "--postgresql | -p : Si vous voulez que le serveur soit configuré avec postgresql"
echo -e "\tSi l'option --ssh est passée en option, il s'agira du chemin distant."
echo "Commandes :"
echo -e "\t0.5 : Installation du serveur avec minetest-0.5.x. Suivez les instructions..."
echo -e "\t0.4 : Installation du serveur avec minetest-0.4.x. Suivez les instructions..."
@ -67,17 +67,17 @@ postgresql() {
read -p "Indiquez le mot de passe : " pg_password
read -p "Indiquez le nom de la BDD à utiliser : " pg_dbname
echo "gameid = minetest_game" > worldmt.conf
echo "backend = postgresql" >> worldmt.conf
echo "player_backend = postgresql" >> worldmt.conf
echo "pgsql_connection = host=$pg_url user=$pg_user password=$pg_password dbname=$pg_dbname" >> worldmt.conf
echo "pgsql_player_connection = host=$pg_url user=$pg_user password=$pg_password dbname=players-$pg_dbname" >> worldmt.conf
echo "gameid = minetest_game" > world.mt
echo "backend = postgresql" >> world.mt
echo "player_backend = postgresql" >> world.mt
echo "pgsql_connection = host=$pg_url user=$pg_user password=$pg_password dbname=$pg_dbname" >> world.mt
echo "pgsql_player_connection = host=$pg_url user=$pg_user password=$pg_password dbname=players-$pg_dbname" >> world.mt
}
install_0.4() {
if [[ -d server-0.4 ]]; then
echo "Installation précédente détecté. Voulez-vous faire la mise à jour ?"
read -p "Continuer ? (y or n) " continuer
read -p "Votre choix ? (y, n, clean) " continuer
if [[ $continuer == "y" ]]; then
cd server-0.4
git pull
@ -85,6 +85,14 @@ install_0.4() {
git submodule update --remote --recursive
verif
cd ..
elif [[ $continuer == "clean" ]]; then
rm -rf server-0.4
git clone https://github.com/sys4-fr/server-nalc.git server-0.4
verif
cd server-0.4
git submodule update --init --recursive
verif
cd ..
else
echo "Mise à jour annulé."
fi
@ -128,11 +136,11 @@ install_minetest() {
fi
if [[ ! -d minetest ]]; then
local branch="-b master"
if [[ $ver == "0.4" ]]; then
git clone -b backport-0.4 https://github.com/minetest/minetest.git
else
git clone $URL/minetest.git
branch="-b backport-0.4"
fi
git clone $branch $URL/minetest.git
verif
fi
@ -146,7 +154,7 @@ install_minetest() {
}
install_minetest_game() {
if [[ -d minetest_game && ! $ver == "0.4" ]]; then
if [[ -d minetest_game ]]; then
echo "Installation précédente du jeux Minetest détecté."
read -p "Mettre à jour ? (y,n,clean,cancel) " continue
if [[ $continue == "y" ]]; then
@ -172,21 +180,16 @@ install_minetest_game() {
fi
if [[ ! -d minetest_game ]]; then
if [[ ! $ver == "0.4" ]]; then
git clone $URL/minetest_game.git
verif
echo "Clonage de minetest_game terminé."
else
ln -s $(pwd)/server-0.4/minetest_game minetest_game
local branch="-b master"
if [[ $ver == "0.4" ]]; then
branch="-b backport-0.4"
fi
elif [[ $ver == "0.4" ]]; then
if [[ -a minetest_game ]]; then
rm minetest_game
fi
ln -s $(pwd)/server-0.4/minetest_game minetest_game
git clone $branch $URL/minetest_game.git
verif
echo "Clonage de minetest_game terminé."
fi
if [[ ! -a minetest/games/minetest_game ]]; then
if [[ ! -L minetest/games/minetest_game ]]; then
ln -s $(pwd)/minetest_game minetest/games/minetest_game
echo "Lien symbolique minetest/games/minetest_game vers $(pwd)/minetest_game créé."
fi
@ -218,20 +221,57 @@ install_world() {
if [[ ! -d minetest/worlds/nalc ]]; then
mkdir -p minetest/worlds/nalc
if [[ $ver == "0.4" ]]; then
ln -s $(pwd)/server-0.4/worlds/minetestforfun/world.mt minetest/worlds/nalc/world.mt
else
ln -s $(pwd)/world.mt minetest/worlds/nalc/world.mt
if [[ -n $pg_dbname ]]; then
createdb $pg_dbname
createdb players-$pg_dbname
fi
ln -s $(pwd)/world.mt minetest/worlds/nalc/world.mt
fi
}
install_mods() {
if [[ $ver == "0.4" ]]; then
local i=0
local md[1]="" # Mods to disable
for mod in mysql_auth watershed mobs_old magicmithril obsidian eventobjects player_inactive random_messages irc irc_commands profilerdumper profnsched; do
i=$(( $i+1 ))
md[$i]=$mod
done
if [[ -d minetest/mods ]]; then
rm -rf minetest/mods
ln -s $(pwd)/server-0.4/mods minetest/mods
fi
if [[ -a world.mt && -z $pg_dbname ]]; then
rm world.mt
cp worldmt.conf world.mt
fi
ls server-0.4/mods | while read -r mod; do
if [[ -a server-0.4/mods/$mod/modpack.txt ]]; then
ls server-0.4/mods/$mod | while read -r submod; do
if [[ -d server-0.4/mods/$mod/$submod ]]; then
local mod_enable="true"
for (( modn=1; modn<=$i; modn++ )); do
if [[ ${md[$modn]} == $submod ]]; then
mod_enable="false"
fi
done
echo "load_mod_$submod = $mod_enable" >> world.mt
fi
done
else
local mod_enable="true"
for (( modn=1; modn<=$i; modn++ )); do
if [[ ${md[$modn]} == $mod ]]; then
mod_enable="false"
fi
done
echo "load_mod_$mod = $mod_enable" >> world.mt
fi
done
else
if [[ -d nalc-server-mods ]]; then
echo "Le dossier de mods est déjà présent. Que souhaitez-vous faire ?"
@ -262,12 +302,11 @@ install_mods() {
# Recréation des liens symboliques et du fichier world.mt (dans tous les cas)
rm minetest/mods/*
if [[ -a world.mt ]]; then
if [[ -a world.mt && -z $pg_dbname ]]; then
rm world.mt
cp worldmt.conf world.mt
fi
cp worldmt.conf world.mt
if [[ -d custom/mods ]]; then
ls custom/mods | while read -r mod; do
if [[ -d custom/mods/$mod ]]; then