fix(notify): 平台回 204 被误判为失败 + 诊断工具改名 scrip_
三个改动: 1) sendNotify.js 的 webhook 判据从 statusCode !== 200 改成 2xx 一律成功。 平台 /api/hooks/ql 按设计回 204(表示已接收且不写 event_logs), 原判据把 204 当失败 → 每轮日志都打「自定义发送通知消息失败!!」, 而投递其实成功了。这是纯假警报,也是这次误判的根因。 同时把状态码打进日志,真失败时能直接看出是 401/403/400/429。 2) _diag_notify.js → scrip_diag_notify.js。 订阅白名单是 scrip_,不带前缀的文件拉不下来,工具等于不存在。 加 // cron: 0 0 1 1 * 与 // name:,避免青龙自动建任务时落随机 cron。 正文补到六段:sendNotify 加载 / env / webhook 三前置条件与 body+headers 解析复刻 / 直打平台按状态码定位 / pushplus txt-vs-html 模板对比 / 完整 sendNotify 对照。 3) 文档补齐平台侧的两道硬校验:来源 IP 必须 127.0.0.1 或 172.16/12 (走公网域名会变成反代地址 → 403),回环带 XFF 一律 403。 给出指向平台的完整 env 写法(WEBHOOK_BODY 必须多行,单行 JSON 会被 parseString 整段吞掉 —— 已实测解析结果为 0 个 key)。 验证:node --check(sendNotify + 诊断)/ 5 个 mock 状态码用例 (204/401/403/400/429)全部被正确识别 / _probe_meta 四文件 PASS
This commit is contained in:
@@ -1310,10 +1310,14 @@ function webhookNotify(text, desp) {
|
||||
).replaceAll('$content', encodeURIComponent(desp));
|
||||
got(formatUrl, options).then((resp) => {
|
||||
try {
|
||||
if (resp.statusCode !== 200) {
|
||||
console.log(`自定义发送通知消息失败!!\n${resp.body}`);
|
||||
// [本地补丁 2026-11-05] 原版判据是 resp.statusCode !== 200,把 204 也算失败。
|
||||
// 平台 /api/hooks/ql 按设计回 204(表示已接收且不写 event_logs),于是每轮
|
||||
// 都打印「自定义发送通知消息失败!!」—— 投递其实成功,纯假警报。
|
||||
// 改成 2xx 一律算成功,并把状态码打进日志,方便区分真失败。
|
||||
if (resp.statusCode < 200 || resp.statusCode >= 300) {
|
||||
console.log(`自定义发送通知消息失败!!HTTP ${resp.statusCode}\n${resp.body}`);
|
||||
} else {
|
||||
console.log(`自定义发送通知消息成功🎉。\n${resp.body}`);
|
||||
console.log(`自定义发送通知消息成功🎉。HTTP ${resp.statusCode}\n${resp.body || ''}`);
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp);
|
||||
|
||||
Reference in New Issue
Block a user