Reindent with tabs

This commit is contained in:
bri cassa 2025-03-17 16:38:52 +01:00
parent cfb302a00c
commit 035d34babd
7 changed files with 757 additions and 753 deletions

View File

@ -3,8 +3,12 @@
((lua-mode
(fill-column . 80)
(tab-width . 3)
(tab-width . 4)
(indent-tabs-mode . t)))
((sh-mode
(fill-column . 80)
(tab-width . 4)
(indent-tabs-mode . t)))

View File

@ -10,12 +10,12 @@ bak=$serverpath/backup
world=$serverpath/minetest/worlds/$worldname
if [[ ! -d $bak ]]; then
mkdir -p $bak
mkdir -p $bak
fi
bak_tmp=/var/tmp/$servername
if [[ ! -d $bak_tmp ]]; then
mkdir $bak_tmp
mkdir $bak_tmp
fi
cp $serverpath/minetest/minetest.conf $bak/
@ -39,9 +39,9 @@ log_dir=$serverpath/logs
[[ ! -d $log_dir ]] && mkdir $log_dir
pushd $log_dir
if [[ -f moredebug.log ]]; then
d=$(date +%Y-%m-%d.%H.%M.%S)
mv moredebug.log moredebug_$d.log
bzip2 moredebug_$d.log
tar --label=LOGS-$servername -rf moredebug-logs.tar --remove-files moredebug*.log.bz2
d=$(date +%Y-%m-%d.%H.%M.%S)
mv moredebug.log moredebug_$d.log
bzip2 moredebug_$d.log
tar --label=LOGS-$servername -rf moredebug-logs.tar --remove-files moredebug*.log.bz2
fi
popd

128
genmap.sh
View File

@ -5,75 +5,75 @@
# Script pour automatiser la création de la carte de nalc
strip() {
echo "$1" | cut -d \' -f 2
echo "$1" | cut -d \' -f 2
}
verif() {
if [ $? -gt 0 ]; then
echo "Erreur ! Arrêt du script."
exit 1
fi
if [ $? -gt 0 ]; then
echo "Erreur ! Arrêt du script."
exit 1
fi
}
error() {
if [ -n "$1" ]; then
echo "ERREUR : $1 !"
else
echo "ERREUR : paramètres invalides !" >&2
echo "utilisez l'option -h pour en savoir plus" >&2
fi
exit 1
if [ -n "$1" ]; then
echo "ERREUR : $1 !"
else
echo "ERREUR : paramètres invalides !" >&2
echo "utilisez l'option -h pour en savoir plus" >&2
fi
exit 1
}
usage() {
echo "Usage : ./genmap.sh [-h|--help] server_path worldname destination_path"
echo "Génère la carte de nalc vers le fichier destination_path/nalc_map.png"
echo "Usage : ./genmap.sh [-h|--help] server_path worldname destination_path"
echo "Génère la carte de nalc vers le fichier destination_path/nalc_map.png"
}
action() {
[ -z "$1" ] && error "Argument manquant"
local serverpath=$(strip "$1")
[ ! -d "$serverpath" ] && error "Le répertoire $serverpath n'existe pas"
[ -z "$1" ] && error "Argument manquant"
local serverpath=$(strip "$1")
[ ! -d "$serverpath" ] && error "Le répertoire $serverpath n'existe pas"
[ -z "$2" ] && error "Nom du world manquant"
local world_name=$(strip "$2")
local world="$serverpath/minetest/worlds/$world_name"
[ ! -d "$world" ] && error "Le répertoire $world n'existe pas"
[ -z "$2" ] && error "Nom du world manquant"
local world_name=$(strip "$2")
[ -z "$3" ] && error "Chemin de destination manquant"
local destination=$(strip "$3")
[ ! -d "$destination" ] && error "Le répertoire $destination n'existe pas"
[ ! -d "$serverpath/minetestmapper" ] && error "minetestmapper ne semble pas installé"
[ ! -d "$serverpath/leaftest" ] && error "leaftest ne semble pas installé"
[ ! -e "$serverpath/colors.txt" ] && error "$serverpath/colors.txt manquant"
local world="$serverpath/minetest/worlds/$world_name"
[ ! -d "$world" ] && error "Le répertoire $world n'existe pas"
# Copie du dossier leaftest vers /tmp puis on l'exécute de là
local config="$serverpath/minetest/minetest.conf"
local workdir=$(mktemp -d "/tmp/minetest-mapper.XXXXXXXXX")
local spawn=$(grep "^static_spawnpoint" "$config" | tr -d " " | cut -f 2 -d "=");
local spawnx=$(cut -f 1 -d "," <<<$spawn)
local spawnz=$(cut -f 3 -d "," <<<$spawn)
local mapsize=12288
cp -a "$serverpath/leaftest" $workdir
cp "$serverpath/colors.txt" $workdir/leaftest
pushd $workdir/leaftest
MAPPERDIR="$serverpath/minetestmapper" \
MAPPERPARAMS="--colors $serverpath/colors.txt \
--min-y -25 --max-y 300" \
JOBNUM=$(nproc) \
$workdir/leaftest/mapper.sh "$world" $spawnx,$spawnz $mapsize
[ -z "$3" ] && error "Chemin de destination manquant"
local destination=$(strip "$3")
[ ! -d "$destination" ] && error "Le répertoire $destination n'existe pas"
# Copie de leaftest vers le dossier web distant normalement déjà monté
rm -rf "$destination/$world_name"
cp -rL $workdir/leaftest/www "$destination/$world_name"
popd
rm -rf $workdir
[ ! -d "$serverpath/minetestmapper" ] && error "minetestmapper ne semble pas installé"
[ ! -d "$serverpath/leaftest" ] && error "leaftest ne semble pas installé"
[ ! -e "$serverpath/colors.txt" ] && error "$serverpath/colors.txt manquant"
# Copie du dossier leaftest vers /tmp puis on l'exécute de là
local config="$serverpath/minetest/minetest.conf"
local workdir=$(mktemp -d "/tmp/minetest-mapper.XXXXXXXXX")
local spawn=$(grep "^static_spawnpoint" "$config" | tr -d " " | cut -f 2 -d "=");
local spawnx=$(cut -f 1 -d "," <<<$spawn)
local spawnz=$(cut -f 3 -d "," <<<$spawn)
local mapsize=12288
cp -a "$serverpath/leaftest" $workdir
cp "$serverpath/colors.txt" $workdir/leaftest
pushd $workdir/leaftest
MAPPERDIR="$serverpath/minetestmapper" \
MAPPERPARAMS="--colors $serverpath/colors.txt \
--min-y -25 --max-y 300" \
JOBNUM=$(nproc) \
$workdir/leaftest/mapper.sh "$world" $spawnx,$spawnz $mapsize
# Copie de leaftest vers le dossier web distant normalement déjà monté
rm -rf "$destination/$world_name"
cp -rL $workdir/leaftest/www "$destination/$world_name"
popd
rm -rf $workdir
}
# Pas de paramètre
@ -87,17 +87,17 @@ options=$(getopt -o h -l help -- "$@")
set -- $options
while true; do
case "$1" in
-h|--help)
usage
exit 0;;
--)
shift;;
*)
action $1 $2 $3
exit 0
shift;;
esac
case "$1" in
-h|--help)
usage
exit 0;;
--)
shift;;
*)
action $1 $2 $3
exit 0
shift;;
esac
done
exit 0

View File

