[BACK]Return to mtctl_default.sh CVS log [TXT][DIR] Up to [local] / mtctl

Diff for /mtctl/mtctl_default.sh between version 1.2 and 1.3

version 1.2, 2021/09/02 16:17:35 version 1.3, 2021/09/26 14:02:56
Line 3 
Line 3 
 # Purpose: Minetest server Control  # Purpose: Minetest server Control
 # License: Copyright (C) 2021 by Miniontoby <miniontoby@ircnow.org>  # License: Copyright (C) 2021 by Miniontoby <miniontoby@ircnow.org>
 #---------------------------------------------------------------------  #---------------------------------------------------------------------
 VERSION="1.0"  VERSION="1.2"
 config=[]  config=[]
 config[0]="no"; config[1]="/usr/local/share/minetest/"  config[0]="no"; config[1]="/usr/local/share/minetest/"
   
Line 15  mtinfo() {
Line 15  mtinfo() {
         echo -e "mtctl: $MSG" | sed -e 's/\\n/\\nmtctl: /'          echo -e "mtctl: $MSG" | sed -e 's/\\n/\\nmtctl: /'
 }  }
 mthelp() {  mthelp() {
         echo -e "usage:  mtctl start|stop|restart|status|create worldname\n        mtctl list|help|version|check_updates"; exit 1          echo -e "usage:  mtctl start|stop|restart|status|create|backup worldname\n        mtctl list|help|version|check_updates"; exit 1
 }  }
 if [ "x$1" == "x" ]; then mthelp; exit 1; fi  if [ "x$1" == "x" ]; then mthelp; exit 1; fi
   
