crafty-4/main.py

127 lines
3.7 KiB
Python
Raw Normal View History

2020-08-12 00:36:09 +00:00
import os
import sys
import json
import time
import argparse
import logging.config
""" Our custom classes / pip packages """
from app.classes.shared.console import console
from app.classes.shared.helpers import helper
from app.classes.shared.models import installer
from app.classes.shared.controller import controller
from app.classes.shared.cmd import MainPrompt
2020-08-12 00:36:09 +00:00
2020-08-12 00:36:09 +00:00
def do_intro():
logger.info("***** Crafty Controller Started *****")
2020-08-12 00:36:09 +00:00
version = helper.get_version_string()
2020-08-12 00:36:09 +00:00
intro = """
{lines}
#\t\tWelcome to Crafty Controller - v.{version}\t\t #
{lines}
# \tServer Manager / Web Portal for your Minecraft server \t #
# \t\tHomepage: www.craftycontrol.com\t\t\t #
{lines}
""".format(lines="/" * 75, version=version)
console.magenta(intro)
def setup_logging(debug=False):
logging_config_file = os.path.join(os.path.curdir,
'app',
'config',
'logging.json'
)
if os.path.exists(logging_config_file):
# open our logging config file
with open(logging_config_file, 'rt') as f:
logging_config = json.load(f)
if debug:
logging_config['loggers']['']['level'] = 'DEBUG'
2020-08-12 00:36:09 +00:00
logging.config.dictConfig(logging_config)
2020-08-12 00:36:09 +00:00
else:
logging.basicConfig(level=logging.DEBUG)
logging.warning("Unable to read logging config from {}".format(logging_config_file))
console.critical("Unable to read logging config from {}".format(logging_config_file))
""" Our Main Starter """
if __name__ == '__main__':
parser = argparse.ArgumentParser("Crafty Controller - A Server Management System")
2020-08-12 00:36:09 +00:00
parser.add_argument('-i', '--ignore',
action='store_true',
help="Ignore session.lock files"
2020-08-12 00:36:09 +00:00
)
parser.add_argument('-v', '--verbose',
action='store_true',
help="Sets logging level to debug."
)
args = parser.parse_args()
helper.ensure_logging_setup()
setup_logging(debug=args.verbose)
# setting up the logger object
logger = logging.getLogger(__name__)
print("Logging set to: {} ".format(logger.level))
2020-08-12 00:36:09 +00:00
# print our pretty start message
do_intro()
# our session file, helps prevent multiple controller agents on the same machine.
2020-08-12 00:36:09 +00:00
helper.create_session_file(ignore=args.ignore)
# do our installer stuff
fresh_install = installer.is_fresh_install()
if fresh_install:
installer.create_tables()
installer.default_settings()
# now the tables are created, we can load the tasks_manger
from app.classes.shared.tasks import tasks_manager
2020-08-12 00:36:09 +00:00
tasks_manager.start_webserver()
tasks_manager.start_scheduler()
# slowing down reporting just for a 1/2 second so messages look cleaner
time.sleep(.5)
2020-08-12 00:36:09 +00:00
2020-08-24 23:16:33 +00:00
# init servers
logger.info("Initializing all servers defined")
console.info("Initializing all servers defined")
controller.init_all_servers()
servers = controller.list_defined_servers()
# start stats logging
tasks_manager.start_stats_recording()
2020-08-23 22:43:28 +00:00
# refresh our cache and schedule for every 12 hoursour cache refresh for serverjars.com
tasks_manager.serverjar_cache_refresher()
2020-08-12 00:36:09 +00:00
# this should always be last
tasks_manager.start_main_kill_switch_watcher()
Crafty = MainPrompt()
Crafty.cmdloop()
# our main loop - eventually a shell
# while True:
# if tasks_manager.get_main_thread_run_status():
# sys.exit(0)
# time.sleep(1)