Added libs
This commit is contained in:
117
app/main.py
Normal file
117
app/main.py
Normal file
@@ -0,0 +1,117 @@
|
||||
import os, sys
|
||||
import time
|
||||
import logging
|
||||
import traceback
|
||||
import webbrowser
|
||||
import webview
|
||||
import threading
|
||||
|
||||
from common.paths import ROOT_DIR
|
||||
sys.path.insert(0, str(ROOT_DIR))
|
||||
|
||||
from libs.app.common.logging import get_logger, get_logger_buffer, list_loggers
|
||||
from libs.app.common.args import read_kargs, kargs_to_array
|
||||
from libs.app.common.config import Config
|
||||
from libs.app.common.network_utils import check_url
|
||||
from libs.app.updater import Updater
|
||||
from libs.app.ui.ui_server import UIServer
|
||||
|
||||
logger = get_logger(buffer=True)
|
||||
logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
|
||||
|
||||
|
||||
class App:
|
||||
def __init__(self):
|
||||
self.config = Config()
|
||||
|
||||
self.nosys_api_host = self.config.get("api", "server", "host")
|
||||
self.nosys_api_port = self.config.get("api", "server", "port")
|
||||
|
||||
self.ui_server = UIServer()
|
||||
self.ui_server.start()
|
||||
|
||||
self.updater = Updater(self.config)
|
||||
self.updater.register_listener(self.on_updater_event)
|
||||
|
||||
get_logger_buffer("app").register_listener(self.on_log)
|
||||
get_logger_buffer("app.updater").register_listener(self.on_log)
|
||||
|
||||
def start_frontend(self):
|
||||
url = "http://127.0.0.1:5000/"
|
||||
logger.debug("Opening browser...")
|
||||
webbrowser.open(url)
|
||||
|
||||
# logger.debug("Starting webview ...")
|
||||
# webview.create_window(
|
||||
# "NoSys",
|
||||
# url,
|
||||
# width=800,
|
||||
# height=800,
|
||||
# resizable=True,
|
||||
# confirm_close=False,
|
||||
# text_select=True,
|
||||
# frameless=False,
|
||||
# background_color="#000000",
|
||||
# )
|
||||
|
||||
# webview.start(debug=True)
|
||||
|
||||
def update_libraries(self):
|
||||
"""Update libs and restart if app itself was updated."""
|
||||
updated = self.updater.update_libs()
|
||||
if updated.get("app") == "Success updated":
|
||||
logger.warning("App updated, restarting...")
|
||||
self.ui_server.emit_event("restarting")
|
||||
self.ui_server.stop()
|
||||
os.execv(sys.executable, [sys.executable] + sys.argv)
|
||||
|
||||
def start_nosys(self):
|
||||
url = f"https://{self.nosys_api_host}:{self.nosys_api_port}/api/api/health"
|
||||
|
||||
logger.debug(f"Checking NoSys Server {url} ...")
|
||||
if check_url(url, 3, 1, verify_ssl=True):
|
||||
logger.debug("NoSys already running")
|
||||
self.ui_server.emit_event("redirect", {"url": f"https://{self.nosys_api_host}:{self.nosys_api_port}"})
|
||||
return
|
||||
|
||||
logger.debug("Starting NoSys")
|
||||
self.ui_server.emit_event("nosys_starting")
|
||||
from libs.noSys.noSysCore import NoSysCore
|
||||
from libs.noSys.events import Events
|
||||
|
||||
self.nosys_core = NoSysCore()
|
||||
get_logger_buffer("noSys").register_listener(self.on_log)
|
||||
get_logger_buffer("noSys").register_listener(self.on_log)
|
||||
get_logger_buffer("noSys.moduleManager").register_listener(self.on_log)
|
||||
self.nosys_core.subscribe_event(Events.READY, self.on_nosys_ready)
|
||||
self.nosys_core.start()
|
||||
|
||||
def start(self):
|
||||
self.start_frontend()
|
||||
self.update_libraries()
|
||||
self.config.load_libs_config()
|
||||
self.start_nosys()
|
||||
|
||||
def on_updater_event(self, event):
|
||||
if event.name == "status_lib":
|
||||
self.ui_server.emit_event(event.name, {"lib":event.lib, "status": event.status})
|
||||
|
||||
def on_log(self, record):
|
||||
self.ui_server.emit_event("log", {"levelname":record.levelname, "message":record.message})
|
||||
|
||||
def on_nosys_ready(self, event):
|
||||
logger.debug(f"Stoping startup frontend server and redirecting to nosys server {self.nosys_api_host}:{self.nosys_api_port} ...")
|
||||
self.ui_server.emit_event("redirect", {"url": f"https://{self.nosys_api_host}:{self.nosys_api_port}"})
|
||||
self.ui_server.stop()
|
||||
|
||||
def main():
|
||||
try:
|
||||
app = App()
|
||||
app.start()
|
||||
input("Done\nPress any key to close\n")
|
||||
except Exception:
|
||||
logger.exception("Error")
|
||||
input("Error\nPress any key to close\n")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user