其实原因是BitComet.xml和下载列表的文件烂了,停电重启后,记事本直接打开xml文件会发现尾部有一大片□的乱码字符,然后启动比特彗星无法成功读取这个烂了的文件,就导致被初始化配置文件和下载列表了
触发原因可能是停电的一瞬间正在进行保存写入xml引起的,然后这部分数据还缓存在系统内存中,没有从缓冲区刷新到硬盘里
其实原因是BitComet.xml和下载列表的文件烂了,停电重启后,记事本直接打开xml文件会发现尾部有一大片□的乱码字符,然后启动比特彗星无法成功读取这个烂了的文件,就导致被初始化配置文件和下载列表了
触发原因可能是停电的一瞬间正在进行保存写入xml引起的,然后这部分数据还缓存在系统内存中,没有从缓冲区刷新到硬盘里
测试过了,代码没变化,5分钟保存一次
准备改成先保存为临时文件,之后重命名为正式文件。同时保留最近3个备份,加载时从新到旧检查完整性
把流量清零,然后启动比特彗星下载一个任务,等10分钟任务管理器结束进程,下次打开流量还是0,确实没有保存进去,你再试试?
Beta2 客户端列表工作正常了,可以正常黑白名单
客户端过滤器好像不太对,序号4默认改成禁止,,,没有直接屏蔽所有的peer
这样也不不行,把这个修一下应该就差不多了,两个功能同时互不冲突
没有添加客户端白名单规则的时候,默认目标设置为禁止时,应该和ip白名单模式一样,会封禁所有peer才正常
新加的几个客户端还没遇到,等遇到了试试有没有效果
感觉是优先级问题导致的 客户端列表的优先级似乎是高于 过滤器的
这样在默认情况下 客户端列表就放行了所有的客户端 导致过滤器被绕过了
应该将 客户端列表的优先级放到最低 这样在默认不配置过滤器的情况下
客户端列表就起到了兜底的作用 最需要调整列表就可以实现简单过滤
与之对应的 在使用过滤器的情况 由于优先级最低 其相当于被绕过
不会影响过滤器的工作
当然还有一个问题 就是手动规则和订阅规则的优先级的问题
手动规则的优先级应该高于订阅规则 再算上IP过滤器
传入客户端的过滤顺序应该为:
@wxhere15
用户传入
↓
IP过滤器(手动规则)
↓
IP过滤器(订阅规则)
↓
客户端过滤器(手动规则)
↓
客户端过滤器(订阅规则)
↓
客户端列表
↓
保持连接
目前觀察到元數據快取檔會隨時間不斷累積,
建議可比照硬碟快取機制,透過元數據重新被利用或汰舊換新的方式進行管理。同時,建議提供類似硬碟快取的容量設定選項(例如 500GB 或 1TB),以便控管元數據對硬碟空間的佔用。此外,也建議全局統計頁面除了提供元數據筆數外可再追加元數據快取命中率,方便使用者參考。」
看过代码了,不是没定时保存配置文件,而是只有退出时才会先更新累计上传、下载量再保存。我来优化一下,定时保存前也更新一下数据
感谢反馈,已修复
目前的过滤顺序为:
用户连入
↓
IP过滤器(手动规则合并订阅规则)
↓
客户端列表
↓
客户端过滤器(手动规则)
↓
客户端过滤器(订阅规则)
↓
保持连接
这里的元数据缓存文件是种子存档及种子市场里的,其数量受种子存档及种子市场各列表数量上限影响,无法单独控制。缓存命中率显然会很低很低,只有下载一次种子存档或种子市场里的磁链才会命中一次,没啥统计必要。
beta3已发布,欢迎试用
自动更新客户端筛选规则的http订阅地址哪位网友给提供一个
看来是用了.temp临时文件的方式写入
|BitComet_x64.exe|2200|C:\Users\梦梦\Desktop\BitCometBeta_20250613\BitComet.xml.temp|0|569|569|后台|0|
|BitComet_x64.exe|2200|C:\Users\梦梦\Desktop\BitCometBeta_20250613\BitComet.xml.20250613_183237.bak|0|569|569|后台|0|
|BitComet_x64.exe|2200|C:\Users\梦梦\Desktop\BitCometBeta_20250613\Downloads.xml.temp|0|111|111|后台|0|
|BitComet_x64.exe|2200|C:\Users\梦梦\Desktop\BitCometBeta_20250613\Downloads.xml.20250613_183235.bak|0|111|111|后台|0|
以后蓝屏死机停电不会导致配置文件烂掉了
现在流量可以正常保存了
这个beta3现在默认规则成功起效果了
但是测试使用起来好像还是有点问题?
白名单模式,禁止所有,同时对qBittorrent 4.6.4 加白名单
这个高级客户端过滤器,应该要像ip白名单那样,默认拒绝所有时为白名单,列表中存在的放行就是ok了
还有双击规则应该要能弹出编辑框
这个应该还没有,等定版下来先,现在应该是json形式
webui这里连接数没有读取到默认值,数值为10
旧版的话能正常显示默认值300,可以的话能把那些旧版选项框都做了,包括镜像加速等等
然后就是webui上没有添加和编辑按钮?或者把那个客户端列表也弄上去
beta3应该是正常的,但是不知道qb为什么不起效果,好像是软件内置的peerid映射表的问题?测试过程填写的qBittorrent 4.6.4,正确名字可能是qBittorrent/4.6.4
在connected阶段显示为qBittorrent/4.6.4,但是banned里面显示为qBittorrent 4.6.4,我是直接把banned的qBittorrent 4.6.4复制进去了客户端过滤器,,所以没成功,现在正常了,效果很好
所以banned中为什么显示成了缺少/号,能不能修一下banned中的显示
banned中的显示应该保持和connected一样
torrents文件夹写入的xml也加一下这种.temp事务性写入方式?版本备份可以不用
种子市场已经用了.db-journal写入,这个就不用管了
测试了一下,截图里对qBittorrent 4.6.4匹配失败,是因为qBittorrent通过协议传来的软件版本字符串是 “qBittorrent/4.6.4”,中间有一个斜杠,如果不加过滤器可以在已连接客户端列表看到。断开连接后彗星通过peerid解析的软件版本是"qBittorrent 4.6.4",不带斜杠。
改进方法有两种:
1、强制将所有peer传过来的软件版本字符串里的斜杠替换为空格;
2、彗星通过peerid解析的qBittorrent软件版本也带上斜杠(但看你的截图,有的版本带斜杠,有的版本不带?)
好的
因为对方qBittorrent设置里开启了匿名模式,没有加/的就是启用了匿名模式
保持现状不用改动,要是改了就不知道对方启用匿名模式了
你把这里修一下就好了。。因为我是直接从banned复制上去测试的,所以发现了问题
问题就是已连接客户端列表,和已封禁客户端列表显示不一样,要把已封禁客户端列表显示成已连接客户端列表那种一模一样就好了
已连接客户端显示这样的时候,就在banned列表也显示相同的
qBittorrent/4.6.4
我先研究一下匿名模式对peerid和协议里传送的客户端名称版本号字符串分别有什么影响
看了一下 Anonymous Mode · qbittorrent/qBittorrent Wiki 启用匿名模式后确实不会在扩展握手阶段发送客户端版本号字符串了,只能通过peerid来判断版本号
banned列表里只能通过peerid来解析客户端名称版本号,解析结果要么带斜杠要么不带斜杠,没法有的带有的不带
为了区分qb的匿名模式似乎没有必要大动干戈?现在xml里对peer连peerid都没保留,要额外记录客户端版本号字符串似乎没有必要
其实名称规则里在斜杠的位置写上?就可以了,空格和斜杠都可以匹配到