警告:测试版(Beta)是 PeerBanHelper 用于测试新功能/逻辑的特殊版本,可能存在代码错误并导致您的数据损坏。在使用测试版本前,请注意对数据进行妥善备份。我们不建议非熟练用户使用任何非正式版本。
破坏性更改
- 数据库部分得到了大修,不兼容之前的数据库文件。封禁历史记录和统计数据将不会继承
新功能
- GeoIP 模块现在也使用来自 ljxi/GeoCN 的 IP 数据
- 位于中国大陆的 IP 地址位置现在将能够精确到区县
- 位于中国大陆的 IP 地址现在将显示网络类型,支持以下网络类型的显示:
- 宽带
- 基站
- 政企专线
- 业务平台
- 骨干网
- IP专网
- 网吧
- 物联网
- 数据中心
- 各个功能模块的封禁时间现在可以独立调整,或跟随全局设定
- 封禁列表现在显示触发封禁的规则
- 用户现在能够在封禁列表界面上解除对特定 IP 的封禁
- 前后端现在全面支持 i18n,欢迎提交翻译 PR!
- PBH WebUI 现在添加了暴力破解防护
- PBH WebAPI 现在默认禁止 CORS 跨站请求,除非用户手动启用
- 现在允许用户从外部文件系统加载 WebUI 文件
- Peers 列表现在将显示 Peer Flags (仅在支持的下载器上显示)
- 配置文件 (config.yml) 新增代理服务器设置
用户交互体验改进
- GUI 日志框现在更换为了 ListView,并根据日志等级,为日志行染色,错误、提示、警告一目了然
- 新用户安装时不再弹窗提醒退出,而是直接启动,并在控制台引导进入 WebUI (并显示 WebUI Token)
- 配置文件升级时,将对丢失配置文件注释的配置项重新复制注释
- WebUI Peers 列表的种子和 Peers 现在按实时上传速度,倒序排序,方便用户快速定位高上传带宽的种子/Peers
- 多项 WebUI 细节优化
- 下载器出现错误时,WebUI 将提供更加有用的悬浮 Tooltip 提示信息
- 下载器出现错误时,控制台将提供更加有用的日志提示信息
性能优化
- 现在 Peers 封禁检查操作支持多线程并发
- GeoIP 查询任务现在采用懒加载机制,仅在需要时才查询 IP 的 Geo 信息
- 重构缓存系统,极大的改善了缓存命中率,并降低了 CPU 时间
- 现在 PBH WebUI 与 PBH 通讯、PBH 与下载器通讯,皆支持 gzip, deflate 压缩
- 调整 AviaorScript 缓存,不缓存编译结果以节省 RAM 使用
- 对于频繁返回的 CheckResult,进行静态重用
- 其它性能优化
错误修复
- 测试下载器配置创建的临时 Downloader 没有正确关闭导致资源泄漏
- 修复 WebUI 发生更改时,因缓存头设置指定错误,用户可能看到白屏的问题(您需要手动清理一次浏览器缓存,才能使此修复生效)
- 修复封禁日志、封禁列表中,当流量数据为 -1 时,渲染为 NaN Undefined 的问题
- 修复用户同时添加 Transmission 和其它非 Transmission 下载器时,Transmission 封禁可能会失效的问题
- 修复初始化 BTN 失败后,PBH 不再尝试重新初始化 BTN 的问题
- 修复提交封禁列表失败后,本次提交的封禁列表被就地丢弃,而不是排队到下次重试窗口的问题
- 修复 qBittorrent 的部分不交换 Client Name 的 Peers,获取 Client Name 无效/无意义的问题,现在将截取其 16 进制 PeerID 对应的前 8 个 ASCII 字符的字节,并转化为可读文字
- 修复 Transmission 和 qBittorrent 混合使用时,操作列表可能混入其它下载的数据,导致 Transmission RPC 调用时出现类型转换错误崩溃,并导致种子无法被重启、还原状态
- 修复编辑订阅规则后,编辑成功但却提示错误的问题
- 修复订阅规则中存在以
#
开头的注释行时,订阅规则解析可能失败的问题 - 修复 qBittorrent 下载器有时处理 PeerID 可能返回错误结果导致伪装检测脚本检测出错的问题
- 修复触发 BanWave Watchdog 时,创建对话框时出现 JavaFx 线程错误
- 修复创建 HTTP 协议为 HTTP 2.0 的下载器配置时,出现错误的问题
杂项
- 微调 qBittorrent 增量封禁逻辑
- 调整 docker-compose.yml / Docker 示例命令,给予 PBH 更多时间用来安全退出
- 封禁列表不再保存到 banlist.dump,而是存储到数据库
- 现在每个小时都会自动保存一次封禁列表
- 现在 PBH 启动完成后,不会清空暂存的封禁列表
- 32 位有关的支持库文件现在不再参与编译
- 现在存储时不再硬编码字符串,而是存储翻译组件,以支持前端动态 i18n
- 用户脚本现在支持返回 String 类型返回值作为封禁理由
- 如果返回值以 @ 打头,则设置 Action 为 SKIP
- Heap 最大内存从 256MB 调整为 386MB,除了 PBH 需要更多一点的内存以外,386 这个数字灵感来自 Intel 80386 CPU 名称
- PeerID/ClientName 模块不再等待流量,而是在有 PeerID/ClientName 获取成功后,立刻停止等待,进行检查
Docker 用户
请拉取测试镜像:ghostchu/peerbanhelper-snapshot:ff47db6