mirror of
https://github.com/hectorqin/reader.git
synced 2026-11-10 21:11:08 +08:00
3.4 KiB
3.4 KiB
影音模块开关与纯阅读模式
管理员可以在网页中即时控制全站影音及各用户的影音权限,无需重启服务。
全站开关
进入「我的 → 服务配置」,在「配置分类」选择「功能模块」:
- 启用影音模块:默认开启。关闭前需要确认;关闭后所有账号(包括管理员)进入纯阅读模式,停止影音播放、扫描和刮削任务,退出影音 worker。下次启动也不会打开影音数据库或启动影音 worker。重新开启后显示启动状态;失败时保留阅读功能,可以关闭再开启以重试。
- 新用户默认启用影音:默认开启,仅用于之后注册或由管理员创建的账号,不修改已有用户。管理员创建账号时可以单独覆盖该默认值。
关闭不会删除媒体文件、影音数据库、封面、收藏和播放记录。重新开启仍使用原数据;被停止的扫描或刮削任务不会自动恢复,可在任务页面手动重试。正常的周期自动扫描仍遵循原有扫描设置。
用户开关
进入「我的 → 用户管理」,每个账号都有「启用影音 / 关闭影音」操作,管理员也可以修改自己的影音权限。全站关闭时仍可配置各账号权限,重新开启全站开关后生效。
影音访问必须同时满足:全站开启、当前账号开启、原有媒体库权限允许。管理员没有绕过总开关或用户开关的特权,但始终能访问用户管理和服务配置以恢复权限。
用户关闭影音后,不再显示影音导航、首页推荐、搜索结果和播放偏好;时长统计仅展示阅读。旧影音链接显示未启用提示。PDF、漫画、书籍、书源、OPDS 和书籍朗读 TTS 不受影响。
生效与边界
- 服务端每次请求重新检查权限,旧登录 token 不会绕过新配置,也不需要退出登录。播放票据和后台播放授权同样检查最新账号权限。
- 已建立的服务器影音流每秒检查一次权限,撤权后断开;其他用户不受影响。全站关闭时安全停止影音后台任务,超出 worker 关闭期限时终止 worker,由原有任务恢复逻辑标记中断。
- 当前管理页面保存后立即刷新能力;其他在线页面最多约 15 秒刷新一次,窗口重新获得焦点或联网时也会刷新。页面更新速度不影响服务端拒绝新请求。
- 多个服务实例共享核心数据库时,影音生命周期每两秒检查一次全站配置;总开关对共享该数据库的实例共同生效,不是某个容器的独立设置。
- 浏览器已缓存的数据无法收回;已经重定向到第三方存储的播放直链不受 Reader 控制,撤权无法立即切断该第三方连接。需要严格即时阻断时应使用服务器代理播放,并自行限制第三方直链的有效期。
配置保存在核心数据库 business_settings 的 modules 分类,用户权限在 users.media_enabled 中,均不依赖影音 worker。升级时已有用户默认保留影音权限。/api/v1/instance 返回全站 features.media;/api/v1/auth/me 的用户对象返回 mediaEnabled、有效 features.media 以及 mediaState。关闭时影音普通接口返回 403 / MEDIA_DISABLED,失效的播放票据仍沿用原有票据错误响应。
能力信息随当前登录会话在设备保存,离线恢复沿用上次已确认的权限;切换服务器或账号后会重新确认,不使用前一账号的能力信息。