@ -3,436 +3,436 @@
# License: GPLv3
usage() {
echo "Usage: ./install_nalc.sh [options] [--] [destination]"
echo
echo "Description:"
echo -e "\tDownload and install the files needed by the NALC server to the"
echo -e "\toptional [destination] folder. Otherwise the current directory"
echo -e "\twill be used."
echo
echo -e "\tBut, be carefull!"
echo -e "\tBy default the ~/.minetest dir will also be used and modified."
echo -e "\tSo, make a backup of your ~/.minetest directory before the"
echo -e "\tinstallation of this server or specify a new directory with the"
echo -e "\t --minetest-dir or -d option."
echo
echo "Requirements:"
echo -e "\t- Official Minetest server must be already installed on your system."
echo -e "\tIf it is not the case, please refers to the https://minetest.net"
echo -e "\twebsite for the installation instructions."
echo -e "\t- You'll also need git, cmake, make."
echo
echo "Options:"
echo -e "\t-h --help\t This help."
echo -e "\t-b --minetest-bin <path> Minetest server executable path."
echo -e "\t-d --minetest-dir <dir> Minetest directory to use for installing nalc mods, nalc game, minetest.conf…"
echo -e "\t-m --map-backend <sqlite3|leveldb|redis|postgresql|dummy>"
echo -e "\t-p --player-backend <sqlite3|leveldb|postgresql|dummy|files>"
echo -e "\t-a --auth-backend <sqlite3|leveldb|postgresql|files>"
echo -e "\t-s --mod-storage-backend <sqlite3|files|dummy>"
echo -e "\t-M --minetest-mapper Install with minetest mapper support."
echo -e "\t-w --world <name> Custom world name."
echo -e "\t-P --port <port> Custom server port number."
echo -e "\t--url <URL> Custom remote URL."
echo -e "\t--branch <stable|dev> Choose the version to install (stable by default)"
echo
echo "License: GPLv3. Please read the LICENSE file."
echo "Author: Sys4 - https://sys4.fr#contact"
echo "Usage: ./install_nalc.sh [options] [--] [destination]"
echo
echo "Description:"
echo -e "\tDownload and install the files needed by the NALC server to the"
echo -e "\toptional [destination] folder. Otherwise the current directory"
echo -e "\twill be used."
echo
echo -e "\tBut, be carefull!"
echo -e "\tBy default the ~/.minetest dir will also be used and modified."
echo -e "\tSo, make a backup of your ~/.minetest directory before the"
echo -e "\tinstallation of this server or specify a new directory with the"
echo -e "\t --minetest-dir or -d option."
echo
echo "Requirements:"
echo -e "\t- Official Minetest server must be already installed on your system."
echo -e "\tIf it is not the case, please refers to the https://minetest.net"
echo -e "\twebsite for the installation instructions."
echo -e "\t- You'll also need git, cmake, make."
echo
echo "Options:"
echo -e "\t-h --help\t This help."
echo -e "\t-b --minetest-bin <path> Minetest server executable path."
echo -e "\t-d --minetest-dir <dir> Minetest directory to use for installing nalc mods, nalc game, minetest.conf…"
echo -e "\t-m --map-backend <sqlite3|leveldb|redis|postgresql|dummy>"
echo -e "\t-p --player-backend <sqlite3|leveldb|postgresql|dummy|files>"
echo -e "\t-a --auth-backend <sqlite3|leveldb|postgresql|files>"
echo -e "\t-s --mod-storage-backend <sqlite3|files|dummy>"
echo -e "\t-M --minetest-mapper Install with minetest mapper support."
echo -e "\t-w --world <name> Custom world name."
echo -e "\t-P --port <port> Custom server port number."
echo -e "\t--url <URL> Custom remote URL."
echo -e "\t--branch <stable|dev> Choose the version to install (stable by default)"
echo
echo "License: GPLv3. Please read the LICENSE file."
echo "Author: Sys4 - https://sys4.fr#contact"
exit 0
exit 0
}
strip() {
echo $1 | cut -d \' -f 2
echo $1 | cut -d \' -f 2
}
verif() {
if [[ $? -gt 0 ]]; then
echo "Error! Exit."
exit 1
if [[ $? -gt 0 ]]; then
echo "Error! Exit."
exit 1
fi
}
error() {
if [[ -n $1 ]]; then
echo "ERROR: $1"! >&2
else
echo "ERROR: Invalid option!" >&2
echo "Use -h option for help." >&2
fi
exit 1
if [[ -n $1 ]]; then
echo "ERROR: $1"! >&2
else
echo "ERROR: Invalid option!" >&2
echo "Use -h option for help." >&2
fi
exit 1
}
save_conf() {
local conf="$1"
echo "MINETEST_BIN=$MINETEST_BIN" > "$conf"
echo "MINETEST_DIR=$MINETEST_DIR" >> "$conf"
echo "MAP_BACKEND=$MAP_BACKEND" >> "$conf"
echo "PLAYER_BACKEND=$PLAYER_BACKEND" >> "$conf"
echo "AUTH_BACKEND=$AUTH_BACKEND" >> "$conf"
echo "MOD_STORAGE_BACKEND=$MOD_STORAGE_BACKEND" >> "$conf"
echo "MINETEST_MAPPER=$MINETEST_MAPPER" >> "$conf"
echo "URL=$URL" >> "$conf"
echo "BRANCH=$BRANCH" >> "$conf"
echo "WORLD_NAME=$WORLD_NAME" >> "$conf"
echo "PORT=$PORT" >> "$conf"
local conf="$1"
echo "MINETEST_BIN=$MINETEST_BIN" > "$conf"
echo "MINETEST_DIR=$MINETEST_DIR" >> "$conf"
echo "MAP_BACKEND=$MAP_BACKEND" >> "$conf"
echo "PLAYER_BACKEND=$PLAYER_BACKEND" >> "$conf"
echo "AUTH_BACKEND=$AUTH_BACKEND" >> "$conf"
echo "MOD_STORAGE_BACKEND=$MOD_STORAGE_BACKEND" >> "$conf"
echo "MINETEST_MAPPER=$MINETEST_MAPPER" >> "$conf"
echo "URL=$URL" >> "$conf"
echo "BRANCH=$BRANCH" >> "$conf"
echo "WORLD_NAME=$WORLD_NAME" >> "$conf"
echo "PORT=$PORT" >> "$conf"
}
load_conf() {
. "$1"
. "$1"
}
install_game() {
local game_dir="$MINETEST_DIR/games/nalc_game"
if [ -d "$game_dir" ]; then
echo "Previous installation of NALC game detected."
read -p "Upgrade? ([Y]es/[n]o/clean/[c]ancel) " continue
case "$continue" in
[yY][eE][sS]|[yY]|"")
echo "Upgrading…"
pushd "$game_dir"
git pull
verif
popd;;
[cC][lL][eE][aA][nN])
echo "Cleaning…"
rm -rf "$game_dir"
verif;;
[cC][aA][nN][cC][eE][lL]|[cC])
echo "Upgrade cancelled."
exit 0;;
esac
fi
if [ ! -d "$game_dir" ]; then
local git_branch
local depth
case $BRANCH in
"stable")
git_branch="-b master"
depth="--depth 1"
;;
"dev")
git_branch="-b dev"
;;
esac
[ -z "$git_branch" ] && error "Invalid branch"
local game_dir="$MINETEST_DIR/games/nalc_game"
if [ -d "$game_dir" ]; then
echo "Previous installation of NALC game detected."
read -p "Upgrade? ([Y]es/[n]o/clean/[c]ancel) " continue
case "$continue" in
[yY][eE][sS]|[yY]|"")
echo "Upgrading…"
pushd "$game_dir"
git pull
verif
popd;;
[cC][lL][eE][aA][nN])
echo "Cleaning…"
rm -rf "$game_dir"
verif;;
[cC][aA][nN][cC][eE][lL]|[cC])
echo "Upgrade cancelled."
exit 0;;
esac
fi
if [ ! -d "$game_dir" ]; then
local git_branch
local depth
case $BRANCH in
"stable")
git_branch="-b master"
depth="--depth 1"
;;
"dev")
git_branch="-b dev"
;;
esac
[ -z "$git_branch" ] && error "Invalid branch"
echo "Cloning $URL""nalc/nalc_game.git to $game_dir"
mkdir -p "$MINETEST_DIR/games"
verif
git clone $depth $git_branch $URL"nalc/nalc_game.git" "$game_dir"
verif
fi
echo "NALC game installed/upgraded."
echo "Cloning $URL""nalc/nalc_game.git to $game_dir"
mkdir -p "$MINETEST_DIR/games"
verif
git clone $depth $git_branch $URL"nalc/nalc_game.git" "$game_dir"
verif
fi
echo "NALC game installed/upgraded."
}
install_mods() {
local mods_dir="$MINETEST_DIR/mods"
if [ -d "$mods_dir" ]; then
echo "Mods directory is not empty."
read -p "Upgrade? ([Y]es/[n]o/clean/[c]ancel) " continue
case "$continue" in
[yY][eE][sS]|[yY]|"")
echo "Upgrading…"
"$SCRIPT_DIR"/upgrade.sh -m -s "$DESTINATION"
verif
;;
[cC][lL][eE][aA][nN])
echo "Cleaning…"
rm -rf "$mods_dir"
verif
;;
[cC][aA][nN][cC][eE][lL]|[cC])
echo "Upgrade cancelled."
exit 0;;
esac
fi
if [ ! -d "$mods_dir" ]; then
local git_branch
local depth
case $BRANCH in
"stable")
git_branch="-b master"
depth="--depth 1"
;;
"dev")
git_branch="-b dev"
;;
esac
[ -z $git_branch ] && error "Invalid branch"
local mods_dir="$MINETEST_DIR/mods"
if [ -d "$mods_dir" ]; then
echo "Mods directory is not empty."
read -p "Upgrade? ([Y]es/[n]o/clean/[c]ancel) " continue
case "$continue" in
[yY][eE][sS]|[yY]|"")
echo "Upgrading…"
"$SCRIPT_DIR"/upgrade.sh -m -s "$DESTINATION"
verif
;;
[cC][lL][eE][aA][nN])
echo "Cleaning…"
rm -rf "$mods_dir"
verif
;;
[cC][aA][nN][cC][eE][lL]|[cC])
echo "Upgrade cancelled."
exit 0;;
esac
fi
if [ ! -d "$mods_dir" ]; then
local git_branch
local depth
case $BRANCH in
"stable")
git_branch="-b master"
depth="--depth 1"
;;
"dev")
git_branch="-b dev"
;;
esac
[ -z $git_branch ] && error "Invalid branch"
echo "Cloning $URL/nalc-server-mods.git to $mods_dir"
git clone $depth $git_branch $URL"nalc/nalc-server-mods.git" "$mods_dir"
verif
pushd "$mods_dir"
git submodule update --init --recursive
verif
popd
fi
echo "Mods for NALC installed/upgraded."
echo "Cloning $URL/nalc-server-mods.git to $mods_dir"
git clone $depth $git_branch $URL"nalc/nalc-server-mods.git" "$mods_dir"
verif
pushd "$mods_dir"
git submodule update --init --recursive
verif
popd
fi
echo "Mods for NALC installed/upgraded."
}
install_world() {
local world_dir="$MINETEST_DIR/worlds/$WORLD_NAME"
if [ -d "$world_dir" ]; then
echo "World $WORLD_NAME already exist."
read -p "Upgrade $WORLD_NAME? ([Y]es/[n]o/[c]lean) " continue
case "$continue" in
[yY][eE][sS]|[yY]|"")
echo "Upgrading…"
[ -d "$world_dir"_old ] && rm -rf "$world_dir"_old
cp -r "$world_dir" "$world_dir"_old
verif
;;
[cC][lL][eE][aA][nN]|[cC])
echo "Cleaning…"
[ -d "$world_dir"_old ] && rm -rf "$world_dir"_old
mv "$world_dir" "$world_dir"_old
verif
;;
[nN][oO]|[nN])
echo "Skiping…"
return
;;
esac
fi
if [ ! -d "$world_dir" ]; then
mkdir -p "$world_dir/runes"
verif
local mt=$world_dir/world.mt
echo "Generating $mt""…"
echo "gameid = nalc_game" > $mt
echo "enable_damage = true" >> $mt
echo "creative_mod = false" >> $mt
case $MAP_BACKEND in
"sqlite3"|"")
echo "backend = sqlite3" >> $mt
;;
"leveldb")
echo "backend = leveldb" >> $mt
;;
"redis")
echo "backend = redis" >> $mt
read -p "redis_address? " val
echo "redis_address = $val" >> $mt
read -p "redis_hash? " val
echo "redis_hash = $val" >> $mt
read -p "redis_port? (6379) " val
[ -z $val ] && val=6379
echo "redis_port = $val" >> $mt
;;
"postgresql")
echo "backend = postgresql" >> $mt
read -p "DB address? " val
read -p "DB user? " val2
read -p "DB password? " val3
read -p "DB name? " val4
read -p "DB port? (5432) " val5
[ -z $val5 ] && val5=5432
echo "pgsql_connection = host=$val port=$val5 user=$val2 password=$val3 dbname=$val4" >> $mt
;;
"dummy")
echo "backend = dummy" >> $mt
;;
*)
error "$MAP_BACKEND is not valid";;
esac
case $PLAYER_BACKEND in
"sqlite3"|"")
echo "player_backend = sqlite3" >> $mt
;;
"leveldb")
echo "player_backend = leveldb" >> $mt
;;
"postgresql")
echo "player_backend = postgresql" >> $mt
read -p "DB address? ($val) " vval
read -p "DB user? ($val2) " vval2
read -p "DB password? ($val3) " vval3
read -p "DB name? (players-$val4) " vval4
read -p "DB port? ($val5) " vval5
[ -z $vval ] && vval=$val
[ -z $vval2 ] && vval2=$val2
[ -z $vval3 ] && vval3=$val3
[ -z $vval4 ] && vval4="players-$val4"
[ -z $vval5 ] && vval5=$val5
echo "pgsql_player_connection = host=$vval port=$vval5 user=$vval2 password=$vval3 dbname=$vval4" >> $mt
;;
"dummy")
echo "player_backend = dummy" >> $mt
;;
"files")
echo "player_backend = files" >> $mt
;;
*)
error "$PLAYER_BACKEND is not valid";;
esac
case $AUTH_BACKEND in
"sqlite3"|"")
echo "auth_backend = sqlite3" >> $mt
;;
"leveldb")
echo "auth_backend = leveldb" >> $mt
;;
"postgresql")
echo "auth_backend = postgresql" >> $mt
read -p "DB address? ($val) " vval
read -p "DB user? ($val2) " vval2
read -p "DB password? ($val3) " vval3
read -p "DB name? (auth-$val4) " vval4
read -p "DB port? ($val5) " vval5
[ -z $vval ] && vval=$val
[ -z $vval2 ] && vval2=$val2
[ -z $vval3 ] && vval3=$val3
[ -z $vval4 ] && vval4="auth-$val4"
[ -z $vval5 ] && vval5=$val5
echo "pgsql_auth_connection = host=$vval port=$vval5 user=$vval2 password=$vval3 dbname=$vval4" >> $mt
;;
"files")
echo "auth_backend = files" >> $mt
;;
*)
error "$AUTH_BACKEND is not valid";;
esac
case $MOD_STORAGE_BACKEND in
"sqlite3"|"")
echo "mod_storage_backend = sqlite3" >> $mt
;;
"files")
echo "mod_storage_backend = files" >> $mt
;;
"dummy")
echo "mod_storage_backend = dummy" >> $mt
;;
*)
error "$MOD_STORAGE_BACKEND is not valid";;
esac
read -p "Server announce? (y/N) " val
if [[ $val =~ [yY][eE][sS]|[yY] ]]; then
echo "server_announce = true" >> $mt
else
echo "server_announce = false" >> $mt
local world_dir="$MINETEST_DIR/worlds/$WORLD_NAME"
if [ -d "$world_dir" ]; then
echo "World $WORLD_NAME already exist."
read -p "Upgrade $WORLD_NAME? ([Y]es/[n]o/[c]lean) " continue
case "$continue" in
[yY][eE][sS]|[yY]|"")
echo "Upgrading…"
[ -d "$world_dir"_old ] && rm -rf "$world_dir"_old
cp -r "$world_dir" "$world_dir"_old
verif
;;
[cC][lL][eE][aA][nN]|[cC])
echo "Cleaning…"
[ -d "$world_dir"_old ] && rm -rf "$world_dir"_old
mv "$world_dir" "$world_dir"_old
verif
;;
[nN][oO]|[nN])
echo "Skiping…"
return
;;
esac
fi
if [ ! -d "$world_dir" ]; then
mkdir -p "$world_dir/runes"
verif
local mt=$world_dir/world.mt
echo "Generating $mt""…"
echo "gameid = nalc_game" > $mt
echo "enable_damage = true" >> $mt
echo "creative_mod = false" >> $mt
case $MAP_BACKEND in
"sqlite3"|"")
echo "backend = sqlite3" >> $mt
;;
"leveldb")
echo "backend = leveldb" >> $mt
;;
"redis")
echo "backend = redis" >> $mt
read -p "redis_address? " val
echo "redis_address = $val" >> $mt
read -p "redis_hash? " val
echo "redis_hash = $val" >> $mt
read -p "redis_port? (6379) " val
[ -z $val ] && val=6379
echo "redis_port = $val" >> $mt
;;
"postgresql")
echo "backend = postgresql" >> $mt
read -p "DB address? " val
read -p "DB user? " val2
read -p "DB password? " val3
read -p "DB name? " val4
read -p "DB port? (5432) " val5
[ -z $val5 ] && val5=5432
echo "pgsql_connection = host=$val port=$val5 user=$val2 password=$val3 dbname=$val4" >> $mt
;;
"dummy")
echo "backend = dummy" >> $mt
;;
*)
error "$MAP_BACKEND is not valid";;
esac
case $PLAYER_BACKEND in
"sqlite3"|"")
echo "player_backend = sqlite3" >> $mt
;;
"leveldb")
echo "player_backend = leveldb" >> $mt
;;
"postgresql")
echo "player_backend = postgresql" >> $mt
read -p "DB address? ($val) " vval
read -p "DB user? ($val2) " vval2
read -p "DB password? ($val3) " vval3
read -p "DB name? (players-$val4) " vval4
read -p "DB port? ($val5) " vval5
[ -z $vval ] && vval=$val
[ -z $vval2 ] && vval2=$val2
[ -z $vval3 ] && vval3=$val3
[ -z $vval4 ] && vval4="players-$val4"
[ -z $vval5 ] && vval5=$val5
echo "pgsql_player_connection = host=$vval port=$vval5 user=$vval2 password=$vval3 dbname=$vval4" >> $mt
;;
"dummy")
echo "player_backend = dummy" >> $mt
;;
"files")
echo "player_backend = files" >> $mt
;;
*)
error "$PLAYER_BACKEND is not valid";;
esac
case $AUTH_BACKEND in
"sqlite3"|"")
echo "auth_backend = sqlite3" >> $mt
;;
"leveldb")
echo "auth_backend = leveldb" >> $mt
;;
"postgresql")
echo "auth_backend = postgresql" >> $mt
read -p "DB address? ($val) " vval
read -p "DB user? ($val2) " vval2
read -p "DB password? ($val3) " vval3
read -p "DB name? (auth-$val4) " vval4
read -p "DB port? ($val5) " vval5
[ -z $vval ] && vval=$val
[ -z $vval2 ] && vval2=$val2
[ -z $vval3 ] && vval3=$val3
[ -z $vval4 ] && vval4="auth-$val4"
[ -z $vval5 ] && vval5=$val5
echo "pgsql_auth_connection = host=$vval port=$vval5 user=$vval2 password=$vval3 dbname=$vval4" >> $mt
;;
"files")
echo "auth_backend = files" >> $mt
;;
*)
error "$AUTH_BACKEND is not valid";;
esac
case $MOD_STORAGE_BACKEND in
"sqlite3"|"")
echo "mod_storage_backend = sqlite3" >> $mt
;;
"files")
echo "mod_storage_backend = files" >> $mt
;;
"dummy")
echo "mod_storage_backend = dummy" >> $mt
;;
*)
error "$MOD_STORAGE_BACKEND is not valid";;
esac
read -p "Server announce? (y/N) " val
if [[ $val =~ [yY][eE][sS]|[yY] ]]; then
echo "server_announce = true" >> $mt
else
echo "server_announce = false" >> $mt
fi
fi
fi
}
install_mtmapper() {
if [ ! -d "$DESTINATION/minetestmapper" ]; then
echo "Clone Minetest mapper…"
git clone --depth 1 $URL"/minetest/minetestmapper.git" "$DESTINATION/minetestmapper"
verif
else
echo "Upgrading Minetest mapper…"
if [ ! -d "$DESTINATION/minetestmapper" ]; then
echo "Clone Minetest mapper…"
git clone --depth 1 $URL"/minetest/minetestmapper.git" "$DESTINATION/minetestmapper"
verif
else
echo "Upgrading Minetest mapper…"
pushd "$DESTINATION/minetestmapper"
git pull
verif
popd
fi
pushd "$DESTINATION/minetestmapper"
git pull
cmake .
[ $? -eq 1 ] && error "CMake failed. Check dependencies"
make -j$(nproc)
verif
popd
fi
pushd "$DESTINATION/minetestmapper"
cmake .
[ $? -eq 1 ] && error "CMake failed. Check dependencies"
make -j$(nproc)
verif
popd
if [ ! -d "$DESTINATION/leaftest" ]; then
echo "Installing leaftest…"
git clone --recursive --depth 1 $URL"nalc/leaftest.git" "$DESTINATION/leaftest"
verif
else
echo "Upgrading leaftest…"
pushd "$DESTINATION/leaftest"
git pull
verif
popd
fi
if [ ! -d "$DESTINATION/leaftest" ]; then
echo "Installing leaftest…"
git clone --recursive --depth 1 $URL"nalc/leaftest.git" "$DESTINATION/leaftest"
verif
else
echo "Upgrading leaftest…"
pushd "$DESTINATION/leaftest"
git pull
verif
popd
fi
}
post_install() {
if [[ "$DESTINATION" != "$SCRIPT_DIR" ]]; then
cp "$SCRIPT_DIR/mods_disabled.txt" "$DESTINATION"
fi
if [[ "$DESTINATION" != "$SCRIPT_DIR" ]]; then
cp "$SCRIPT_DIR/mods_disabled.txt" "$DESTINATION"
fi
"$SCRIPT_DIR"/upgrade.sh -w $WORLD_NAME -b $BRANCH -s "$DESTINATION"
"$SCRIPT_DIR"/upgrade.sh -w $WORLD_NAME -b $BRANCH -f mtconf -s "$DESTINATION"
"$SCRIPT_DIR"/upgrade.sh -w $WORLD_NAME -b $BRANCH -s "$DESTINATION"
"$SCRIPT_DIR"/upgrade.sh -w $WORLD_NAME -b $BRANCH -f mtconf -s "$DESTINATION"
echo "Please, review and edit the following files:"
echo -e "\t- $MINETEST_DIR/minetest.conf"
echo -e "\t- $DESTINATION/mods_disabled.txt"
echo
if [[ $MINETEST_MAPPER -eq 1 ]]; then
echo "The use of Minetest Mapper needs ImageMagick with fontconfig and truetype dependencies."
echo "You also need to allow read and write permissions for PS. The configuration can be found in the file that manage the security policy of ImageMagick."
fi
echo "Please, review and edit the following files:"
echo -e "\t- $MINETEST_DIR/minetest.conf"
echo -e "\t- $DESTINATION/mods_disabled.txt"
echo
if [[ $MINETEST_MAPPER -eq 1 ]]; then
echo "The use of Minetest Mapper needs ImageMagick with fontconfig and truetype dependencies."
echo "You also need to allow read and write permissions for PS. The configuration can be found in the file that manage the security policy of ImageMagick."
fi
}
action() {
echo "Preparing the installation…"
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
DESTINATION="$1"
[ -z $DESTINATION ] && DESTINATION="$SCRIPT_DIR"
echo "Preparing the installation…"
GIT=$(which git)
CMAKE=$(which cmake)
MAKE=$(which make)
[ ! -e "$GIT" ] && error "git not found"
[ ! -e "$CMAKE" ] && error "cmake not found"
[ ! -e "$MAKE" ] && error "make not found"
if [ -e "$DESTINATION/nalc.conf" ]; then
read -p "Previous installation is detected. Do you want to load previous settings? [Y/n] " continue
if [ -z $continue ] || [[ "$continue" =~ ^[yY][eE][sS]|[yY]$ ]]; then
load_conf "$DESTINATION/nalc.conf"
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
DESTINATION="$1"
[ -z $DESTINATION ] && DESTINATION="$SCRIPT_DIR"
GIT=$(which git)
CMAKE=$(which cmake)
MAKE=$(which make)
[ ! -e "$GIT" ] && error "git not found"
[ ! -e "$CMAKE" ] && error "cmake not found"
[ ! -e "$MAKE" ] && error "make not found"
if [ -e "$DESTINATION/nalc.conf" ]; then
read -p "Previous installation is detected. Do you want to load previous settings? [Y/n] " continue
if [ -z $continue ] || [[ "$continue" =~ ^[yY][eE][sS]|[yY]$ ]]; then
load_conf "$DESTINATION/nalc.conf"
fi
fi
fi
[ -z $MINETEST_BIN ] && MINETEST_BIN=$(which minetestserver)
[ -z $MINETEST_DIR ] && MINETEST_DIR=~/.minetest
[ -z $MAP_BACKEND ] && MAP_BACKEND=sqlite3
[ -z $PLAYER_BACKEND ] && PLAYER_BACKEND=sqlite3
[ -z $AUTH_BACKEND ] && AUTH_BACKEND=sqlite3
[ -z $MOD_STORAGE_BACKEND ] && MOD_STORAGE_BACKEND=sqlite3
[ -z $MINETEST_MAPPER ] && MINETEST_MAPPER=0
[ -z $PORT ] && PORT=30000
[ -z $URL ] && URL="https://sys4.fr/gitea/"
[[ $URL =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$ ]] && URL="$URL:"
[ -z $BRANCH ] && BRANCH="stable"
[ -z $WORLD_NAME ] && WORLD_NAME="nalc"
[ ! -e $MINETEST_BIN ] && error "$MINETEST_BIN not found"
[ ! -d $MINETEST_DIR ] && error "$MINETEST_DIR not found"
[ -z $MINETEST_BIN ] && MINETEST_BIN=$(which minetestserver)
[ -z $MINETEST_DIR ] && MINETEST_DIR=~/.minetest
[ -z $MAP_BACKEND ] && MAP_BACKEND=sqlite3
[ -z $PLAYER_BACKEND ] && PLAYER_BACKEND=sqlite3
[ -z $AUTH_BACKEND ] && AUTH_BACKEND=sqlite3
[ -z $MOD_STORAGE_BACKEND ] && MOD_STORAGE_BACKEND=sqlite3
[ -z $MINETEST_MAPPER ] && MINETEST_MAPPER=0
[ -z $PORT ] && PORT=30000
[ -z $URL ] && URL="https://sys4.fr/gitea/"
[[ $URL =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$ ]] && URL="$URL:"
[ -z $BRANCH ] && BRANCH="stable"
[ -z $WORLD_NAME ] && WORLD_NAME="nalc"
[ ! -e $MINETEST_BIN ] && error "$MINETEST_BIN not found"
[ ! -d $MINETEST_DIR ] && error "$MINETEST_DIR not found"
echo "Installation summary:"
echo -e "\t- Server files will be downloaded from $URL"
echo -e "\t- NALC server will be installed to $DESTINATION."
echo -e "\t- World of NALC will be installed to $MINETEST_DIR/worlds/$WORLD_NAME"
echo -e "\t- The minetestserver executable $MINETEST_BIN will be used."
echo -e "\t- The $MINETEST_DIR directory will be used."
echo -e "\t- $MAP_BACKEND will be used as map backend."
echo -e "\t- $PLAYER_BACKEND will be used as player backend."
echo -e "\t- $AUTH_BACKEND will be used as auth backend."
echo -e "\t- $MOD_STORAGE_BACKEND will be used as mod storage backend."
echo -e "\t- Port used: $PORT."
[ $MINETEST_MAPPER -eq 1 ] && echo -e "\t- Minetest mapper support added."
echo
read -p "Installation of NALC server will begin. Continue? [Y/n] " continue
if [ -z $continue ] || [[ "$continue" =~ ^[yY][eE][sS]|[yY]$ ]]; then
save_conf "$DESTINATION/nalc.conf"
install_game
install_mods
install_world
[ $MINETEST_MAPPER -eq 1 ] && install_mtmapper
post_install
fi
echo "End of the NALC server installation. Good Bye!"
exit 0
echo "Installation summary:"
echo -e "\t- Server files will be downloaded from $URL"
echo -e "\t- NALC server will be installed to $DESTINATION."
echo -e "\t- World of NALC will be installed to $MINETEST_DIR/worlds/$WORLD_NAME"
echo -e "\t- The minetestserver executable $MINETEST_BIN will be used."
echo -e "\t- The $MINETEST_DIR directory will be used."
echo -e "\t- $MAP_BACKEND will be used as map backend."
echo -e "\t- $PLAYER_BACKEND will be used as player backend."
echo -e "\t- $AUTH_BACKEND will be used as auth backend."
echo -e "\t- $MOD_STORAGE_BACKEND will be used as mod storage backend."
echo -e "\t- Port used: $PORT."
[ $MINETEST_MAPPER -eq 1 ] && echo -e "\t- Minetest mapper support added."
echo
read -p "Installation of NALC server will begin. Continue? [Y/n] " continue
if [ -z $continue ] || [[ "$continue" =~ ^[yY][eE][sS]|[yY]$ ]]; then
save_conf "$DESTINATION/nalc.conf"
install_game
install_mods
install_world
[ $MINETEST_MAPPER -eq 1 ] && install_mtmapper
post_install
fi
echo "End of the NALC server installation. Good Bye!"
exit 0
}
[ $# -lt 0 ] && usage
@ -441,47 +441,47 @@ OPT=$(getopt -o h,b:,d:,m:,p:,a:,s:,M,w:,P: -l help,minetest-bin:,minetest-dir:,
set -- $OPT
while true; do
case "$1" in
-h|--help)
usage;;
-b|--minetest-bin)
MINETEST_BIN=$(strip "$2")
shift 2;;
-d|--minetest-dir)
MINETEST_DIR=$(strip "$2")
shift 2;;
-m|--map-backend)
MAP_BACKEND=$(strip "$2")
shift 2;;
-p|--player-backend)
PLAYER_BACKEND=$(strip "$2")
shift 2;;
-a|--auth-backend)
AUTH_BACKEND=$(strip "$2")
shift 2;;
-s|--mod-storage-backend)
MOD_STORAGE_BACKEND=$(strip "$2")
shift 2;;
-M|--minetest-mapper)
MINETEST_MAPPER=1
shift 1;;
-w|--world)
WORLD_NAME=$(strip "$2")
shift 2;;
-P|--port)
PORT=$(strip $2)
shift 2;;
--url)
URL=$(strip "$2")
shift 2;;
--branch)
BRANCH=$(strip "$2")
shift 2;;
--)
shift;;
*)
action $(strip "$1")
shift;;
esac
case "$1" in
-h|--help)
usage;;
-b|--minetest-bin)
MINETEST_BIN=$(strip "$2")
shift 2;;
-d|--minetest-dir)
MINETEST_DIR=$(strip "$2")
shift 2;;
-m|--map-backend)
MAP_BACKEND=$(strip "$2")
shift 2;;
-p|--player-backend)
PLAYER_BACKEND=$(strip "$2")
shift 2;;
-a|--auth-backend)
AUTH_BACKEND=$(strip "$2")
shift 2;;
-s|--mod-storage-backend)
MOD_STORAGE_BACKEND=$(strip "$2")
shift 2;;
-M|--minetest-mapper)
MINETEST_MAPPER=1
shift 1;;
-w|--world)
WORLD_NAME=$(strip "$2")
shift 2;;
-P|--port)
PORT=$(strip $2)
shift 2;;
--url)
URL=$(strip "$2")
shift 2;;
--branch)
BRANCH=$(strip "$2")
shift 2;;
--)
shift;;
*)
action $(strip "$1")
shift;;
esac
done

