#!/usr/bin/env python3 import os import sys from src.server.data import constants from src.server.data.args import Args from src.server.data.config_general import ConfigGeneral from src.server.ui.cli.cli_main import CliMain from src.server.util.logging.logger import Logger from src.server.util.logging.logger_backend import LoggerBackend from src.server.util.logging.logger_cli import LoggerCli from src.server.util.logging.logger_gui import LoggerGui from src.server.util.logging.logger_wpa import LoggerWpa from src.server.util.os_util import OsUtil def init_loggers(): """ Initialize loggers with a specified log level if they have the argument. :return: None """ loggers = (Logger, LoggerBackend, LoggerGui, LoggerCli, LoggerWpa) for logger in loggers: if Args.args.debug: logger.set_level(Logger.DEBUG) elif Args.args.extra: logger.set_level(Logger.EXTRA) elif Args.args.finer: logger.set_level(Logger.FINER) elif Args.args.verbose: logger.set_level(Logger.VERBOSE) else: logger.set_level(Logger.INFO) def start(): """ Main loop. It can be GUI or CLI based on args. Dies if an error makes it way here or main loop stops. :return: None """ ui = None try: if Args.args.cli: Logger.info("Enabling CLI") ui = CliMain() else: Logger.info("Enabling GUI") from src.server.ui.gui.gui_main import GuiMain ui = GuiMain() ui.start() except KeyboardInterrupt: if ui: ui.stop() except Exception as e: if ui: ui.stop() Logger.exception(e) Logger.info("Exiting") def log_level(): """ Log at every level to display the levels that are enabled. :return: None """ # Logger info Logger.debug("Debug logging enabled") Logger.extra("Extra debug logging enabled") Logger.finer("Finer debug logging enabled") Logger.verbose("Verbose logging enabled") if LoggerWpa.get_level() <= Logger.FINER: LoggerWpa.warn("At this log level SSIDs are logged!") def check_root(): """ Exit if not root :return: """ if os.getuid() != 0: Logger.throw("Not running as root!") sys.exit() else: Logger.extra("I am root!") def main(): """ Main entry point. Parses arguments, loads configuration files, initialized loggers and starts the main loop. :return: None """ Args.parse_args() ConfigGeneral.load() ConfigGeneral.save() init_loggers() check_root() Logger.info("Initializing drc-sim-backend version %s", constants.VERSION) Logger.info("Using \"%s\" as home folder.", constants.PATH_ROOT) log_level() OsUtil.log_info(Logger) start() if __name__ == '__main__': main()