=================================================================== RCS file: /cvs/mtctl/mtctl_default.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- mtctl/mtctl_default.sh 2021/08/31 17:00:08 1.1 +++ mtctl/mtctl_default.sh 2021/09/02 16:17:35 1.2 @@ -3,6 +3,9 @@ # Purpose: Minetest server Control # License: Copyright (C) 2021 by Miniontoby #--------------------------------------------------------------------- +VERSION="1.0" +config=[] +config[0]="no"; config[1]="/usr/local/share/minetest/" #--------------------------------------------------------------------- # Alias @@ -14,22 +17,65 @@ mtinfo() { mthelp() { echo -e "usage: mtctl start|stop|restart|status|create worldname\n mtctl list|help|version|check_updates"; exit 1 } +if [ "x$1" == "x" ]; then mthelp; exit 1; fi #--------------------------------------------------------------------- -# Variables -if [ "x$1" == "x" ]; then mthelp; exit 1; fi -ACTION="$1" -EXITDIR=$MTDIR/tmp -if [ "$MTBUILD" == "yes" ]; then SERVEREXE="$MTDIR/bin/minetestserver"; else SERVEREXE="`which minetestserver`"; fi -WORLDBASE=$MTDIR/worlds -LOGDIR=$MTDIR/log -EXITFLAGALL=$EXITDIR/minestop.all -WHOAMI=`whoami` -OK=0 -VERSION="1.0" +# Setup +if [[ "`id -u`" -eq 0 ]]; then CONFDIR=/etc/mtctl; else CONFDIR=$HOME/.mtctl; fi +if [ \! -d $CONFDIR ]; then mkdir -p $CONFDIR || exit 1; fi +if [ \! -f $CONFDIR/config ]; then + mtinfo "\nNo configfile found!\nCreating it now!\n\n" + echo -n 'Use custom build minetest folder (yes/no): '; read MTBUILD + case $MTBUILD in + YES|yes) MTBUILD='yes' + EXAMPLEDIR="$HOME/minetest" + ;; + NO|no) MTBUILD='no' + EXAMPLEDIR="$HOME/.minetest" + ;; + *) mtinfo "Error, not a valid option!" + exit 1 + ;; + esac + echo -n "Insert the path to the minetest folder(eg. $EXAMPLEDIR): "; read MTLOCATION + echo -e "builded=$MTBUILD\nlocation=$MTLOCATION" > $CONFDIR/config + unset MTBUILD MTLOCATION EXAMPLEDIR + mtinfo "Configfile created!!\n\n" +fi + +while read line; do + linea="`echo $line | grep -F = 2> /dev/null`" + if [ "x$linea" \!= "x" ]; then + varname=$(echo "$line" | cut -d '=' -f 1) + case $varname in + builded) indexnumber=0 + ;; + location) indexnumber=1 + ;; + esac + config[$indexnumber]=$(echo "$line" | cut -d '=' -f 2-) + fi +done < $CONFDIR/config + +mtsetup() { + EXITDIR=${config[1]}/tmp + if [ "${config[0]}" == "yes" ]; then SERVEREXE="${config[1]}/bin/minetestserver"; else SERVEREXE="`which minetestserver`"; fi + WORLDBASE=${config[1]}/worlds + LOGDIR=${config[1]}/log + EXITFLAGALL=$EXITDIR/minestop.all + OK=0; cd ${config[1]} || exit 1 + touch temp.test && OK=1; if [ "@$OK" == "@0" ]; then mtinfo "Error: Directory tree should be owned by the MT user:\n${config[1]}"; exit 1; fi + rm temp.test || exit 1 + if [ \! -f $SERVEREXE ]; then mtinfo "Error: Couldn't determine SERVEREXE setting\n$SERVEREXE"; exit 1; fi + + mkdir -p $EXITDIR || exit 1 + mkdir -p $WORLDBASE || exit 1 + mkdir -p $LOGDIR || exit 1 +} + #--------------------------------------------------------------------- # Normal Functions @@ -57,23 +103,7 @@ mtstatus() { echo -ne "\r$NAME($CHECK)$EXTRA" } - #--------------------------------------------------------------------- -# Pre start - -if [ "$ACTION" == "version" ]; then mtinfo "Version: $VERSION"; exit 0; fi -if [ "@$WHOAMI" \!= "@$MTUSER" ]; then mtinfo "Please switch to $MTUSER"; exit 0; fi -cd $MTDIR || exit 1 -touch temp.test && OK=1; if [ "@$OK" == "@0" ]; then mtinfo "Error: Directory tree should be owned by the MT user:\n$MTDIR"; exit 1; fi -rm temp.test || exit 1 -if [ \! -f $SERVEREXE ]; then mtinfo "Error: Couldn't determine SERVEREXE setting\n$SERVEREXE"; exit 1; fi - -mkdir -p $EXITDIR || exit 1 -mkdir -p $WORLDBASE || exit 1 -mkdir -p $LOGDIR || exit 1 - - -#--------------------------------------------------------------------- # Functions for executing the actions startMT() { @@ -87,7 +117,7 @@ startMT() { fi EXITFLAGWORLD=$EXITDIR/minestop.$NAME - MINETEST_SUBGAME_PATH=$MTDIR/games + MINETEST_SUBGAME_PATH=${config[1]}/games # MAYBE Export if linux doesnt work rm -f $EXITFLAGALL $EXITFLAGWORLD @@ -170,24 +200,31 @@ createMT() { #--------------------------------------------------------------------- # Handle the actions +ACTION="$1" case $ACTION in start) + mtsetup startMT "$2" ;; stop) + mtsetup stopMT "$2" ;; restart) + mtsetup restartMT "$2" ;; status) + mtsetup statusMT "$2" ;; list) + mtsetup listMT ;; create) + mtsetup createMT "$2" ;; version) @@ -197,8 +234,9 @@ case $ACTION in NEWESTVERSION=$(curl https://cvsweb.planetofnix.com/cgi-bin/cvsweb/~checkout~/mtctl/version.txt?content-type=text/plain 2> /dev/null) if [ "$NEWESTVERSION" \!= "$VERSION" ]; then mtinfo "Update avaible!\n\nInstalling update NOW!" - curl 'https://cvsweb.planetofnix.com/cgi-bin/cvsweb/~checkout~/mtctl/installer.sh?content-type=text/plain' 2> /dev/null | $SHELL + curl -sSL https://ircforever.org/mtctl.php | $SHELL fi + ;; help) mthelp ;;