Repository navigation
🚀 MisMiss v1.6.0 — 临期会提醒,备注能写清
安全加固 · 开播临期提示 · 账户备注与昵称 · 直播间信息插件
v1.6.0 把「安全」和「日常使用」一起补了一轮:修掉一批能把面板凭据读走、
把插件装到账户目录之外、把消息接收循环打死的问题;同时加上开播临期提醒、
账户备注/昵称编辑,以及一个新的「直播间信息」插件。
🔐 安全修复
- 插件 zip 解压的 Zip Slip:解压改为逐成员校验,tar 走
filter="data";
安全路径实现收敛到核心层唯一一份,路由层不再各写一套。 - 插件名目录穿越:
metadata.yaml的name与 API 传入的插件名统一白名单,
安装/更新/卸载/数据目录全部经realpath + commonpath断言,../../不再能
删改账户目录之外的文件。 - 面板静态兜底目录穿越:SPA 的
full_path先resolve()再断言仍在
web/frontend/dist内,../../../data/panel.json这类匿名读取被拒绝。 - 认证接口角色越权:
/api/auth/change-password只认管理员令牌;
匿名可触达的skip-first-login改为自行校验管理员令牌。 - 未 join 的直播间不再 500:
/api/accounts/{id}/live读主播 ID 时兜住
CoreApiException,平台风控期间账户详情页不会整页挂掉。 - WebSocket 断线补发方向修正:重连时补的是
last_seq之后的日志,而不是
更早的旧日志。 - 插件重载不再丢启用状态:
reload_plugin在卸载前读取was_enabled。 - 异常隔离:单个事件处理器抛错不再中断同事件的其他监听器;指令缺参只记
warning,不会再把该账户的弹幕接收循环打死。
⏳ 开播临期提示
直播间开播的瞬间检查账户剩余有效期:不足 3 天时,自动在直播间发一条
续期提醒。默认开启,同一场直播只提醒一次,下播后再开播可再次提醒。
- 开关存在账户级偏好
expiry_notice_enabled,管理员与账户本人都能关; - 老账户没有这个字段时按「开启」处理,功能上线即生效;
- 位置:账户概览「订阅」卡片、账户端首页「账户偏好」、管理端「编辑账户资料」。
🏷️ 账户备注与昵称
- 管理端可为每个账户写独立备注(仅面板可见,不参与登录、不发给平台),
总览卡片与详情页展示,搜索框也能按备注命中。 - 管理端可直接修改账户昵称;登录用户名保持不变,仍走「重置登录凭据」。
- 新增「编辑账户资料」弹窗,昵称、备注、临期提示开关一处置齐。
🔌 新插件:直播间信息
发送 直播间(别名 直播数据)输出实时数据卡片,默认仅房管/主播可用:
@触发人
直播间数据:
🎤分区:情感-闲聊
⏰直播时长:02:07:17
👪累计人数:42
💗关注数:576
☀️热度:2146
👩超粉:0
🍁贵宾:1
🏅️小时榜:暂无
💰小时榜差值/距离上榜:2015
📛勋章:z野玫瑰
数据走猫耳公开接口,分区/时长/人数/热度/超粉/贵宾/小时榜/勋章均为真实字段;
平台没有提供的分区排名、热度排名、Banner 位、推荐位、福星榜、PK 胜率
直接不输出。支持冷却、缓存、超长按行拆分,以及房管白名单。
🚦 出站节流与面板体验
- 出站请求改为双车道:交互消息降速不停,后台轮询在平台限流时直接让路;
- 新增在途并发上限与退避升档冷却,压住「限流 → 更多请求 → 更紧限流」的正反馈;
- 日志页、账户筛选、更新页与移动端排版的一批改进同步进入本版本。
🧪 测试
test/ 下 36 个脚本全部通过,其中新增:
test_security_fixes.py— 目录穿越、Zip Slip、认证角色、WS 补发等回归;test_expiry_notice.py— 临期判定、同场去重、开关与边界;test_account_remark.py/test_account_profile_api.py— 备注、昵称、偏好接口;test_room_info_plugin.py— 数据解析、输出格式、权限/冷却、消息拆分。
⚠️ 已知限制
- 面板保存设置仍会用
yaml.dump整表重写config.yml,注释会丢失; - 「直播间信息」插件不输出猫耳公开接口没有的排名/推荐位/福星榜/PK 胜率字段。
MisMiss v1.6.0 — 该提醒的提醒,该藏好的藏好 🚀