Skip to content

Releases: nick3/speedtestup

Release v2.1.2 - 生产环境优化

Choose a tag to compare

@nick3 nick3 released this 12 Nov 13:44

SpeedTestUp v2.1.2 发布

🚀 生产环境优化

本次更新移除了开发调试代码,优化了生产环境的日志输出和代码整洁度。

🐛 修复内容

1. 删除调试日志

  • 问题:QuerySpeedupStatus 函数中包含 [DEBUG] API原始返回内容 日志输出
  • 影响:生产环境会输出大量的调试信息,影响日志可读性
  • 修复:移除调试日志,恢复生产环境的简洁性

2. 代码清理

  • 移除临时的调试语句
  • 保留注释框架,便于后续问题排查
  • 优化代码结构,提高可维护性

📊 版本对比

版本 主要变更 状态
v2.1.0 自动提速状态检测功能 ✅ 稳定
v2.1.1 修复bool类型JSON解析错误 ✅ 稳定
v2.1.2 删除调试日志,优化生产环境 ✅ 推荐

🎯 适用场景

推荐升级至v2.1.2:

  • ✅ 当前正在使用v2.1.0或v2.1.1版本
  • ✅ 希望减少日志输出,提高可读性
  • ✅ 需要稳定、简洁的生产环境版本

无需升级:

  • ❌ 正在使用v2.0.0版本(建议直接升级到v2.1.2获取全部功能)

📦 下载与安装

# 通过git升级
cd /path/to/speedtestup
git pull origin main
go build -o speedup .

# 或者直接下载
wget https://github.com/nick3/speedtestup/archive/refs/tags/v2.1.2.zip
unzip v2.1.2.zip
cd speedtestup-2.1.2
go build -o speedup .

🔧 使用示例

# 运行程序
./speedup

# 查看日志(无DEBUG信息)
tail -f speedtestup.log

📋 完整更新日志

v2.1.2 (2025-11-12)

  • 🐛 fix: 删除调试日志,恢复生产环境代码

v2.1.1 (2025-11-12)

  • 🐛 fix: 修复bool类型JSON解析错误,增强API兼容性
  • ✅ 支持Unix时间戳和日期时间字符串两种格式

v2.1.0 (2025-11-12)

  • ✨ feat: 添加自动提速状态检测功能
  • ✅ 每2小时自动检查提速状态
  • ✅ 智能判断已提速状态,避免误报

版本信息:

  • 最新稳定版: v2.1.2 (推荐)
  • 发布日期: 2025-11-12
  • 更新类型: 生产环境优化

🤖 本次发布由 Claude Code 协作完成

快速链接:

Release v2.1.1 - 修复bool类型JSON解析错误

Choose a tag to compare

@nick3 nick3 released this 12 Nov 12:26

SpeedTestUp v2.1.1 发布

🐛 紧急修复

API兼容性增强 - 支持bool类型

问题描述:
在v2.1.0版本中,程序无法正确处理API返回的布尔值(boolean)类型数据,导致JSON解析失败。

错误信息:

json: cannot unmarshal bool into Go struct field .data.upHExpireT of type json.Number

问题原因:
speedtest.cn API返回的 *ExpireT 时间戳字段非常灵活,可能包含多种数据类型:

  • ✅ float64 - 时间戳数字(如:1700000000)
  • ✅ string - 字符串时间戳(如:"2024-01-01 12:00:00")
  • ✅ string - "false" 表示未开通
  • ❌ bool - false 表示未开通(新增)
  • ✅ nil - null 表示空值

修复内容:

1. 增强字段类型支持

// 从:
DownExpireT json.Number `json:"downExpireT"`

// 改为:
DownExpireT interface{} `json:"downExpireT"`

将所有6个时间戳字段的类型改为 interface{},全面支持API返回的各种数据格式。

2. 增强解析函数

func parseTimestamp(timestampVal interface{}) (time.Time, error) {
    // 支持 string/float64/bool/json.Number/nil
    switch v := timestampVal.(type) {
    case string:
        timestampStr = v
    case float64:
        timestampStr = fmt.Sprintf("%.0f", v)
    case bool:
        if !v { return time.Time{}, nil }
    case json.Number:
        timestampStr = v.String()
    case nil:
        return time.Time{}, nil
    }
    // ... 解析时间戳
}

📊 API格式支持汇总

修复后,程序能处理以下所有格式:

数据类型 格式 示例 处理结果
float64 数字 1700000000 解析为时间
string 时间字符串 "2024-01-01 12:00:00" 解析为时间
string "false" "false" 返回零值(未开通)
bool false false 返回零值(未开通)
bool true true 返回错误(异常)
nil null null 返回零值(空)
json.Number 封装的数字 1700000000 解析为时间

🎯 兼容性矩阵

版本 支持的类型 bool类型 string "false" float64 string时间
v2.1.0 ❌ ✅ ✅ ✅ ✅
v2.1.1 ✅ ✅ ✅ ✅ ✅

