Releases: PBH-BTN/PeerBanHelper
v3.3.0
重要优化
- qBittorrent 现在支持并默认开启 “增量封禁” 模式,在繁忙的 qBittorrent 上有利于缓解频繁封禁导致的 WebUI 开销拖慢 qBittorrent 的问题
- 现在支持规则模块检查结果缓存。对于可缓存结果的规则模块,在完成一次检查后,PeerBanHelper 不会再重复对其进行检查,以降低 CPU 开销,并节约能源
- IP 地址现在支持处理缓存,对于相同 IP 地址不再进行重复解析以降低 CPU 开销,并节约能源
- IP 规则模块将预先处理 IP 地址对象,替代随用随处理的方式,以降低 CPU 开销
新功能!
- 封禁列表持久化
- 现在 PeerBanHelper 支持在退出时保存内存中的封禁列表,并在下次重启时重新载入并应用到下载器,无需重新执行封禁流程
- 在 Windows(桌面体验) 和 Linux(图形环境)以及 MacOS 上现在包含一个 GUI 窗口。在支持托盘图标的系统上,点击关闭窗口按钮时,PeerBanHelper 能够最小化到托盘菜单中
- 若要避免显示黑色控制台窗口,请使用 javaw 启动
- 在 Windows 上,如果您正确安装了 JDK,双击 jar 则默认使用 javaw 启动
- Transmission 下载器现在支持自定义 RPC 端点,以兼容自定义 RPC 端点或处于反向代理之后的 Transmission WebAPI
错误修复
- 未正确处理 WebUI 路由导致刷新时返回 Resources Not Found 的 404 错误的问题
已知问题
- WebUI 的规则统计模块目前无法正常工作
Docker 用户
请拉取镜像更新:ghostchu/peerbanhelper:v3.3.0
v3.2.0
这是我们在迁移到 PBH-BTN 组织后的首个新版本,本版本重点更新了规则引擎和 WebUI。
注意
Native-Image 从本版本开始放弃支持,不再提供二进制映像。建议使用 Docker 容器或者安装 JDK 环境运行。
新功能!
JSON 规则引擎
原先的简易规则解析引擎升级为 JSON 规则引擎,所有已有的规则都将自动转换为 JSON 规则。
新的规则引擎允许:
- 使用 if 字段嵌套另一个规则,作为开关控制此规则是否应该被执行
- 反转、更改规则的结果和行为
- 提供更细粒度的控制
示例:
client-name-blacklist:
enabled: true
banned-client-name:
- '{"method":"STARTS_WITH","content":"-xl00"}'
- '{"method":"CONTAINS","content":"xunlei"}'
- '{"method":"STARTS_WITH","content":"taipei-torrent"}'
- '{"method":"STARTS_WITH","content":"xfplay"}'
- '{"method":"STARTS_WITH","content":"bitspirit"}'
- '{"method":"CONTAINS","content":"flashget"}'
- '{"method":"CONTAINS","content":"tudou"}'
- '{"method":"CONTAINS","content":"torrentstorm"}'
- '{"method":"CONTAINS","content":"qqdownload"}'
- '{"method":"CONTAINS","content":"github.com/anacrolix/torrent"}'
- '{"method":"STARTS_WITH","content":"qbittorrent/3.3.15"}'
- '{"method":"STARTS_WITH","content":"dt/torrent"}'
- '{"method":"STARTS_WITH","content":"dt"}'
- '{"method":"STARTS_WITH","content":"go.torrent.dev"}'
- '{"method":"STARTS_WITH","content":"github.com/thank423/trafficconsume"}'
- '{"method":"STARTS_WITH","content":"taipei-torrent"}'
- '{"method":"STARTS_WITH","content":"hp/torrent"}'
- '{"method":"STARTS_WITH","content":"hp"}'
新版 WebUI
特别感谢由 @Gaojianli 和 @XiaoXice 构建的现代 WebUI,您可以在这里找到 PBH 的前端程序:PBH-BTN/pbh-fe。新的 WebUI 包含现代界面、暗黑模式和手机端支持。
BTN-V2 协议
客户端的 BTN 协议已升级到 V2 版本(内部版本号:3),如果您正在使用 BTN 功能,请联系实例提供者获取新的 URL。
优化
- 新增了 IP 解析缓存,降低执行规则匹配时因创建新的 IPAddress 实例导致的 CPU 时间的浪费
- 优化了部分模块检查规则引发的 CPU 尖峰
移除功能
- 移除了无人使用且存在法律风险的主动探测(Active Probing)模块
Docker 用户
请拉取镜像更新:ghostchu/peerbanhelper:v3.2.0
v3.1.4
v3.1.3
v.3.1.2
安全漏洞修补
- 修补特定的 WebUI 组件上存在 XSS 漏洞的问题。攻击者可使用特定的客户端发起 XSS 注入攻击。建议对客户端进行更新
新功能!
- 规则表达式现在支持在最前面添加
!
来反转表达式判断结果 - 新增
isEmpty
和isBlank
规则表达式
更改
- Top 50 最多封禁 IP 现在仅查询近 30 天的数据
- BanList 现在按时间顺序倒序排序
错误修复
- 修复客户端传入空 PeerID 或空 Clientname 时,无法保存记录到持久化数据库的问题
- 修复端口封禁规则返回了非本地化字符串的问题
Docker 升级
请拉取镜像:ghostchu/peerbanhelper:sha-1e6c101
v3.1.1
v2.10
v2.8
重要错误修复
- 修复了 Peer 在重新连接到下载器时,如果此前连接过但未完成数据传输断开并重连时,因下载器提供了数据(但因未完成交换数据和握手)而导致数据不完整的情况下,进度检查其出现错误封禁的问题
重要规则更改
- 默认规则配置文件新增
hp/torrent
,-HPXXXX-
- 旧的规则配置文件不会自动升级,如果您是从旧版升级,请手动添加它们(或者删除
profile.yml
使其重新生成)
- 旧的规则配置文件不会自动升级,如果您是从旧版升级,请手动添加它们(或者删除
新功能!
IP段连锁封禁
批量部署的恶意客户端通常在同一个 IP 段下,PBH 现在允许用户分别为 IPv4 和 IPv6 设置一个前缀长度。在封禁发现的吸血客户端时,会将其所处 IP 地址的指定范围的其余 IP 地址均加入屏蔽列表,实现链式封禁。
(图片仅供演示,默认配置文件不会封禁整个 /24 而是更合理的 /30)
旧的规则配置文件不包含此模块的配置项,请从 Github 复制对应配置段,或者删除 profile.yml
使其重新生成。我们正在对配置文件系统进行改造,完成后将支持配置文件升级功能。
封禁历史
在 PBH 引入嵌入式数据库后,现在有能力持久记录封禁的历史记录。你可以在这里找到目前和过去被封禁的客户端的具体情况。
简易分析
提供了分析最常被封禁的 IP 的功能
错误修复
- 修复默认配置文件的特殊符号错误 (@BUnipendix ) (首次贡献)
- 收到 SIGTERM 信号量后,现在 PBH 能够安全退出(@Gaojianli )
Docker 升级
请拉取镜像:ghostchu/peerbanhelper:v2.8
2.7
新功能!
- 新增
server.prefix
字段,允许用户调整发送给下载器(如:Transmission)的 URL 前缀,以便通过互联网或者反向代理访问 blocklist 提供端点,以解决非本地部署的 Transmission 无法对接 PBH 的问题。- 更改 JS 脚本中的 API 端点,去除前缀
/
已解决通过反向代理从 subpath 访问时,API 请求错误的问题
- 更改 JS 脚本中的 API 端点,去除前缀
错误修复
- 修复在 Windows 平台上使用 JVM 版本启动时,因为错误地触发更改 chcp 代码页导致控制台编码错误问题 (#21 )
- 修复在 Docker 容器中运行 PBH 时,PBH 未正确响应 SIGTERM 信号量,而必须等待 Docker 强制终止容器的问题
- 此修复也同时修复了退出状态码非 0 的问题
Docker 更新
请拉取镜像:ghostchu/peerbanhelper:sha-ba2e0b7
2.6
错误修复
- 修复进度检查模块的种子大小过滤器失效的问题,并可能导致在小型 Torrent 上错误地封禁 Peer
- 修复 Transmission 模块在读取客户端 RPC 响应解析时报告
Expected a boolean but was NUMBER at line l column 60 path $.idle-seeding-limit
错误的问题 - 修复在经过使用 HTTP/2 的反向代理时,因
GOAWAY received
的错误导致请求失败的问题。因此问题涉及 JVM 内部实现而无法进行有效修复,因此现在默认禁用 HTTP/2 协议,并提供了http-version
配置项可供调整 (#28 由 @Gaojianli 首次贡献)
检查
- 对不支持的 Transmission 进行版本兼容性检查
Docker 更新
请拉取镜像:ghostchu/peerbanhelper:sha-6b3b337