feat(update): OTA 更新源切换到 GitHub Releases
- RELEASES_API 指向 api.github.com/repos/LiJoeAllen/mqttx/releases; latest 端点优先,回退列表分页改 per_page=5(GitHub 参数) - agent 显式设置 User-Agent: mqttx-ota(GitHub API 要求携带 UA) - api.github.com 未认证配额 60 次/小时/IP:共享出口 IP 打满时检查静默 降级(错误仅记录),附件下载走 github.com CDN 不受配额限制 - 设置对话框「关于」的更新源展示改为 GitHub(UPDATE_SOURCE 常量) - v1.0.x 老客户端 OTA 源仍是 Gitea,靠 CI mirror-gitea job 喂养 (配置 GITEA_URL/GITEA_TOKEN/GITEA_OWNER Secrets 后生效), 老客户端升级完毕后可移除镜像 job 与 publish-gitea 脚本
This commit is contained in:
@@ -5,6 +5,9 @@ use super::*;
|
||||
pub(super) fn agent() -> ureq::Agent {
|
||||
ureq::Agent::new_with_config(
|
||||
ureq::Agent::config_builder()
|
||||
// GitHub API 要求请求携带 User-Agent(缺省 ureq/x.y 也能过,
|
||||
// 但标识应用更符合其规范,也便于服务端区分流量)
|
||||
.user_agent("mqttx-ota")
|
||||
// 整体上限:防止慢速滴流的下载无限占用阻塞线程
|
||||
.timeout_global(Some(std::time::Duration::from_secs(10 * 60)))
|
||||
.timeout_connect(Some(std::time::Duration::from_secs(HTTP_TIMEOUT_SECS)))
|
||||
@@ -66,12 +69,12 @@ pub fn pick_assets(rel: &serde_json::Value) -> Option<(String, String, u64, Opti
|
||||
|
||||
/// 检查更新。返回 Ok(None) 表示已是最新。
|
||||
pub fn check_latest() -> Result<Option<UpdateInfo>, String> {
|
||||
let base = format!("{GITEA_URL}/api/v1/repos/{PKG_OWNER}/{PKG_REPO}/releases");
|
||||
// 优先 latest 端点;旧版 Gitea 没有时回退到列表取第一个非草稿/预发布
|
||||
let base = RELEASES_API;
|
||||
// 优先 latest 端点(GitHub 恒可用);回退到列表取第一个非草稿/预发布,作容错
|
||||
let rel = match http_get_json(&format!("{base}/latest")) {
|
||||
Ok(v) => v,
|
||||
Err(_) => {
|
||||
let list = http_get_json(&format!("{base}?limit=5"))?;
|
||||
let list = http_get_json(&format!("{base}?per_page=5"))?;
|
||||
let first = list
|
||||
.as_array()
|
||||
.and_then(|l| l.iter().find(|r| {
|
||||
|
||||
Reference in New Issue
Block a user