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 ((lua-mode
(fill-column . 80) (fill-column . 80)
(tab-width . 3) (tab-width . 4)
(indent-tabs-mode . t))) (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 world=$serverpath/minetest/worlds/$worldname
if [[ ! -d $bak ]]; then if [[ ! -d $bak ]]; then
mkdir -p $bak mkdir -p $bak
fi fi
bak_tmp=/var/tmp/$servername bak_tmp=/var/tmp/$servername
if [[ ! -d $bak_tmp ]]; then if [[ ! -d $bak_tmp ]]; then
mkdir $bak_tmp mkdir $bak_tmp
fi fi
cp $serverpath/minetest/minetest.conf $bak/ cp $serverpath/minetest/minetest.conf $bak/
@ -39,9 +39,9 @@ log_dir=$serverpath/logs
[[ ! -d $log_dir ]] && mkdir $log_dir [[ ! -d $log_dir ]] && mkdir $log_dir
pushd $log_dir pushd $log_dir
if [[ -f moredebug.log ]]; then if [[ -f moredebug.log ]]; then
d=$(date +%Y-%m-%d.%H.%M.%S) d=$(date +%Y-%m-%d.%H.%M.%S)
mv moredebug.log moredebug_$d.log mv moredebug.log moredebug_$d.log
bzip2 moredebug_$d.log bzip2 moredebug_$d.log
tar --label=LOGS-$servername -rf moredebug-logs.tar --remove-files moredebug*.log.bz2 tar --label=LOGS-$servername -rf moredebug-logs.tar --remove-files moredebug*.log.bz2
fi fi
popd popd

116
genmap.sh
View File

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

View File

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

View File

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

View File

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

View File

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