View File

@ -13,34 +13,34 @@ restart=0
regenmap=0
usage() {
echo "usage: ./shutdown.sh [-h|--help] [-r|--restart] [-b|--bak] [-u|--update]"
echo "Options:"
echo -e "\t-h --help\tAffiche cette aide."
echo -e "\t-r --restart\tRedémarre le serveur après arrêt."
echo -e "\t-b --bak\tRéalise une sauvegarde après arrêt."
echo -e "\t-u --update\tRéalise une mise à jour après arrêt."
echo -e "\t-m --regen-map\tRégénère une carte du monde."
exit 0
echo "usage: ./shutdown.sh [-h|--help] [-r|--restart] [-b|--bak] [-u|--update]"
echo "Options:"
echo -e "\t-h --help\tAffiche cette aide."
echo -e "\t-r --restart\tRedémarre le serveur après arrêt."
echo -e "\t-b --bak\tRéalise une sauvegarde après arrêt."
echo -e "\t-u --update\tRéalise une mise à jour après arrêt."
echo -e "\t-m --regen-map\tRégénère une carte du monde."
exit 0
}
action() {
kill -s TERM $(pidof minetestserver)
sleep 10
kill -s TERM $(pidof minetestserver)
sleep 10
kill -s TERM $(pidof -x $serverpath/start.sh)
kill -s TERM $(pidof -x $serverpath/start.sh)
[[ $bak -eq 1 ]] && $serverpath/backup.sh
if [ $regenmap -eq 1 ]; then
mount $mountpoint
sleep 3
$serverpath/genmap.sh $serverpath $world $mapdest
umount $mountpoint
fi
[[ $bak -eq 1 ]] && $serverpath/backup.sh
if [ $regenmap -eq 1 ]; then
mount $mountpoint
sleep 3
$serverpath/genmap.sh $serverpath $world $mapdest
umount $mountpoint
fi
[[ $update -eq 1 ]] && $serverpath/upgrade.sh -s $serverpath -m -w $world -b $branch -f $world_file
[[ $restart -eq 1 ]] && $serverpath/start.sh&
[[ $update -eq 1 ]] && $serverpath/upgrade.sh -s $serverpath -m -w $world -b $branch -f $world_file
[[ $restart -eq 1 ]] && $serverpath/start.sh&
exit 0
exit 0
}
# Pas de paramètre
@ -56,25 +56,25 @@ OPT=$(getopt -o b,r,h,u,m -l bak,restart,help,update,regen-map -- "$@")
set -- $OPT
while true; do
case "$1" in
-b|--bak)
bak=1
shift;;
-r|--restart)
restart=1
shift;;
-h|--help)
usage;;
-u|--update)
update=1
shift;;
-m|--regen-map)
regenmap=1
shift;;
--)
shift;;
*)
action
shift;;
esac
case "$1" in
-b|--bak)
bak=1
shift;;
-r|--restart)
restart=1
shift;;
-h|--help)
usage;;
-u|--update)
update=1
shift;;
-m|--regen-map)
regenmap=1
shift;;
--)
shift;;
*)
action
shift;;
esac
done

