Links
Tags
Creators
Details
1.3.0
Compatibility
Changes
MikuHAProxy 1.3.0 —— 把两个「写错也不报错」的静默行为变成显式提醒,并统一白名单文件缺失时的行为。
这一版没有新增功能,重点在可预期性:服主写错的配置要么得到警告、要么得到与直觉一致的结果,不再有「看起来生效了、实际范围被悄悄放大」的暗坑。同时把测试从 85 个扩充到 98 个,热重载、计数器与白名单判定的关键行为从此有自动化守护。
行为变更
-
白名单文件缺失时,启动与
/mikuproxy reload行为统一。此前两条入口对「同一个缺失的文件」结论相反:重启会自动生成出厂模板(含127.0.0.0/8与::1/128),而重载保持缺失并按空白名单拒绝所有代理连接——想用「删掉白名单文件」表达拒绝一切的服主,重启后会发现自己其实放行了一段来源。现在两条入口都会自动生成出厂模板:看得见、可删除、可编辑。请注意:如果你的部署依赖「删除白名单文件 = 拒绝所有代理连接」,请改为在文件中写入注释或使用allow-all-proxies = false+ 空白名单以外的显式方式管理。 -
CIDR 主机位被置位时给出告警。
192.168.1.10/8在语法上完全合法,但会被规范化成192.0.0.0/8——匹配范围从一台主机放大到一千六百万个地址,此前没有任何提示。现在解析到这类写法时会告警并写明实际生效的范围,以及精确到单机的正确写法(/32)。
修复
- 初始化失败的提示不再指向不存在的命令。此前配置加载失败时,错误信息建议「修正配置后可用
/mikuproxy reload重试」,但该场景下命令根本来不及注册。现在如实指引:修正配置后重启代理生效。
内部与测试
- 白名单文件路径解析抽出可注入接口,相对路径、绝对路径、子目录与非法路径回退四条分支全部有测试覆盖(此前是文档承诺了却零覆盖的路径)。
- 测试规模 85 → 98(12 个测试类),新增守护包括:热重载语义(计数器跨快照复用、限流器按新参数重建、重载失败保留原配置)、
Counters公开表面锁死(恰好 10 个方法、不泄露内部LongAdder)、「直连不查白名单」不变量(DENY_ALL之下直连照常放行)、IPv4-mapped IPv6 判定的表驱动用例、CIDR 主机位检测。
兼容性
- 需要 Velocity 4.x(Java 25)。
- 配置项与白名单格式与 1.2.0 完全一致,可直接替换 jar。
- 唯一的行为差异是上述「白名单文件缺失时重载不再拒绝所有代理连接」——依赖该行为做「紧急拒绝」的部署请改用显式配置。
Full Changelog: https://github.com/JunXieX/MikuHAProxy/compare/v1.2.0...v1.3.0
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:SPh6m4k5:rXg0L1Qu"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:SPh6m4k5:rXg0L1Qu"
}

