#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2019. Tobias Kurze import logging import ssl import sys import threading from jinja2.exceptions import TemplateNotFound from backend import app, db, main_logger from backend.cron import get_default_scheduler, add_default_jobs, async_permanent_cron_recorder_checker from backend.models import * from backend.models import room_model, recorder_model, RecorderCommand, Recorder from backend.recorder_adapters import get_defined_recorder_adapters from backend.tools.model_updater import update_recorder_models_database, create_default_recorders, add_test_recorder from backend.websocket.base import WebSocketBase def _start_initial_recorder_state_update(run_in_thread=True): if run_in_thread: thread = threading.Thread(target=async_permanent_cron_recorder_checker.check_object_state, args=()) thread.start() else: async_permanent_cron_recorder_checker.check_object_state() # initial check of all recorders def _create_and_start_default_scheduler(): print("Starting Scheduler") scheduler = get_default_scheduler() add_default_jobs(scheduler) scheduler.start() return scheduler def run(): logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') print("starting ...") # db.drop_all() # db.create_all() # Recorder() room_model.pre_fill_table() update_recorder_models_database(drop=False) create_default_recorders() add_test_recorder() try: db.create_all() except Exception as e: logging.critical(e) scheduler = _create_and_start_default_scheduler() # _start_initial_recorder_state_update(run_in_thread=False) print("Server Name: {}".format(app.config.get("SERVER_NAME", None))) wsb = WebSocketBase() if app.config.get("USE_SSL", False): try: context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) context.load_cert_chain(app.config.get("CERT", 'cert.pem'), app.config.get("KEY", 'key.pem')) print("using ssl context!") #app.run(debug=True, ssl_context=context, threaded=True, # host=app.config.get("HOST", "0.0.0.0"), # port=app.config.get("PORT", 5443) # ) print("running websocket...(replaces normal app.run()") wsb.start_websocket(debug=app.config.get("DEBUG", False), host=app.config.get("HOST", "0.0.0.0"), port=app.config.get("PORT", 5443), ssl_context=context ) except FileNotFoundError: print("Could not find cert/key.pem!") #app.run(debug=True, threaded=True, # host=app.config.get("HOST", None), # port=app.config.get("PORT", 5443) # ) print("running websocket...(replaces normal app.run()") wsb.start_websocket(debug=app.config.get("DEBUG", False), host=app.config.get("HOST", "0.0.0.0"), port=app.config.get("PORT", 5443) ) else: print("running websocket...(replaces normal app.run()") wsb.start_websocket(debug=app.config.get("DEBUG", False), host=app.config.get("HOST", "0.0.0.0"), port=app.config.get("PORT", 5443) ) # print("running web app...") # app.run(debug=True, host="0.0.0.0", threaded=True) wsb.send_test_msg() print("running!") while True: user_in = input("Type >exit< to quit.") if user_in == "exit" or user_in == ">exit<": break scheduler.shutdown() sys.exit(0) if __name__ == '__main__': run()