View File

@ -12,10 +12,10 @@
serverdir="$1"
[ -z "$serverdir" ] && serverdir="$(pwd)"
if [ ! -e "$serverdir/nalc.conf" ]; then
echo "ERROR: nalc.conf not found!"
exit 1
echo "ERROR: nalc.conf not found!"
exit 1
else
. "$serverdir/nalc.conf"
. "$serverdir/nalc.conf"
fi
#DEBUG=$serverdir/logs/debug.log
@ -27,13 +27,13 @@ fi
# echo "Server restarted at "`date` >>$MOREDEBUG
# echo "----------------------" >>$MOREDEBUG
echo "0" >/tmp/players_c.txt
echo "0" >/tmp/players_c.txt
"$MINETEST_BIN" \
--world "$MINETEST_DIR/worlds/$WORLD_NAME/" \
--config "$MINETEST_DIR/minetest.conf" \
--gameid nalc_game \
--port $PORT \
# --logfile $DEBUG
"$MINETEST_BIN" \
--world "$MINETEST_DIR/worlds/$WORLD_NAME/" \
--config "$MINETEST_DIR/minetest.conf" \
--gameid nalc_game \
--port $PORT \
# --logfile $DEBUG
#done &>> $MOREDEBUG

View File

@ -8,222 +8,222 @@ UP_MODS=0
WORLD_FILE=all
strip() {
echo $1 | cut -d \' -f 2
echo $1 | cut -d \' -f 2
}
verif() {
if [[ $? -gt 0 ]]; then
echo "Erreur ! Arrêt du script."
exit 1
fi
if [[ $? -gt 0 ]]; then
echo "Erreur ! Arrêt du script."
exit 1
fi
}
error() {
if [[ -n $1 ]]; then
echo "ERREUR : $1 !"
else
echo "ERREUR : paramètres invalides !" >&2
echo "utilisez l'option -h pour en savoir plus" >&2
fi
exit 1
if [[ -n $1 ]]; then
echo "ERREUR : $1 !"
else
echo "ERREUR : paramètres invalides !" >&2
echo "utilisez l'option -h pour en savoir plus" >&2
fi
exit 1
}
usage() {
echo "Usage : ./upgrade.sh [-h|--help] | [-s|--serverpath <path>] [-m|--mods] [ -w|--world <world> < -b|--branch <branch> [-f|--world-file <arg>] > ]"
echo "WARNING: This is for an experimental usage. Don't use it!"
echo "Options:"
echo -e "\t-h --help\t\tAffiche cette aide"
echo -e "\t-s --serverpath <path>\tRépertoire racine du serveur"
echo -e "\t-m --mods\t\tMet à jour les mods"
echo -e "\t-w --world <name>\tNom de la carte"
echo -e "\t-b --branch <branch>\tBranche concerné"
echo -e "\t-f --world-file <arg>\tFichier(s) a mettre à jour :"
echo -e "\t<arg> doit être une des valeur suivante :"
echo -e "\tall\t\tToutes les mise à jour suivantes seront executés sauf 'mtconf'"
echo -e "\tnews\t\tLes news du serveur"
echo -e "\ttechnic\t\tLes paramètres de technic"
echo -e "\tfbn\t\tLes paramètres de forbidden_names"
echo -e "\tfbnp\t\tLes paramètres de forbidden_names_patterns"
echo -e "\tbitchange\tLes paramètres de bitchange"
echo -e "\tchristmas\tLes paramètres de christmas_craft"
echo -e "\trandommsg\tLes messages aléatoires"
echo -e "\tworldmt\tRégénère le fichier world.mt (peut-être utile avec l'option -m)"
echo -e "\tmtconf\tMet à jour le fichier minetest.conf"
echo "Exemples:"
echo -e "\tMise à jour des mods :"
echo -e "\t$ ./upgrade.sh -m"
echo -e "\tMise à jour du fichier minetest.conf :"
echo -e "\t$ ./upgrade.sh -w nalc-stable -b stable -f mtconf"
echo -e "\tMise à jour complète (mods et fichiers world, sauf minetest.conf) :"
echo -e "\t$ ./upgrade.sh -m -w nalc-stable -b stable"
echo "Usage : ./upgrade.sh [-h|--help] | [-s|--serverpath <path>] [-m|--mods] [ -w|--world <world> < -b|--branch <branch> [-f|--world-file <arg>] > ]"
echo "WARNING: This is for an experimental usage. Don't use it!"
echo "Options:"
echo -e "\t-h --help\t\tAffiche cette aide"
echo -e "\t-s --serverpath <path>\tRépertoire racine du serveur"
echo -e "\t-m --mods\t\tMet à jour les mods"
echo -e "\t-w --world <name>\tNom de la carte"
echo -e "\t-b --branch <branch>\tBranche concerné"
echo -e "\t-f --world-file <arg>\tFichier(s) a mettre à jour :"
echo -e "\t<arg> doit être une des valeur suivante :"
echo -e "\tall\t\tToutes les mise à jour suivantes seront executés sauf 'mtconf'"
echo -e "\tnews\t\tLes news du serveur"
echo -e "\ttechnic\t\tLes paramètres de technic"
echo -e "\tfbn\t\tLes paramètres de forbidden_names"
echo -e "\tfbnp\t\tLes paramètres de forbidden_names_patterns"
echo -e "\tbitchange\tLes paramètres de bitchange"
echo -e "\tchristmas\tLes paramètres de christmas_craft"
echo -e "\trandommsg\tLes messages aléatoires"
echo -e "\tworldmt\tRégénère le fichier world.mt (peut-être utile avec l'option -m)"
echo -e "\tmtconf\tMet à jour le fichier minetest.conf"
echo "Exemples:"
echo -e "\tMise à jour des mods :"
echo -e "\t$ ./upgrade.sh -m"
echo -e "\tMise à jour du fichier minetest.conf :"
echo -e "\t$ ./upgrade.sh -w nalc-stable -b stable -f mtconf"
echo -e "\tMise à jour complète (mods et fichiers world, sauf minetest.conf) :"
echo -e "\t$ ./upgrade.sh -m -w nalc-stable -b stable"
}
regen_worldmt() {
local worldfile="$MINETEST_DIR/worlds/$WORLD_NAME/world.mt"
local worldfile="$MINETEST_DIR/worlds/$WORLD_NAME/world.mt"
echo "Regénération du fichier $worldfile..."
echo "Regénération du fichier $worldfile..."
# Faire une sauvegarde du fichier world.mt actuel
cp "$worldfile" "$worldfile".bak
# Créer un nouveau fichier temporaire sans les lignes commençant par load_mod
local i=0
cat "$worldfile" | while read -r line; do
local match=$(echo $line | grep load_mod_)
if [[ -z $match ]]; then
if [[ $i -eq 0 ]]; then
echo $line > /tmp/world.mt
else
echo $line >> /tmp/world.mt
fi
fi
# Faire une sauvegarde du fichier world.mt actuel
cp "$worldfile" "$worldfile".bak
i=$(( $i+1 ))
done
# Recréation des liens symboliques des mods dans le dossier minetest
# et générer une ligne "load_mod_<mod> = true ou false" pour chaque mod
# et l'ajouter au fichier
# local mods_path=$serverpath/nalc-server-mods
local mods="$MINETEST_DIR/mods"
local mods_custom="$serverpath/custom/mods"
# Suppression d'éventuels liens symboliques du dossier des mods
ls "$mods" | while read -r mod; do
[ -L "$mods/$mod" ] && rm -f "$mods/$mod"
done
# Créer un nouveau fichier temporaire sans les lignes commençant par load_mod
local i=0
cat "$worldfile" | while read -r line; do
local match=$(echo $line | grep load_mod_)
if [[ -z $match ]]; then
if [[ $i -eq 0 ]]; then
echo $line > /tmp/world.mt
else
echo $line >> /tmp/world.mt
fi
fi
if [ -d "$mods_custom" ]; then
ls $mods_custom | while read -r mod; do
[ -d $mods_custom/$mod ] && ln -s $mods_custom/$mod $mods/$mod
i=$(( $i+1 ))
done
# Recréation des liens symboliques des mods dans le dossier minetest
# et générer une ligne "load_mod_<mod> = true ou false" pour chaque mod
# et l'ajouter au fichier
# local mods_path=$serverpath/nalc-server-mods
local mods="$MINETEST_DIR/mods"
local mods_custom="$serverpath/custom/mods"
# Suppression d'éventuels liens symboliques du dossier des mods
ls "$mods" | while read -r mod; do
[ -L "$mods/$mod" ] && rm -f "$mods/$mod"
done
if [ -d "$mods_custom" ]; then
ls $mods_custom | while read -r mod; do
[ -d $mods_custom/$mod ] && ln -s $mods_custom/$mod $mods/$mod
done
fi
# Liste des mods à désactiver
readarray -t md < "$serverpath/mods_disabled.txt"
# Populate world.mt
ls "$mods" | while read -r mod; do
if [ -d $mods/$mod ]; then
if [ -e $mods/$mod/init.lua ]; then
local mod_enable="true"
for (( modn=0; modn<${#md[@]}; modn++ )); do
[ ${md[$modn]} == $mod ] && mod_enable="false"
done
fi
echo "load_mod_$mod = $mod_enable" >> /tmp/world.mt
else
ls "$mods/$mod" | while read -r submod; do
if [ -d "$mods/$mod/$submod" ]; then
local mod_enable="true"
for (( modn=0; modn<${#md[@]}; modn++ )); do
[ ${md[$modn]} == $submod ] && mod_enable="false"
done
echo "load_mod_$submod = $mod_enable" >> /tmp/world.mt
fi
done
fi
fi
done
# Liste des mods à désactiver
readarray -t md < "$serverpath/mods_disabled.txt"
# Remplacement du l'ancien world.mt par le nouveau
mv /tmp/world.mt "$MINETEST_DIR/worlds/$WORLD_NAME/world.mt"
# Populate world.mt
ls "$mods" | while read -r mod; do
if [ -d $mods/$mod ]; then
if [ -e $mods/$mod/init.lua ]; then
local mod_enable="true"
for (( modn=0; modn<${#md[@]}; modn++ )); do
[ ${md[$modn]} == $mod ] && mod_enable="false"
done
echo "load_mod_$mod = $mod_enable" >> /tmp/world.mt
else
ls "$mods/$mod" | while read -r submod; do
if [ -d "$mods/$mod/$submod" ]; then
local mod_enable="true"
for (( modn=0; modn<${#md[@]}; modn++ )); do
[ ${md[$modn]} == $submod ] && mod_enable="false"
done
echo "load_mod_$submod = $mod_enable" >> /tmp/world.mt
fi
done
fi
fi
done
# Remplacement du l'ancien world.mt par le nouveau
mv /tmp/world.mt "$MINETEST_DIR/worlds/$WORLD_NAME/world.mt"
echo "Regénération terminé."
echo "Regénération terminé."
}
update_mods() {
local mods_path="$MINETEST_DIR/mods"
[ ! -d "$mods_path" ] && error "$mods_path not found"
local mods_path="$MINETEST_DIR/mods"
[ ! -d "$mods_path" ] && error "$mods_path not found"
pushd "$mods_path" > /dev/null 2>&1
git pull
verif
git submodule update --init --recursive
verif
popd > /dev/null 2>&1
pushd "$mods_path" > /dev/null 2>&1
git pull
verif
git submodule update --init --recursive
verif
popd > /dev/null 2>&1
}
update_world() {
local world_repos="$SCRIPT_DIR/world"
local world_dest="$MINETEST_DIR/worlds/$WORLD_NAME"
local world_repos="$SCRIPT_DIR/world"
local world_dest="$MINETEST_DIR/worlds/$WORLD_NAME"
if [ ! -d "$world_repos" ]; then
error "$world_repos not found"
fi
if [ ! -d "$world_dest" ]; then
error "$world_dest not found"
fi
if [ ! -d "$world_repos" ]; then
error "$world_repos not found"
fi
if [ ! -d "$world_dest" ]; then
error "$world_dest not found"
fi
if [ $WORLD_FILE == "all" ]; then
WORLD_FILE="moretrees news technic fbn fbnp bitchange christmas randommsg worldmt"
fi
if [ $WORLD_FILE == "all" ]; then
WORLD_FILE="moretrees news technic fbn fbnp bitchange christmas randommsg worldmt"
fi
for w_file in $WORLD_FILE; do
local file=""
local file_dest=""
local do_copy=1
case $w_file in
moretrees)
file_dest=$world_dest/moretrees_settings.txt
file=$world_repos/moretrees_settings-$BRANCH.txt;;
news)
file_dest=$world_dest/news.txt
file=$world_repos/news-$BRANCH.txt;;
technic)
file_dest=$world_dest/technic.conf
file=$world_repos/technic-$BRANCH.conf;;
fbn)
file_dest=$world_dest/forbidden_names.txt
file=$world_repos/forbidden_names-$BRANCH.txt;;
fbnp)
file_dest=$world_dest/forbidden_names_patterns.txt
file=$world_repos/forbidden_names_patterns-$BRANCH.txt;;
bitchange)
file_dest=$world_dest/bitchange_config.txt
file=$world_repos/bitchange_config-$BRANCH.txt;;
christmas)
file_dest=$world_dest/christmas_craft.conf
file=$world_repos/christmas_craft-$BRANCH.conf;;
randommsg)
file_dest=$world_dest/random_messages
file=$world_repos/random_messages-$BRANCH;;
worldmt)
do_copy=0
regen_worldmt;;
mtconf) # Exception ici car n'est pas un fichier world. Doit être appelé seul.
file_dest="$MINETEST_DIR/minetest.conf"
file="$SCRIPT_DIR/minetest-$BRANCH.conf";;
*)
error;;
esac
for w_file in $WORLD_FILE; do
local file=""
local file_dest=""
local do_copy=1
case $w_file in
moretrees)
file_dest=$world_dest/moretrees_settings.txt
file=$world_repos/moretrees_settings-$BRANCH.txt;;
news)
file_dest=$world_dest/news.txt
file=$world_repos/news-$BRANCH.txt;;
technic)
file_dest=$world_dest/technic.conf
file=$world_repos/technic-$BRANCH.conf;;
fbn)
file_dest=$world_dest/forbidden_names.txt
file=$world_repos/forbidden_names-$BRANCH.txt;;
fbnp)
file_dest=$world_dest/forbidden_names_patterns.txt
file=$world_repos/forbidden_names_patterns-$BRANCH.txt;;
bitchange)
file_dest=$world_dest/bitchange_config.txt
file=$world_repos/bitchange_config-$BRANCH.txt;;
christmas)
file_dest=$world_dest/christmas_craft.conf
file=$world_repos/christmas_craft-$BRANCH.conf;;
randommsg)
file_dest=$world_dest/random_messages
file=$world_repos/random_messages-$BRANCH;;
worldmt)
do_copy=0
regen_worldmt;;
mtconf) # Exception ici car n'est pas un fichier world. Doit être appelé seul.
file_dest="$MINETEST_DIR/minetest.conf"
file="$SCRIPT_DIR/minetest-$BRANCH.conf";;
*)
error;;
esac
if [ $do_copy -eq 1 ]; then
[ ! -e $file ] && error "Le fichier $file n'existe pas"
echo "Copie de $file vers $file_dest"
cp -up $file $file_dest
fi
done
if [ $do_copy -eq 1 ]; then
[ ! -e $file ] && error "Le fichier $file n'existe pas"
echo "Copie de $file vers $file_dest"
cp -up $file $file_dest
fi
done
}
action() {
[ ! -d "$serverpath" ] && error "$serverpath not found"
. "$serverpath/nalc.conf"
[ ! -d "$serverpath" ] && error "$serverpath not found"
. "$serverpath/nalc.conf"
if [ $UP_MODS -eq 1 ]; then
echo "Updating $MINETEST_DIR/mods…"
update_mods
echo "Mods updated."
exit 0
fi
if [ $UP_MODS -eq 1 ]; then
echo "Updating $MINETEST_DIR/mods…"
update_mods
echo "Mods updated."
exit 0
fi
if [ -n $WORLD_NAME ] && [ -n $BRANCH ]; then
echo "Updating $WORLD_FILE from $WORLD_NAME and branch $BRANCH"
update_world
echo "World files updated."
elif [ -n $WORLD_NAME ] || [ -n $BRANCH ]; then
error
fi
if [ -n $WORLD_NAME ] && [ -n $BRANCH ]; then
echo "Updating $WORLD_FILE from $WORLD_NAME and branch $BRANCH"
update_world
echo "World files updated."
elif [ -n $WORLD_NAME ] || [ -n $BRANCH ]; then
error
fi
}
# Pas de paramètre
@ -237,32 +237,32 @@ options=$(getopt -o h,s:,m,w:,b:,f: -l help,serverpath:,mods,world:,branch:,worl
set -- $options
while true; do
case "$1" in
-h|--help)
usage
exit 0;;
-s|--serverpath)
serverpath=$(strip $2)
shift 2;;
-m|--mods)
UP_MODS=1
shift;;
-w|--world)
WORLD_NAME=$(strip $2)
shift 2;;
-b|--branch)
BRANCH=$(strip $2)
shift 2;;
-f|--world-file)
WORLD_FILE=$(strip $2)
shift 2;;
--)
shift;;
*)
action
exit 0
shift;;
esac
case "$1" in
-h|--help)
usage
exit 0;;
-s|--serverpath)
serverpath=$(strip $2)
shift 2;;
-m|--mods)
UP_MODS=1
shift;;
-w|--world)
WORLD_NAME=$(strip $2)
shift 2;;
-b|--branch)
BRANCH=$(strip $2)
shift 2;;
-f|--world-file)
WORLD_FILE=$(strip $2)
shift 2;;
--)
shift;;
*)
action
exit 0
shift;;
esac
done
exit 0