forked from Hay1tsme/artemis
52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
import yaml
|
|
import logging
|
|
from starlette.routing import Mount, Route
|
|
from starlette.requests import Request
|
|
from starlette.applications import Starlette
|
|
from starlette.responses import PlainTextResponse
|
|
from os import environ, path
|
|
from typing import List
|
|
|
|
from core import CoreConfig, TitleServlet, MuchaServlet, logger
|
|
from core.allnet import app_allnet, app_billing
|
|
from core.frontend import FrontendServlet
|
|
|
|
async def dummy_rt(request: Request):
|
|
return PlainTextResponse("Service OK")
|
|
|
|
cfg_dir = environ.get("ARTEMIS_CFG_DIR", "config")
|
|
cfg: CoreConfig = CoreConfig()
|
|
if path.exists(f"{cfg_dir}/core.yaml"):
|
|
cfg.update(yaml.safe_load(open(f"{cfg_dir}/core.yaml")))
|
|
|
|
logger = logger.create_logger(
|
|
"Core",
|
|
logging.DEBUG if cfg.server.is_develop else logging.INFO,
|
|
)
|
|
|
|
logger.info(f"Artemis starting in {'develop' if cfg.server.is_develop else 'production'} mode")
|
|
|
|
title = TitleServlet(cfg, cfg_dir) # This has to be loaded first to load plugins
|
|
mucha = MuchaServlet(cfg, cfg_dir)
|
|
|
|
route_lst: List[Route] = [
|
|
# Mucha
|
|
Route("/mucha_front/boardauth.do", mucha.handle_boardauth, methods=["POST"]),
|
|
Route("/mucha_front/updatacheck.do", mucha.handle_updatecheck, methods=["POST"]),
|
|
Route("/mucha_front/downloadstate.do", mucha.handle_dlstate, methods=["POST"]),
|
|
# General
|
|
Route("/", dummy_rt),
|
|
Route("/robots.txt", FrontendServlet.robots)
|
|
]
|
|
|
|
if not cfg.billing.standalone:
|
|
route_lst += app_billing.router.routes
|
|
|
|
if not cfg.allnet.standalone:
|
|
route_lst += app_allnet.router.routes
|
|
|
|
for code, game in title.title_registry.items():
|
|
route_lst += game.get_routes()
|
|
|
|
app = Starlette(cfg.server.is_develop, route_lst)
|