mai2: some improve for DX earlier version and return game code in uri (#125)
Attention: There are all talking about maimai DX and newer version, not Pre-DX dx and newer version request these but no used, they are just exist in game code, only found `oldServerUrl` used in SDEZ 1.00, this should also fix SDGA and SDGB try to visit `ServerUrl + movieServerUrl` although that just because of SEGA shit code tested work ![image](/attachments/f2c79134-4651-4976-8278-bbcf268f424a) Reviewed-on: https://gitea.tendokyu.moe/Hay1tsme/artemis/pulls/125 Co-authored-by: zaphkito <zaphkito@noreply.gitea.tendokyu.moe> Co-committed-by: zaphkito <zaphkito@noreply.gitea.tendokyu.moe>
This commit is contained in:
parent
4c33dac96a
commit
08891d0851
@ -272,7 +272,11 @@ class ChuniServlet(BaseServlet):
|
|||||||
self.logger.info(f"v{version} {endpoint} request from {client_ip}")
|
self.logger.info(f"v{version} {endpoint} request from {client_ip}")
|
||||||
self.logger.debug(req_data)
|
self.logger.debug(req_data)
|
||||||
|
|
||||||
endpoint = endpoint.replace("C3Exp", "") if game_code == "SDGS" else endpoint
|
endpoint = (
|
||||||
|
endpoint.replace("C3Exp", "")
|
||||||
|
if game_code == "SDGS"
|
||||||
|
else endpoint
|
||||||
|
)
|
||||||
func_to_find = "handle_" + inflection.underscore(endpoint) + "_request"
|
func_to_find = "handle_" + inflection.underscore(endpoint) + "_request"
|
||||||
handler_cls = self.versions[internal_ver](self.core_cfg, self.game_cfg)
|
handler_cls = self.versions[internal_ver](self.core_cfg, self.game_cfg)
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ class CardMakerBase:
|
|||||||
{
|
{
|
||||||
"modelKind": 1,
|
"modelKind": 1,
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"titleUri": f"{uri}/{self._parse_int_ver(games_ver['maimai'])}/Maimai2Servlet/",
|
"titleUri": f"{uri}/SDEZ/{self._parse_int_ver(games_ver['maimai'])}/Maimai2Servlet/",
|
||||||
},
|
},
|
||||||
# ONGEKI
|
# ONGEKI
|
||||||
{
|
{
|
||||||
|
@ -26,10 +26,10 @@ class Mai2Base:
|
|||||||
self.date_time_format = "%Y-%m-%d %H:%M:%S"
|
self.date_time_format = "%Y-%m-%d %H:%M:%S"
|
||||||
|
|
||||||
if not self.core_config.server.is_using_proxy and Utils.get_title_port(self.core_config) != 80:
|
if not self.core_config.server.is_using_proxy and Utils.get_title_port(self.core_config) != 80:
|
||||||
self.old_server = f"http://{self.core_config.server.hostname}:{Utils.get_title_port(cfg)}/197/MaimaiServlet/"
|
self.old_server = f"http://{self.core_config.server.hostname}:{Utils.get_title_port(cfg)}/SDEY/197/MaimaiServlet/"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.old_server = f"http://{self.core_config.server.hostname}/197/MaimaiServlet/"
|
self.old_server = f"http://{self.core_config.server.hostname}/SDEY/197/MaimaiServlet/"
|
||||||
|
|
||||||
async def handle_get_game_setting_api_request(self, data: Dict):
|
async def handle_get_game_setting_api_request(self, data: Dict):
|
||||||
# if reboot start/end time is not defined use the default behavior of being a few hours ago
|
# if reboot start/end time is not defined use the default behavior of being a few hours ago
|
||||||
|
@ -5,6 +5,7 @@ import json
|
|||||||
from random import randint
|
from random import randint
|
||||||
|
|
||||||
from core.config import CoreConfig
|
from core.config import CoreConfig
|
||||||
|
from core.utils import Utils
|
||||||
from titles.mai2.base import Mai2Base
|
from titles.mai2.base import Mai2Base
|
||||||
from titles.mai2.config import Mai2Config
|
from titles.mai2.config import Mai2Config
|
||||||
from titles.mai2.const import Mai2Constants
|
from titles.mai2.const import Mai2Constants
|
||||||
@ -15,6 +16,15 @@ class Mai2DX(Mai2Base):
|
|||||||
super().__init__(cfg, game_cfg)
|
super().__init__(cfg, game_cfg)
|
||||||
self.version = Mai2Constants.VER_MAIMAI_DX
|
self.version = Mai2Constants.VER_MAIMAI_DX
|
||||||
|
|
||||||
|
# DX earlier version need a efficient old server uri to work
|
||||||
|
# game will auto add MaimaiServlet endpoint behind return uri
|
||||||
|
# so do not add "MaimaiServlet"
|
||||||
|
if not self.core_config.server.is_using_proxy and Utils.get_title_port(self.core_config) != 80:
|
||||||
|
self.old_server = f"http://{self.core_config.server.hostname}:{Utils.get_title_port(cfg)}/SDEY/197/"
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.old_server = f"http://{self.core_config.server.hostname}/SDEY/197/"
|
||||||
|
|
||||||
async def handle_get_game_setting_api_request(self, data: Dict):
|
async def handle_get_game_setting_api_request(self, data: Dict):
|
||||||
# if reboot start/end time is not defined use the default behavior of being a few hours ago
|
# if reboot start/end time is not defined use the default behavior of being a few hours ago
|
||||||
if self.core_config.title.reboot_start_time == "" or self.core_config.title.reboot_end_time == "":
|
if self.core_config.title.reboot_start_time == "" or self.core_config.title.reboot_end_time == "":
|
||||||
@ -48,10 +58,10 @@ class Mai2DX(Mai2Base):
|
|||||||
"rebootEndTime": reboot_end,
|
"rebootEndTime": reboot_end,
|
||||||
"movieUploadLimit": 100,
|
"movieUploadLimit": 100,
|
||||||
"movieStatus": 1,
|
"movieStatus": 1,
|
||||||
"movieServerUri": self.old_server + "movie/",
|
"movieServerUri": "",
|
||||||
"deliverServerUri": self.old_server + "deliver/" if self.can_deliver and self.game_config.deliver.enable else "",
|
"deliverServerUri": "",
|
||||||
"oldServerUri": self.old_server + "old",
|
"oldServerUri": self.old_server,
|
||||||
"usbDlServerUri": self.old_server + "usbdl/" if self.can_deliver and self.game_config.deliver.udbdl_enable else "",
|
"usbDlServerUri": "",
|
||||||
"rebootInterval": 0,
|
"rebootInterval": 0,
|
||||||
},
|
},
|
||||||
"isAouAccession": False,
|
"isAouAccession": False,
|
||||||
|
@ -141,31 +141,26 @@ class Mai2Servlet(BaseServlet):
|
|||||||
|
|
||||||
def get_routes(self) -> List[Route]:
|
def get_routes(self) -> List[Route]:
|
||||||
return [
|
return [
|
||||||
Route("/{version:int}/MaimaiServlet/api/movie/{endpoint:str}", self.handle_movie, methods=['GET', 'POST']),
|
Route("/{game:str}/{version:int}/MaimaiServlet/api/movie/{endpoint:str}", self.handle_movie, methods=['GET', 'POST']),
|
||||||
Route("/{version:int}/MaimaiServlet/old/{endpoint:str}", self.handle_old_srv),
|
Route("/{game:str}/{version:int}/MaimaiServlet/old/{endpoint:str}", self.handle_old_srv),
|
||||||
Route("/{version:int}/MaimaiServlet/old/{endpoint:str}/{placeid:str}/{keychip:str}/{userid:int}", self.handle_old_srv_userdata),
|
Route("/{game:str}/{version:int}/MaimaiServlet/old/{endpoint:str}/{placeid:str}/{keychip:str}/{userid:int}", self.handle_old_srv_userdata),
|
||||||
Route("/{version:int}/MaimaiServlet/old/{endpoint:str}/{userid:int}", self.handle_old_srv_userdata),
|
Route("/{game:str}/{version:int}/MaimaiServlet/old/{endpoint:str}/{userid:int}", self.handle_old_srv_userdata),
|
||||||
Route("/{version:int}/MaimaiServlet/old/{endpoint:str}/{userid:int}", self.handle_old_srv_userdata),
|
Route("/{game:str}/{version:int}/MaimaiServlet/old/{endpoint:str}/{userid:int}", self.handle_old_srv_userdata),
|
||||||
Route("/{version:int}/MaimaiServlet/usbdl/{endpoint:str}", self.handle_usbdl),
|
Route("/{game:str}/{version:int}/MaimaiServlet/usbdl/{endpoint:str}", self.handle_usbdl),
|
||||||
Route("/{version:int}/MaimaiServlet/deliver/{endpoint:str}", self.handle_deliver),
|
Route("/{game:str}/{version:int}/MaimaiServlet/deliver/{endpoint:str}", self.handle_deliver),
|
||||||
Route("/{version:int}/MaimaiServlet/{endpoint:str}", self.handle_mai, methods=['POST']),
|
Route("/{game:str}/{version:int}/MaimaiServlet/{endpoint:str}", self.handle_mai, methods=['POST']),
|
||||||
Route("/{game:str}/{version:int}/Maimai2Servlet/{endpoint:str}", self.handle_mai2, methods=['POST']),
|
Route("/{game:str}/{version:int}/Maimai2Servlet/{endpoint:str}", self.handle_mai2, methods=['POST']),
|
||||||
]
|
]
|
||||||
|
|
||||||
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 game_code in {Mai2Constants.GAME_CODE_DX, Mai2Constants.GAME_CODE_DX_INT}:
|
|
||||||
path = f"{game_code}/{game_ver}"
|
|
||||||
else:
|
|
||||||
path = game_ver
|
|
||||||
|
|
||||||
if not self.core_cfg.server.is_using_proxy and Utils.get_title_port(self.core_cfg) != 80:
|
if not self.core_cfg.server.is_using_proxy and Utils.get_title_port(self.core_cfg) != 80:
|
||||||
return (
|
return (
|
||||||
f"http://{self.core_cfg.server.hostname}:{Utils.get_title_port(self.core_cfg)}/{path}/",
|
f"http://{self.core_cfg.server.hostname}:{Utils.get_title_port(self.core_cfg)}/{game_code}/{game_ver}/",
|
||||||
f"{self.core_cfg.server.hostname}",
|
f"{self.core_cfg.server.hostname}",
|
||||||
)
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
f"http://{self.core_cfg.server.hostname}/{path}/",
|
f"http://{self.core_cfg.server.hostname}/{game_code}/{game_ver}/",
|
||||||
f"{self.core_cfg.server.hostname}",
|
f"{self.core_cfg.server.hostname}",
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -290,24 +285,42 @@ class Mai2Servlet(BaseServlet):
|
|||||||
client_ip = Utils.get_ip_addr(request)
|
client_ip = Utils.get_ip_addr(request)
|
||||||
encrypted = False
|
encrypted = False
|
||||||
|
|
||||||
if version < 105: # 1.0
|
if game_code == "SDEZ": # JP
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX
|
if version < 110: # 1.0
|
||||||
elif version >= 105 and version < 110: # PLUS
|
internal_ver = Mai2Constants.VER_MAIMAI_DX
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_PLUS
|
elif version >= 110 and version < 114: # PLUS
|
||||||
elif version >= 110 and version < 115: # Splash
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_PLUS
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_SPLASH
|
elif version >= 114 and version < 117: # Splash
|
||||||
elif version >= 115 and version < 120: # Splash PLUS
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_SPLASH
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_SPLASH_PLUS
|
elif version >= 117 and version < 120: # Splash PLUS
|
||||||
elif version >= 120 and version < 125: # UNiVERSE
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_SPLASH_PLUS
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_UNIVERSE
|
elif version >= 120 and version < 125: # UNiVERSE
|
||||||
elif version >= 125 and version < 130: # UNiVERSE PLUS
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_UNIVERSE
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_UNIVERSE_PLUS
|
elif version >= 125 and version < 130: # UNiVERSE PLUS
|
||||||
elif version >= 130 and version < 135: # FESTiVAL
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_UNIVERSE_PLUS
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL
|
elif version >= 130 and version < 135: # FESTiVAL
|
||||||
elif version >= 135 and version < 140: # FESTiVAL PLUS
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL_PLUS
|
elif version >= 135 and version < 140: # FESTiVAL PLUS
|
||||||
elif version >= 140: # BUDDiES
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL_PLUS
|
||||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_BUDDIES
|
elif version >= 140: # BUDDiES
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_BUDDIES
|
||||||
|
elif game_code == "SDGA": # Int
|
||||||
|
if version < 105: # 1.0
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX
|
||||||
|
elif version >= 105 and version < 110: # PLUS
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_PLUS
|
||||||
|
elif version >= 110 and version < 115: # Splash
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_SPLASH
|
||||||
|
elif version >= 115 and version < 120: # Splash PLUS
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_SPLASH_PLUS
|
||||||
|
elif version >= 120 and version < 125: # UNiVERSE
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_UNIVERSE
|
||||||
|
elif version >= 125 and version < 130: # UNiVERSE PLUS
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_UNIVERSE_PLUS
|
||||||
|
elif version >= 130 and version < 135: # FESTiVAL
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL
|
||||||
|
elif version >= 135 and version < 140: # FESTiVAL PLUS
|
||||||
|
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL_PLUS
|
||||||
|
|
||||||
if all(c in string.hexdigits for c in endpoint) and len(endpoint) == 32:
|
if all(c in string.hexdigits for c in endpoint) and len(endpoint) == 32:
|
||||||
# If we get a 32 character long hex string, it's a hash and we're
|
# If we get a 32 character long hex string, it's a hash and we're
|
||||||
|
Loading…
Reference in New Issue
Block a user