Merge pull request 'chu&mai2: add option to use https' (#217) from zaphkito/artemis:chumai_https into develop

Reviewed-on: Hay1tsme/artemis#217
This commit is contained in:
2025-07-13 05:22:18 +00:00
6 changed files with 54 additions and 9 deletions

View File

@ -2,6 +2,7 @@ server:
enable: True enable: True
loglevel: "info" loglevel: "info"
news_msg: "" news_msg: ""
use_https: False # for CRYSTAL PLUS and later or SUPERSTAR and later
team: team:
name: ARTEMiS # If this is set, all players that are not on a team will use this one by default. name: ARTEMiS # If this is set, all players that are not on a team will use this one by default.

View File

@ -1,6 +1,7 @@
server: server:
enable: True enable: True
loglevel: "info" loglevel: "info"
use_https: False # for DX and later
deliver: deliver:
enable: False enable: False

View File

@ -25,6 +25,12 @@ class ChuniServerConfig:
return CoreConfig.get_config_field( return CoreConfig.get_config_field(
self.__config, "chuni", "server", "news_msg", default="" self.__config, "chuni", "server", "news_msg", default=""
) )
@property
def use_https(self) -> bool:
return CoreConfig.get_config_field(
self.__config, "chuni", "server", "use_https", default=False
)
class ChuniTeamConfig: class ChuniTeamConfig:

View File

@ -190,10 +190,26 @@ class ChuniServlet(BaseServlet):
return True return True
def get_allnet_info(self, game_code: str, game_ver: int, keychip: str) -> Tuple[str, str]: 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(self.core_cfg) != 80: title_port_int = Utils.get_title_port(self.core_cfg)
return (f"http://{self.core_cfg.server.hostname}:{Utils.get_title_port(self.core_cfg)}/{game_code}/{game_ver}/", self.core_cfg.server.hostname) title_port_ssl_int = Utils.get_title_port_ssl(self.core_cfg)
return (f"http://{self.core_cfg.server.hostname}/{game_code}/{game_ver}/", self.core_cfg.server.hostname) if self.game_cfg.server.use_https and (
(game_code == "SDBT" and game_ver >= 145) or # JP use TLS from CRYSTAL PLUS
game_code != "SDBT" # SDGS and SDHJ all version can use TLS
):
proto = "https"
else:
proto = "http"
if proto == "https":
t_port = f":{title_port_ssl_int}" if title_port_ssl_int != 443 else ""
else:
t_port = f":{title_port_int}" if title_port_int != 80 else ""
return (
f"{proto}://{self.core_cfg.server.hostname}{t_port}/{game_code}/{game_ver}/",
f"{self.core_cfg.server.hostname}",
)
def get_routes(self) -> List[Route]: def get_routes(self) -> List[Route]:
return [ return [

View File

@ -20,6 +20,12 @@ class Mai2ServerConfig:
self.__config, "mai2", "server", "loglevel", default="info" self.__config, "mai2", "server", "loglevel", default="info"
) )
) )
@property
def use_https(self) -> bool:
return CoreConfig.get_config_field(
self.__config, "mai2", "server", "use_https", default=False
)
class Mai2DeliverConfig: class Mai2DeliverConfig:
def __init__(self, parent: "Mai2Config") -> None: def __init__(self, parent: "Mai2Config") -> None:

View File

@ -177,14 +177,29 @@ class Mai2Servlet(BaseServlet):
] ]
def get_allnet_info(self, game_code: str, game_ver: int, keychip: str) -> Tuple[str, str]: 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(self.core_cfg) != 80: title_port_int = Utils.get_title_port(self.core_cfg)
return ( title_port_ssl_int = Utils.get_title_port_ssl(self.core_cfg)
f"http://{self.core_cfg.server.hostname}:{Utils.get_title_port(self.core_cfg)}/{game_code}/{game_ver}/",
f"{self.core_cfg.server.hostname}", if self.game_cfg.server.use_https:
) if (game_code == "SDEZ" and game_ver >= 114) or (game_code == "SDGA" and game_ver >= 110): # SDEZ and SDGA use tls from Splash version
proto = "" # game will auto add https:// in uri with original code
elif game_code == "SDGB" and game_ver >= 130: # SDGB use tls from 1.30
# game will check if uri start with "http:", if yes, set IsHttpConnection = true
# so we can return https://example.com or http://example.com, all will work
proto = "https://"
else:
# "maimai", SDEZ 1.00 ~ 1.13, SDGA 1.00 ~ 1.06 and SDGB 1.01, 1.20 use http://
proto = "http://"
else:
proto = "http://"
if proto == "" or proto == "https://":
t_port = f":{title_port_ssl_int}" if title_port_ssl_int != 443 else ""
else:
t_port = f":{title_port_int}" if title_port_int != 80 else ""
return ( return (
f"http://{self.core_cfg.server.hostname}/{game_code}/{game_ver}/", f"{proto}{self.core_cfg.server.hostname}{t_port}/{game_code}/{game_ver}/",
f"{self.core_cfg.server.hostname}", f"{self.core_cfg.server.hostname}",
) )