diff --git a/core/utils.py b/core/utils.py index 9daa409..325272e 100644 --- a/core/utils.py +++ b/core/utils.py @@ -54,7 +54,7 @@ class Utils: if cls.real_title_port_ssl is not None: return cls.real_title_port_ssl if cfg.title.port_ssl == 0: - cls.real_title_port_ssl = cfg.allnet.port + cls.real_title_port_ssl = 443 else: cls.real_title_port_ssl = cfg.title.port_ssl diff --git a/titles/cxb/base.py b/titles/cxb/base.py index 3de83c7..26dfe12 100644 --- a/titles/cxb/base.py +++ b/titles/cxb/base.py @@ -7,9 +7,9 @@ from hashlib import md5 from datetime import datetime from core.config import CoreConfig -from titles.cxb.config import CxbConfig -from titles.cxb.const import CxbConstants -from titles.cxb.database import CxbData +from .config import CxbConfig +from .const import CxbConstants +from .database import CxbData from threading import Thread diff --git a/titles/cxb/index.py b/titles/cxb/index.py index 25a843e..50d0793 100644 --- a/titles/cxb/index.py +++ b/titles/cxb/index.py @@ -7,18 +7,20 @@ import re import inflection import logging, coloredlogs from logging.handlers import TimedRotatingFileHandler -from typing import Dict, Tuple +from typing import Dict, Tuple, List from os import path from core.config import CoreConfig -from titles.cxb.config import CxbConfig -from titles.cxb.const import CxbConstants -from titles.cxb.rev import CxbRev -from titles.cxb.rss1 import CxbRevSunriseS1 -from titles.cxb.rss2 import CxbRevSunriseS2 +from core.title import BaseServlet +from core.utils import Utils +from .config import CxbConfig +from .const import CxbConstants +from .rev import CxbRev +from .rss1 import CxbRevSunriseS1 +from .rss2 import CxbRevSunriseS2 -class CxbServlet(resource.Resource): +class CxbServlet(BaseServlet): def __init__(self, core_cfg: CoreConfig, cfg_dir: str) -> None: self.isLeaf = True self.cfg_dir = cfg_dir @@ -61,9 +63,7 @@ class CxbServlet(resource.Resource): ] @classmethod - def get_allnet_info( - cls, game_code: str, core_cfg: CoreConfig, cfg_dir: str - ) -> Tuple[bool, str, str]: + def is_game_enabled(cls, game_code: str, core_cfg: CoreConfig, cfg_dir: str) -> bool: game_cfg = CxbConfig() if path.exists(f"{cfg_dir}/{CxbConstants.CONFIG_NAME}"): game_cfg.update( @@ -71,37 +71,28 @@ class CxbServlet(resource.Resource): ) if not game_cfg.server.enable: - return (False, "", "") - - if core_cfg.server.is_develop: + return False + + return True + + def get_allnet_info(self, game_code: str, game_ver: int, keychip: str) -> Tuple[str, str]: + if not self.core_cfg.server.is_using_proxy and Utils.get_title_port_ssl(self.core_cfg) != 443: return ( - True, - f"http://{core_cfg.title.hostname}:{core_cfg.title.port}/{game_code}/$v/", + f"https://{self.core_cfg.title.hostname}:{self.core_cfg.title.port_ssl}", "", ) - return (True, f"http://{core_cfg.title.hostname}/{game_code}/$v/", "") - - def setup(self): - if self.game_cfg.server.enable: - endpoints.serverFromString( - reactor, - f"tcp:{self.game_cfg.server.port}:interface={self.core_cfg.server.listen_address}", - ).listen(server.Site(CxbServlet(self.core_cfg, self.cfg_dir))) - - if self.core_cfg.server.is_develop and self.game_cfg.server.ssl_enable: - endpoints.serverFromString( - reactor, - f"ssl:{self.game_cfg.server.port_secure}" - f":interface={self.core_cfg.server.listen_address}:privateKey={self.game_cfg.server.ssl_key}:" - f"certKey={self.game_cfg.server.ssl_cert}", - ).listen(server.Site(CxbServlet(self.core_cfg, self.cfg_dir))) - - self.logger.info( - f"Ready on ports {self.game_cfg.server.port} & {self.game_cfg.server.port_secure}" - ) - else: - self.logger.info(f"Ready on port {self.game_cfg.server.port}") + return (f"https://{self.core_cfg.title.hostname}", "") + + def get_endpoint_matchers(self) -> Tuple[List[Tuple[str, str, Dict]], List[Tuple[str, str, Dict]]]: + return ( + [], + [ + ("handle_data", "/data", {}), + ("handle_action", "/action/{endpoint}", {}), + ("handle_auth", "/auth/{endpoint}", {}), + ] + ) def render_POST(self, request: Request, version: int, endpoint: str): version = 0 diff --git a/titles/cxb/rev.py b/titles/cxb/rev.py index c78e622..722e3fa 100644 --- a/titles/cxb/rev.py +++ b/titles/cxb/rev.py @@ -7,9 +7,9 @@ from datetime import datetime from core.config import CoreConfig from core.data import Data, cached -from titles.cxb.config import CxbConfig -from titles.cxb.base import CxbBase -from titles.cxb.const import CxbConstants +from .config import CxbConfig +from .base import CxbBase +from .const import CxbConstants class CxbRev(CxbBase): diff --git a/titles/cxb/rss1.py b/titles/cxb/rss1.py index ba428f7..1101aa2 100644 --- a/titles/cxb/rss1.py +++ b/titles/cxb/rss1.py @@ -7,9 +7,9 @@ from datetime import datetime from core.config import CoreConfig from core.data import Data, cached -from titles.cxb.config import CxbConfig -from titles.cxb.base import CxbBase -from titles.cxb.const import CxbConstants +from .config import CxbConfig +from .base import CxbBase +from .const import CxbConstants class CxbRevSunriseS1(CxbBase): diff --git a/titles/cxb/rss2.py b/titles/cxb/rss2.py index e32e762..07ee13b 100644 --- a/titles/cxb/rss2.py +++ b/titles/cxb/rss2.py @@ -7,9 +7,9 @@ from datetime import datetime from core.config import CoreConfig from core.data import Data, cached -from titles.cxb.config import CxbConfig -from titles.cxb.base import CxbBase -from titles.cxb.const import CxbConstants +from .config import CxbConfig +from .base import CxbBase +from .const import CxbConstants class CxbRevSunriseS2(CxbBase):