🔧 升级建议

如果你在使用 v2.1.0:

  • ✅ 强烈建议升级到此版本
  • 🐛 修复了可能导致程序崩溃的JSON解析错误
  • ⚡ 提高了API兼容性

如果你在使用 v2.0.0:

  • ✨ 直接升级到 v2.1.1 可获得全部新功能
  • 🐛 包含v2.1.0的所有功能和v2.1.1的所有修复

📦 下载与使用

升级命令

cd /path/to/speedtestup
git pull origin main
go build -o speedup .

下载

📝 完整更新日志

查看完整的v2.1.1提交历史


版本信息:

  • v2.1.0 - 首次支持自动提速状态检测
  • v2.1.1 - 修复bool类型JSON解析错误

🤖 本次发布由 Claude Code 协助完成

Release v2.1.0 - 自动提速状态检测

Choose a tag to compare

@nick3 nick3 released this 12 Nov 11:52

SpeedTestUp v2.1.0 发布

🎉 新功能

✨ 自动提速状态检测

本次更新解决了长期运行后提速失效无法自动恢复的关键问题!

核心改进:

  1. 智能状态检测

    • 每2小时自动检查提速状态(可配置)
    • 检测到提速失效时立即自动重新提速
    • 无需重启程序,无需手动干预
  2. 灵活的配置选项

    • 新增 status_check_interval 配置项
    • 支持自定义检查间隔(建议2-6小时)
    • 最长限制24小时,确保每天至少检查一次
  3. 优化的检测算法

    • 智能判断何时需要检查状态,避免频繁调用API
    • 基于心跳检测频率自动计算检查时机
    • 性能影响极小

🔧 API兼容性修复 (新增)

🐛 修复JSON解析错误

问题:部分API返回的时间戳字段可能为数字类型,而代码中定义为字符串类型,导致JSON解析失败。

修复内容:

  • 将 *ExpireT 字段类型从 string 改为 json.Number
  • 更新 parseTimestamp 函数,支持 json.Number 类型
  • 正确处理 "false" 值(表示未开通提速)
  • 重写测试文件,更新mock数据结构

错误信息:

json: cannot unmarshal number into Go struct field .data.downExpireT of type string

影响:修复后程序能够正确处理API返回的数字和字符串两种格式的时间戳,提高API兼容性。

📝 配置示例

{
  "speedup": {
    "enabled": true,                      // 启用提速服务
    "check_interval": "10m",              // 心跳检测间隔
    "status_check_interval": "2h",        // ✅ 新增:提速状态检查间隔
    "reopen_schedule": "0 0 * * 1",       // 每周一定时任务
    "ip_binding": {
      "enabled": false,
      "interface": "wan",
      "bind_ip": ""
    },
    "auto_recovery": {
      "enabled": true,
      "max_retries": 3,
      "retry_interval": "5m"
    },
    "self_check": {
      "enabled": true,
      "interval": "168h"
    },
    "down_acc": true,
    "up_acc": true,
    "logging": false,
    "verbose": false
  }
}

🔧 工作原理

心跳检测 (每10分钟)
  ↓
├─ IP变化? → 立即重新提速
  ↓
├─ 到达状态检查时间? (每2小时)
  ↓        ↓
  │        ├─ 查询提速状态
  │        ↓
  │        ├─ 提速有效? → 继续监控
  │        ↓
  │        └─ 提速失效? → 自动重新提速
  ↓
└─ 验证IP绑定状态

🚀 使用建议

  • 默认检查间隔: 2小时(平衡及时性和API调用频率)
  • 网络不稳定: 可缩短至1-2小时
  • 网络很稳定: 可延长至4-6小时

📊 性能影响

  • CPU占用: 极低(仅在检查时增加)
  • API调用: 每2小时额外1-2次查询调用
  • 内存占用: 无显著增加

💡 你将获得

✅ 无需重启: 提速失效后自动恢复
✅ 持续提速: 24/7不间断监控
✅ 智能高效: 仅在需要时检查状态
✅ 灵活可控: 可自定义检查频率
✅ API兼容: 支持多种数据格式

🐛 修复的问题

  • 修复了长时间运行后提速失效的问题
  • 修复了必须重启程序才能恢复提速的问题
  • 修复了JSON解析错误(时间戳字段类型不匹配)
  • 提升了网络提速的稳定性和可靠性

📚 相关文档

🔗 下载


完整更新日志: 查看提交历史

🤖 本次发布由 Claude Code 协助完成

Development build

Development build Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Nov 13:42

自动构建版本
构建时间: 2025-11-12T21:41:08+08:00
提交信息: 🐛 fix: 删除调试日志,恢复生产环境代码

  • 移除QuerySpeedupStatus中的[DEBUG] API原始返回内容日志
  • 恢复接口调用的简洁性,避免生产环境输出调试信息
  • 保留注释掉的调试代码框架,便于后续问题排查

优化生产环境日志输出,保持代码整洁。

🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com
提交SHA: ca5ec18