MSTL正式版1.1.32
新增功能
i18n国际化,目前支持zh和en
修复
Bug 1 server_manager.py zip slip:解压时未校验路径穿越(../../ 可能写到目标目录外) 提取前计算 os.path.abspath,校验必须以 target_abs + os.sep 开头,跳过不安全路径
Bug 2 download_msl.py 部分 CDN 对 HEAD 返回不支持 Range,但 GET 实际支持,导致不必要地回退单线程 移除 HEAD 的 Range 判断,直接尝试多线程,失败才回退
Bug 3 plugin_sources.py SpigotMC 下载 302 到 ForgeCDN 后因缺少 Referer 返回 403 请求中添加 Referer: https://www.spigotmc.org/
完成的优化
优化
Opt 1 constants.py (新) User-Agent 散落在 3 个文件中,彼此不一致 新建 constants.py,统一 USER_AGENT = "MSTL/1.0",各模块从常量文件导入
Opt 2 server_launcher.py _handle_sigint 用 sys.exit(0),在 PIPE 模式下子进程可能残留 改为 os._exit(0),直接终止进程,确保子进程被回收
Opt 3 i18n.py / start.py _detect_os_language() 定义在 start.py,无法被其他模块复用 移到 i18n.detect_os_language(),全局可用,start.py 改为调用该函数
Opt 4 plugin_sources.py / mod_sources.py / download_msl.py API 基础 URL(SPIGET_BASE、MODRI