欢迎客人!
• 开始前请阅读社区规则确保您顺利的熟悉本社区。注册用户可以提交资源,如果您有已发布资源的新版本,您可以随时更新版本!
• 文件链接损坏请在文件下方留言,我们将会及时更新来自备份服务器的新链接。如有其它问题请 提交工单 和我们联系!【加入Telegram】【QQ群:5977983】
• 我们拥有多账户检测系统,对于重复注册我们将采取严厉措施!快速获得积分
你正在使用过时的浏览器,可能无法正确显示此网站或其他网站。
你应该升级浏览器或使用其他浏览器。
你应该升级浏览器或使用其他浏览器。
多群发送支持
- ✅ 支持配置多个QQ群号(每行一个)
- ✅ 自动循环发送到所有配置的群
- ✅ 至少一个群成功即返回成功
Telegram
- 多群组/频道支持
- 测试连通性支持
主要修复点:
- TestConnection.php - 修复了 JavaScript 语法错误
- Notifier.php - 将所有调试日志改为只在调试模式下记录,避免产生错误日志
配置文件
- 测试开始/结束的日志
- 测试结果日志
- cURL 连接错误详情
- API 响应详情
- HTTP 错误详情
- 非布尔值警告
说明文件
- 将 qqnotif_target_group 改为多行文本框 (rows=5)
- 支持用户输入多个群号
核心逻辑
- 更新标题为"目标 QQ 群号(支持多个)"
- 添加多行输入格式说明和示例
测试界面
- 新增 parseGroupIds() 方法:解析多行群号配置
- 新增 sendToMultipleGroups() 方法:循环发送到所有群
- 更新 sendNotification() 调用多群发送
- 更新 sendTestMessage() 支持多群测试
- 添加多群发送结果统计和日志
- 更新提示文字说明支持多群
- 测试结果显示所有群号信息
修复后的通知逻辑:
登陆服务器 网站后台可删除多余文件 :src/addons/HuoNiu/QQNotif/Listener/ResourceVersion.php 此文件不在使用。
- 首次发布资源 → 仅 Resource.php 发送"新资源"通知
- 后续更新资源 → 仅 ResourceUpdate.php 发送"资源更新"通知
- 不再重复 ✅
1. 新增功能
简介字数控制
- 新增后台选项"简介字数限制",可自定义通知消息中内容摘要的最大字符数
- 支持范围:50-1000 字符,默认 200 字符
- 统一控制所有通知类型:
- 新主题通知的内容简介
- 新回复通知的回复内容
- 资源发布通知的资源简介
- 资源更新通知的更新内容
2. Bug 修复
修复成功消息误报错误
- 修复了消息发送成功后仍然记录到错误日志的问题
- 成功消息现在只记录到数据库通知日志,不再触发系统错误提示
- 改善了后台错误日志的清洁度
3. 文件变更
修改的文件:
- options.xml - 添加简介字数配置项
- phrases.xml - 添加相关语言短语
- Notifier.php - 修改字数控制逻辑和日志记录方式
4. 使用说明
管理员可在后台 选项 → HuoNiu QQ Notif → 简介字数限制 中调整字数设置,修改后立即生效,无需重新安装或重建缓存。
本次修复了测试按钮缓存问题,修改了2个文件:
1. TestConnection.php (前端JavaScript)
2. QQNotif.php (后端控制器)
- URL添加随机参数:_nocache= + 时间戳 + 随机数
- 添加3个防缓存HTTP头:
- Cache-Control: no-cache, no-store, must-revalidate
- Pragma: no-cache
- Expires: 0
- 在 actionTest() 方法开头添加相同的3个防缓存响应头
✨ 新功能
1. Telegram 平台支持
- 新增 Telegram Bot API 集成
- 支持发送通知到 Telegram 群组/频道
- 支持 HTML 格式消息(粗体、链接等)
- 无需本地服务器软件,直接调用官方 API
2. 双平台独立控制
- 新增"启用 QQ 群通知"开关 (qqnotif_qq_enabled)
- 新增"启用 Telegram 通知"开关 (qqnotif_telegram_enabled)
- 可单独启用任一平台,或同时启用双平台推送
- 删除冗余的总开关,简化配置逻辑
3. 独立测试功能
- QQ 测试按钮:仅发送到 QQ 群
- Telegram 测试按钮:仅发送到 Telegram 群
- 两个测试完全独立,互不干扰
- 实时配置验证和错误提示
4. 配置选项
- qqnotif_telegram_bot_token:Telegram Bot Token
- qqnotif_telegram_chat_id:Telegram Chat ID
- 完整的中文说明和获取指引
🔒 安全性修复(10项)
1. XSS 跨站脚本防护
- 所有用户输入进行 HTML 转义
- 添加 sanitizeText() 方法处理标题、用户名等
- 添加 sanitizeSnippet() 方法处理内容摘要
- 修复位置:formatThreadMessage(), formatPostMessage(), formatUserMessage(), formatResourceMessage()
2. CSRF 跨站请求伪造防护
- 批量删除日志操作添加 Token 验证
- 清空日志操作添加 Token 验证
- JavaScript 测试请求发送 _xfToken
- 修复文件:QQNotif.php, TestTelegram.php
3. SQL 注入防护
- 搜索关键词使用参数化查询
- 使用 escapeLike() 方法转义 LIKE 通配符
- 修复位置:QQBot.php line 111
4. URL 验证
- 添加 sanitizeUrl() 方法
- 验证 URL scheme(仅允许 http/https)
- 验证域名与站点一致(防止开放重定向)
5. 输入长度限制
- 消息最大长度:4000 字符
- 摘要最大长度:200 字符
- 添加 truncateMessage() 方法自动截断
- 日志字段长度限制(消息1000字符,错误500字符)
6. 敏感信息脱敏
- Bot Token 在日志中显示为 ***
- API Token 在错误返回中隐藏
- 测试响应不显示完整 Token
7. 超时优化
- 连接超时:5秒(原10秒)
- 响应超时:3秒(原5秒)
- 防止长时间阻塞
8. Bot Token 格式验证
- Telegram Token 正则验证:^\d+:[A-Za-z0-9_-]{35}$
- 格式错误时提前拦截
9. Chat ID 类型验证
- 强制转换为整数
- 验证负数格式(群组ID)
10. 日志记录长度限制
- content_id 强制转换为整数
- message 字段截断到1000字符
- error_message 截断到500字符
📝 用户体验优化
1. 简化配置说明
- Telegram Bot Token:一句话说明创建方式
- Telegram Chat ID:精简获取步骤
- 删除冗余的多行说明
2. 错误提示优化
- 配置验证实时反馈
- 详细的错误原因说明
- 测试失败时显示配置状态
3. 界面优化
- 平台开关分组显示
- 测试按钮独立区域
- 使用场景说明
🐛 Bug 修复
- 修复 XML 格式错误(重复的 </phrase> 标签)
- 修复测试按钮 CSRF Token 问题
- 修复测试消息同时发送双平台的问题
- 修复消息无长度限制可能导致的 DoS 风险
⚡ 性能优化
- 减少超时等待时间(提升响应速度)
- 优化 cURL 请求参数
- 可选的日志系统(减少数据库写入)
- 准确性
- ✅ 新资源通知显示正确的初始版本号
- ✅ 更新通知显示正确的新版本号
- ✅ 通过时间戳精确匹配,无版本号延迟问题
- 完整性
- ✅ 支持资源标题、作者、分类、链接
- ✅ 支持版本号
- ✅ 支持资源简介(新资源)
- ✅ 支持更新内容(资源更新)
- 性能
- ✅ 清理所有调试日志
- ✅ 异步任务队列,不阻塞用户操作
- ✅ 高效的数据库查询
- 可配置
- ✅ 支持分类筛选(只通知特定分类)
- ✅ 支持自定义消息模板
- ✅ 独立开关控制新资源/更新通知
1.
- ❌ 旧问题:使用了不存在的 $resource->current_version_string 字段
- ✅ 已修复:改为通过 $resource->CurrentVersion->version_string 关系正确获取
- ✅ 影响范围:
- 新资源发布通知
- 资源更新通知
2.
- 文件:Resource.php
- 修改点1:新资源发布时的版本号获取(第67行)
- 旧代码:'version_string' => $resource->current_version_string ?? '1.0.0'
- 新代码:'version_string' => $resource->CurrentVersion ? $resource->CurrentVersion->version_string : '1.0.0'
- 修改点2:资源更新时的版本号获取(第135行)
- 旧代码:'version_string' => $resource->current_version_string ?? ''
- 新代码:'version_string' => $resource->CurrentVersion ? $resource->CurrentVersion->version_string : ''
本次更新解决的问题
1.
- ❌ 旧问题:配置为空时也显示"测试成功"
- ✅ 已修复:增强配置验证,检查API地址格式、群号长度、必填项等
- ✅ 已修复:前端显示详细的配置问题和当前配置状态
2.
- ✅ 支持任何格式的URL(域名、IP、端口)
- ✅ 自动处理URL格式(添加http://前缀,移除末尾斜杠)
- ✅ 验证内网穿透地址格式
3.
- ✅ 所有请求都记录到XenForo错误日志(不仅调试模式)
- ✅ 记录完整的请求URL、群号、消息长度、Token状态
- ✅ 记录HTTP状态码、响应内容、cURL错误详情
- ✅ 记录API返回的retcode和完整响应JSON
- ✅ 记录消息ID(发送成功时)
- ✅ 测试时输出开始/结束标记,方便日志定位
4.
- ❌ 旧问题:删除日志后无限重定向循环
- ✅ 已修复:路由配置简化,使用XenForo标准模式
- ✅ 已修复:控制器重定向使用正确的路径格式
- ✅ 已修复:模板链接使用标准link()函数
- ✅ 已修复:XML格式错误(特殊字符转义)
5.
- ✅ 测试失败时提供常见问题检查清单
- ✅ 前端显示详细的错误信息和配置状态
- ✅ 创建了详细的故障排查文档