Releases: nick3/speedtestup
Release list
Release v2.1.2 - 生产环境优化
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解析错误
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 .下载
- 源代码: Source code (zip)
- 源代码: Source code (tar.gz)
📝 完整更新日志
版本信息:
- v2.1.0 - 首次支持自动提速状态检测
- v2.1.1 - 修复bool类型JSON解析错误
🤖 本次发布由 Claude Code 协助完成
Release v2.1.0 - 自动提速状态检测
SpeedTestUp v2.1.0 发布
🎉 新功能
✨ 自动提速状态检测
本次更新解决了长期运行后提速失效无法自动恢复的关键问题!
核心改进:
-
智能状态检测
- 每2小时自动检查提速状态(可配置)
- 检测到提速失效时立即自动重新提速
- 无需重启程序,无需手动干预
-
灵活的配置选项
- 新增
status_check_interval配置项 - 支持自定义检查间隔(建议2-6小时)
- 最长限制24小时,确保每天至少检查一次
- 新增
-
优化的检测算法
- 智能判断何时需要检查状态,避免频繁调用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解析错误(时间戳字段类型不匹配)
- 提升了网络提速的稳定性和可靠性
📚 相关文档
🔗 下载
- 源代码: Source code (zip)
- 源代码: Source code (tar.gz)
完整更新日志: 查看提交历史
🤖 本次发布由 Claude Code 协助完成
Development build
自动构建版本
构建时间: 2025-11-12T21:41:08+08:00
提交信息: 🐛 fix: 删除调试日志,恢复生产环境代码
- 移除QuerySpeedupStatus中的[DEBUG] API原始返回内容日志
- 恢复接口调用的简洁性,避免生产环境输出调试信息
- 保留注释掉的调试代码框架,便于后续问题排查
优化生产环境日志输出,保持代码整洁。
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
提交SHA: ca5ec18