Line 191  createMT() {
Line 191  createMT() {
         echo -ne "\nUsername: "; read USERNAME          echo -ne "\nUsername: "; read USERNAME
   
         cd $WORLDBASE; mkdir $NAME; cd $NAME          cd $WORLDBASE; mkdir $NAME; cd $NAME
         echo -e "server_name = $NAME\nserver_description = $SERVER_DESCRIPTION\nport = $PORT\nmotd = $MOTD\nfixed_map_seed = $SEED\ncreative_mode = $CREATIVE_MODE\nenable_damage = $ENABLE_DAMAGE\nenable_pvp = $ENABLE_PVP\nname = $USERNAME\nserver_announce = true\nserverlist_url = servers.minetest.net" > world.conf          echo -e "server_name = $NAME\nserver_description = $SERVER_DESCRIPTION\nport = $PORT\nmotd = $MOTD\nfixed_map_seed = $SEED\ncreative_mode = $CREATIVE_MODE\nenable_damage = $ENABLE_DAMAGE\nenable_pvp = $ENABLE_PVP\nname = $USERNAME\nserver_announce = true\nserverlist_url = servers.minetest.net\nsqlite_synchronous = 0\nserver_unload_unused_data_timeout = 900\nserver_map_save_interval = 900.0" > world.conf
         echo -e "creative_mode = $CREATIVE_MODE\nenable_damage = $ENABLE_DAMAGE\nauth_backend = sqlite3\nbackend = sqlite3\nplayer_backend = sqlite3\ngameid = minetest\nworld_name = $NAME" > world.mt          echo -e "creative_mode = $CREATIVE_MODE\nenable_damage = $ENABLE_DAMAGE\nauth_backend = sqlite3\nbackend = sqlite3\nplayer_backend = sqlite3\ngameid = minetest\nworld_name = $NAME" > world.mt
         echo -ne "\nWorld created!\nWant to start the world?(yes/no): "; read startit          echo -ne "\nWorld created!\nWant to start the world?(yes/no): "; read startit
         if [[ "$startit" == "yes" ]]; then /usr/bin/mtctl start $NAME; fi          if [[ "$startit" == "yes" ]]; then /usr/bin/mtctl start $NAME; fi
         echo -e "\nSuccess: \033[1;32mDone \033[m\nFeel free to join your new server at port $PORT"          echo -e "\nSuccess: \033[1;32mDone \033[m\nFeel free to join your new server at port $PORT"
 }  }
   
   backupMT() {
           SetWorld "$1"
           # Backup script from mtlbak by Minix
           # Copyright (C) 2021 Minix from FreedomTest (freedomtest@protonmail.com)
   
           BACKUP_DIR="$CONFDIR/backups/$NAME"
           LOG_FILE="$LOGDIR/backup_$NAME.log"
           mkdir -p $BACKUP_DIR
           echo -ne "" >> $LOG_FILE
   
           if [ -f /tmp/$(basename $WORLDDIR)_local_backup_in_progress ]; then
                   echo "\nBackup for $(basename $WORLDDIR) on $(date) aborted because another backup is already in progress, this may be caused by a backup that is taking longer than expected" >> $LOG_FILE
                   mtinfo "Backup for $(basename $WORLDDIR) on $(date) aborted because another backup is already in progress, this may be caused by a backup that is taking longer than expected"
                   exit 1
           fi
   
           touch /tmp/$(basename $WORLDDIR)_local_backup_in_progress
           rm $BACKUP_DIR/map.sqlite.tmp* 2> /dev/null #Cleaning in case of crashed attempts
   
           echo -e "\n$(date) backup started" >> $LOG_FILE
           mtstatus "Backup started"
   
           try=0
           while [ $try -lt 5 ]; do
                   echo "Starting backup attempt #$(expr $try + 1) on $(date)" >> $LOG_FILE
                   sqlite3 $WORLDDIR/map.sqlite ".backup $BACKUP_DIR/map.sqlite.tmp" 2> /dev/null
                   if [ $? -eq 0 ]; then
                           mv $BACKUP_DIR/{map.sqlite.tmp,map.sqlite}
                           #Backup auth.sqlite and players.sqlite files properly
                           until sqlite3 $WORLDDIR/auth.sqlite ".backup $BACKUP_DIR/auth.sqlite" 2> /dev/null; do
                                   continue
                           done
                           until sqlite3 $WORLDDIR/players.sqlite ".backup $BACKUP_DIR/players.sqlite" 2> /dev/null; do
                                   continue
                           done
                           rsync -ptrW --delete --exclude "*.sqlite" $WORLDDIR/ $BACKUP_DIR/
                           echo "Backup finished succesfully on $(date)" >> $LOG_FILE
                           mtstatus "Backup success"
                           rm /tmp/$(basename $WORLDDIR)_local_backup_in_progress 2> /dev/null
                           exit 0
                   else
                           rm $BACKUP_DIR/map.sqlite.tmp 2> /dev/null
                           try=$(expr $try + 1)
                           if [ $try -eq 5 ]; then
                                   echo "Backup failed 5 times, aborting on $(date)" >> $LOG_FILE
                                   mtstatus "Backup failed"
                                   rm /tmp/$(basename $WORLDDIR)_local_backup_in_progress 2> /dev/null
                                   exit 1
                           else
                                   echo "map.sqlite backup attempt #$try failed, retrying in 60 seconds" >> $LOG_FILE
                                   sleep 60
                           fi
                   fi
           done
   }
   
   
 #---------------------------------------------------------------------  #---------------------------------------------------------------------
 # Handle the actions  # Handle the actions
 ACTION="$1"  ACTION="$1"
Line 234  case $ACTION in
Line 291  case $ACTION in
                 NEWESTVERSION=$(curl https://cvsweb.planetofnix.com/cgi-bin/cvsweb/~checkout~/mtctl/version.txt?content-type=text/plain 2> /dev/null)                  NEWESTVERSION=$(curl https://cvsweb.planetofnix.com/cgi-bin/cvsweb/~checkout~/mtctl/version.txt?content-type=text/plain 2> /dev/null)
                 if [ "$NEWESTVERSION" \!= "$VERSION" ]; then                  if [ "$NEWESTVERSION" \!= "$VERSION" ]; then
                         mtinfo "Update avaible!\n\nInstalling update NOW!"                          mtinfo "Update avaible!\n\nInstalling update NOW!"
                         curl -sSL https://ircforever.org/mtctl.php | $SHELL                          curl -sSLk https://ircforever.org/mtctl.php | $SHELL
                 fi                  fi
                 ;;                  ;;
         help)          help)

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

CVSweb