import struct from core.utils import Utils from .base import IDZHandlerBase from core.config import CoreConfig from ..config import IDZConfig from ..const import IDZConstants class IDZHandlerLoadServerInfo(IDZHandlerBase): cmd_codes = [0x0006] * IDZConstants.NUM_VERS rsp_codes = [0x0007] * IDZConstants.NUM_VERS name = "load_server_info1" def __init__(self, core_cfg: CoreConfig, game_cfg: IDZConfig, version: int) -> None: super().__init__(core_cfg, game_cfg, version) self.size = 0x04B0 def handle(self, data: bytes) -> bytearray: ret = super().handle(data) offset = 0 if self.version >= IDZConstants.VER_IDZ_210: offset = 2 t_port = Utils.get_title_port(self.core_config) news_str = f"http://{self.core_config.title.hostname}:{t_port}/idz/news/news80**.txt" err_str = f"http://{self.core_config.title.hostname}:{t_port}/idz/error" len_hostname = len(self.core_config.title.hostname) len_news = len(news_str) len_error = len(err_str) struct.pack_into("