diff --git a/.dir-locals.el b/.dir-locals.el index 72ae150..d3038f3 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -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))) diff --git a/backup.sh b/backup.sh index f402585..19c095f 100755 --- a/backup.sh +++ b/backup.sh @@ -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 diff --git a/genmap.sh b/genmap.sh index 4546bb9..35d49b1 100755 --- a/genmap.sh +++ b/genmap.sh @@ -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 diff --git a/install.sh b/install.sh index cd425a8..e869982 100755 --- a/install.sh +++ b/install.sh @@ -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 Minetest server executable path." - echo -e "\t-d --minetest-dir Minetest directory to use for installing nalc mods, nalc game, minetest.conf…" - echo -e "\t-m --map-backend " - echo -e "\t-p --player-backend " - echo -e "\t-a --auth-backend " - echo -e "\t-s --mod-storage-backend " - echo -e "\t-M --minetest-mapper Install with minetest mapper support." - echo -e "\t-w --world Custom world name." - echo -e "\t-P --port Custom server port number." - echo -e "\t--url Custom remote URL." - echo -e "\t--branch 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 Minetest server executable path." + echo -e "\t-d --minetest-dir Minetest directory to use for installing nalc mods, nalc game, minetest.conf…" + echo -e "\t-m --map-backend " + echo -e "\t-p --player-backend " + echo -e "\t-a --auth-backend " + echo -e "\t-s --mod-storage-backend " + echo -e "\t-M --minetest-mapper Install with minetest mapper support." + echo -e "\t-w --world Custom world name." + echo -e "\t-P --port Custom server port number." + echo -e "\t--url Custom remote URL." + echo -e "\t--branch 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 diff --git a/shutdown.sh b/shutdown.sh index cd3331e..e81f6af 100755 --- a/shutdown.sh +++ b/shutdown.sh @@ -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 diff --git a/start.sh.example b/start.sh.example index 905d2b2..15536ed 100644 --- a/start.sh.example +++ b/start.sh.example @@ -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 diff --git a/upgrade.sh b/upgrade.sh index ee782c5..43f5386 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -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 ] [-m|--mods] [ -w|--world < -b|--branch [-f|--world-file ] > ]" - 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 \tRépertoire racine du serveur" - echo -e "\t-m --mods\t\tMet à jour les mods" - echo -e "\t-w --world \tNom de la carte" - echo -e "\t-b --branch \tBranche concerné" - echo -e "\t-f --world-file \tFichier(s) a mettre à jour :" - echo -e "\t 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 ] [-m|--mods] [ -w|--world < -b|--branch [-f|--world-file ] > ]" + 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 \tRépertoire racine du serveur" + echo -e "\t-m --mods\t\tMet à jour les mods" + echo -e "\t-w --world \tNom de la carte" + echo -e "\t-b --branch \tBranche concerné" + echo -e "\t-f --world-file \tFichier(s) a mettre à jour :" + echo -e "\t 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_ = 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_ = 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