diff options
author | Karel Kočí <cynerd@email.cz> | 2015-12-11 18:51:23 +0100 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2015-12-11 18:51:23 +0100 |
commit | d3bcf2e4366093049b5b372fbdbe14f902ae35be (patch) | |
tree | 8c20530d5e70d20a97ec12b11faedea00f6a1e69 | |
parent | b965c6e8d9ac5009a7a7f4c647e092289618e634 (diff) | |
download | mcserver-wrapper-d3bcf2e4366093049b5b372fbdbe14f902ae35be.tar.gz mcserver-wrapper-d3bcf2e4366093049b5b372fbdbe14f902ae35be.tar.bz2 mcserver-wrapper-d3bcf2e4366093049b5b372fbdbe14f902ae35be.zip |
Add automatic server shutdown
Wrapper can be set to stop server if no player is online for certain
time.
-rw-r--r-- | README.md | 6 | ||||
-rwxr-xr-x | mcwrapper | 29 | ||||
-rw-r--r-- | todo.md | 6 |
3 files changed, 40 insertions, 1 deletions
@@ -85,3 +85,9 @@ Defines command to start Minecraft server in `directory`. #### status Defines directory in which will be placed all status files generated by this wrapper. + +### timeout +Numerical value, specifying time in minutes after which will be server +automatically shutdown if no player is on server. If value is less or equal zero, +automatic shutdown is disabled. If value is not specified in configuration file, 0 +is used. @@ -9,6 +9,7 @@ import datetime import traceback import atexit from threading import Thread +from threading import Timer import importlib.machinery as imp ################################################################################# # Load configuration @@ -50,6 +51,30 @@ if not 'verbose_level' in vars(conf): conf.verbose_level = 0 if not 'server' in vars(conf): conf.server = dict() +if not 'timeout' in vars(conf): + conf.timeout = 0 + +################################################################################# + +def autoshutdown_enable(): + global shutdownTimeout + if (conf.timeout > 0): + if (conf.verbose_level > 0): + print("Automatic shutdown after " + str(conf.timeout) + + " min.") + shutdownTimeout = Timer(conf.timeout * 60.0, __server_send_stop__) + shutdownTimeout.start(); + pass + +def autoshutdown_disable(): + global shutdownTimeout + try: + shutdownTimeout.cancel() + del shutdownTimeout + if (conf.verbose_level > 0): + print("Automatic shutdown disabled.") + except NameError: + pass ################################################################################# @@ -70,6 +95,7 @@ def __user_join__(username): with open(playersFile, 'a') as f: players.add(username) f.write(username + '\n') + autoshutdown_disable() def __user_leave__(username): global playerCount @@ -83,6 +109,8 @@ def __user_leave__(username): f.writelines(players) if players: f.write('\n') + if (not players): + autoshutdown_enable() def __server_start__(): if conf.verbose_level >= 0: @@ -130,6 +158,7 @@ def __parse_line__(line): print("Server start.") with open(statusFile, 'w') as f: f.write(__STATUSSTRINGS__[2] + '\n') + autoshutdown_enable() elif ': Stopping the server' in line: print("Server stop.") with open(statusFile, 'w') as f: @@ -1,3 +1,7 @@ mcwrapper ========= - * Add automatic server shutdown after elapsed time without any player + * Add option to specify configuration file instead of environment variable + * Add option to print used configuration (source of configuration and variables) + * Overwriting specific configuration options from command line + * Format prints same as Minecraft server (time stamp and source) + * Add options to print important paths for specific server status files |