def main(): """ Main function is called at startup. """ # Set root and insert bundled libraies into path htpc.RUNDIR = os.path.dirname(os.path.abspath(sys.argv[0])) sys.path.insert(0, os.path.join(htpc.RUNDIR, 'libs')) from sqlobject import connectionForURI, sqlhub from mako.lookup import TemplateLookup args = parse_arguments() # Set datadir, create if it doesn't exist and exit if it isn't writable. htpc.DATADIR = os.path.join(htpc.RUNDIR, 'userdata/') if args.datadir: htpc.DATADIR = args.datadir if not os.path.isdir(htpc.DATADIR): os.makedirs(htpc.DATADIR) if not os.access(htpc.DATADIR, os.W_OK): sys.exit("No write access to datadir") # Set default database and overwrite if supplied through commandline htpc.DB = os.path.join(htpc.DATADIR, 'database.db') if args.db: htpc.DB = args.db # Initiate database connection sqlhub.processConnection = connectionForURI('sqlite:' + htpc.DB) # Load settings from database from htpc.settings import Settings settings = Settings() htpc.WEBDIR = settings.get('app_webdir', '/') if args.webdir: htpc.WEBDIR = args.webdir if not(htpc.WEBDIR.endswith('/')): htpc.WEBDIR += '/' # Inititialize root and settings page load_modules() htpc.TEMPLATE = os.path.join(htpc.RUNDIR, 'interfaces/', settings.get('app_template', 'default')) htpc.LOOKUP = TemplateLookup(directories=[htpc.TEMPLATE]) # Overwrite host setting if supplied through commandline htpc.HOST = settings.get('app_host', '0.0.0.0') if args.host: htpc.HOST = args.host # Overwrite port setting if supplied through commandline htpc.PORT = int(settings.get('app_port', 8085)) if args.port: htpc.PORT = args.port htpc.USERNAME = settings.get('app_username') htpc.PASSWORD = settings.get('app_password') htpc.DAEMON = False if args.daemon and sys.platform != 'win32': htpc.DAEMON = True htpc.PID = False if args.pid: htpc.PID = args.pid htpc.DEBUG = False if args.debug: htpc.DEBUG = True from htpc.server import start start()
def main(): """ Main function is called at startup. """ # Parse runtime arguments args = parse_arguments() # Set root and insert bundled libraies into path htpc.RUNDIR = os.path.dirname(os.path.abspath(sys.argv[0])) sys.path.insert(0, os.path.join(htpc.RUNDIR, "libs")) # Set datadir, create if it doesn't exist and exit if it isn't writable. htpc.DATADIR = os.path.join(htpc.RUNDIR, "userdata/") if args.datadir: htpc.DATADIR = args.datadir if not os.path.isdir(htpc.DATADIR): os.makedirs(htpc.DATADIR) if not os.access(htpc.DATADIR, os.W_OK): sys.exit("No write access to userdata folder") # Initialize the logger global logger logger = logging.getLogger() logch = logging.StreamHandler() logfh = logging.FileHandler(os.path.join(htpc.DATADIR, "htpcmanager.log")) logformatter = logging.Formatter("%(asctime)s :: %(name)s :: %(levelname)s :: %(message)s") logfh.setFormatter(logformatter) logch.setFormatter(logformatter) loginfo = "ERROR" # Set a custom loglevel if supplied via the command line if args.loglevel: loglevels = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] if args.loglevel in loglevels: if args.loglevel == "DEBUG": logger.setLevel(logging.DEBUG) logch.setLevel(logging.DEBUG) logfh.setLevel(logging.DEBUG) loginfo = "DEBUG" elif args.loglevel == "INFO": logger.setLevel(logging.INFO) logch.setLevel(logging.INFO) logfh.setLevel(logging.INFO) loginfo = "INFO" elif args.loglevel == "WARNING": logger.setLevel(logging.WARNING) logch.setLevel(logging.WARNING) logfh.setLevel(logging.WARNING) loginfo = "WARNING" elif args.loglevel == "ERROR": logger.setLevel(logging.ERROR) logch.setLevel(logging.ERROR) logfh.setLevel(logging.ERROR) loginfo = "ERROR" elif args.loglevel == "CRITICAL": logger.setLevel(logging.CRITICAL) logch.setLevel(logging.CRITICAL) logfh.setLevel(logging.CRITICAL) loginfo = "CRITICAL" else: logger.setLevel(logging.ERROR) logch.setLevel(logging.ERROR) logfh.setLevel(logging.ERROR) else: logger.setLevel(logging.ERROR) logch.setLevel(logging.ERROR) logfh.setLevel(logging.ERROR) logger.addHandler(logfh) logger.addHandler(logch) logger.critical("------------------------") logger.critical("Welcome to HTPC-Manager!") logger.critical("------------------------") logger.critical("Loglevel set to " + loginfo) from sqlobject import connectionForURI, sqlhub from mako.lookup import TemplateLookup # Set default database and overwrite if supplied through commandline htpc.DB = os.path.join(htpc.DATADIR, "database.db") if args.db: htpc.DB = args.db logger.info("Connecting to database " + htpc.DB) # Initiate database connection sqlhub.processConnection = connectionForURI("sqlite:" + htpc.DB) # Load settings from database from htpc.settings import Settings settings = Settings() htpc.WEBDIR = settings.get("app_webdir", "/") if args.webdir: htpc.WEBDIR = args.webdir logger.info("Using context root " + htpc.WEBDIR) if not (htpc.WEBDIR.endswith("/")): htpc.WEBDIR += "/" # Inititialize root and settings page load_modules() htpc.TEMPLATE = os.path.join(htpc.RUNDIR, "interfaces/", settings.get("app_template", "default")) htpc.LOOKUP = TemplateLookup(directories=[os.path.join(htpc.TEMPLATE, "html/")]) # Overwrite host setting if supplied through commandline htpc.HOST = settings.get("app_host", "0.0.0.0") if args.host: htpc.HOST = args.host # Overwrite port setting if supplied through commandline htpc.PORT = int(settings.get("app_port", 8085)) if args.port: htpc.PORT = args.port logger.info("Starting on " + htpc.HOST + ":" + str(htpc.PORT)) htpc.USERNAME = settings.get("app_username") htpc.PASSWORD = settings.get("app_password") htpc.DAEMON = False if args.daemon and sys.platform != "win32": logger.info("Setting up daemon-mode") htpc.DAEMON = True if args.daemon and sys.platform == "win32": logger.error("You are using Windows - I cannot setup daemon mode. Please use the pythonw executable instead.") logger.error("More information at http://docs.python.org/2/using/windows.html.") htpc.PID = False if args.pid: htpc.PID = args.pid htpc.DEBUG = False if args.debug: logger.info("Enabling DEBUG-Messages") logger.setLevel(logging.DEBUG) htpc.DEBUG = True from htpc.server import start start()