最近使用青龙面板来管理定时任务,使用Bark来自建推送通知,最近在检查日志的时候发现有遇到Bark通知的时候失败的问题
1
| HTTPError: Response code 431 (Request Header Fields Too Large)
|
查了下431一般是头文件太大了,在这个场景中只有可能是URL太长导致,核对青龙面板的Bark推送实现发现使用的是Bark的GET接口,这就导致了在推送内容太长的情况下导致HTTP431错误
手动修改sendNotify.js文件,修改是使用Bark新版接口,成功解决问题,代码段如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| function BarkNotify(text, desp, params = {}) { return new Promise((resolve) => { if (BARK_PUSH) { const options = { url: `${BARK_PUSH}`, json: { title: text, body: desp, group: `${BARK_GROUP}`, icon: `${BARK_ICON}`, sound: `${BARK_SOUND}`, }, headers: { 'Content-Type': 'application/json; charset=utf-8', }, timeout, }; $.post(options, (err, resp, data) => { try { if (err) { console.log('Bark APP发送通知调用API失败!!\n'); console.log(err); } else { data = JSON.parse(data); if (data.code === 200) { console.log('Bark APP发送通知消息成功🎉\n'); } else { console.log(`${data.message}\n`); } } } catch (e) { $.logErr(e, resp); } finally { resolve(); } }); } else { resolve(); } }); }
|
另外当调用ql repo
命令后遇到sendNotify.js被还原的情况,是由于新版本青龙在拉取脚本后自动回会重新覆盖sendNotify.js脚本,只需修改青龙数据目录下deps
文件夹中的sendNotify.js,即可保证每次覆盖都是修改后的版本。