diff --git a/.gitignore b/.gitignore index 31747e8..a07678e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,21 @@ *.log nohup.out +# 二进制文件和备份(根目录) +sms-receiver +sms-receiver-new +sms-receiver-new.backup +sms-receiver-new.v2.0.0 +sms-receiver-v2 + +# 配置文件(根目录) +config.yaml + # 临时文件 tmp/ *.tmp +*.bak +*.backup # Go 相关 go.sum @@ -21,6 +33,15 @@ go.sum *.swo *~ -# 备份文件 -*.bak -*.backup +# 运行时目录 +data/ +logs/ +build/ + +# 二进制目录(如果是旧的) +sms-receiver-go/ + +# Python 版本(不应该在 Go 项目中) +sms-receiver/ +__pycache__/ +*.pyc diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9722fc8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,103 @@ +# CHANGELOG.md + +所有重要的变更都会记录在此文件中。 + +## [v2.0.2] - 2026-02-12 + +### 🐛 Bug 修复 +- ✅ 修复容器启动时找不到模板文件导致崩溃的问题 +- ✅ 修复 Dockerfile 缺少 `templates/` 和 `static/` 目录复制 + +### 📦 Docker 改进 +- ✅ 完善多阶段构建,正确复制运行时所需文件 +- ✅ 新增 `docker-compose.production.yml` 生产环境配置 +- ✅ 预编译镜像推送到 Docker Hub (ouaone/sms-receiver-go:v2.0.2) +- ✅ 验证容器可正常启动并通过健康检查 + +### 📂 目录结构重构 +- ✅ 新增 `docs/legacy/` 目录,归档废弃文档 +- ✅ 新增 `scripts/` 目录,存放管理脚本和测试脚本 +- ✅ 新增 `build/` 目录,用于构建输出 +- ✅ 移动 `sms-receiver-go-ctl.sh` 到 `scripts/` +- ✅ 移动 `test_api.sh` 到 `scripts/` +- ✅ 移动 `GO_REFACTOR_PROGRESS.md` 到 `docs/legacy/` +- ✅ 移动 `OPTIMIZATION_REPORT.md` 到 `docs/legacy/` + +### 🔧 Git 仓库清理 +- ✅ 从仓库中移除二进制文件(sms-receiver*, sms_*.db, *.log) +- ✅ 从仓库中移除配置文件 `config.yaml` +- ✅ 更新 `.gitignore` 忽略运行时生成文件 +- ✅ 从仓库中移除 Python 版本目录 `sms-receiver/` + +### 📚 文档 +- ✅ 更新 `README.md` 版本标签从 v2.0.0 到 v2.0.2 +- ✅ 更新 `README.md` 镜像拉取说明 +- ✅ 新增 `CHANGELOG.md` 独立变更日志文件 +- ✅ 添加 Docker Hub 镜像标签说明 + +### 🔧 兼容性 +- ✅ 与 v2.0.1 功能完全兼容 +- ✅ 数据库无需迁移 +- ✅ 配置文件格式无变更 +- ✅ 更新管理脚本路径(`scripts/sms-receiver-go-ctl.sh`) + +--- + +## [v2.0.1] - 2026-02-08 + +### 🐛 Bug 修复 +- ✅ 修复登录会话创建失败问题(`securecookie: the value is not valid`) +- ✅ 回退密钥处理逻辑确保向后兼容性 +- ✅ 改进会话初始化错误处理 + +### 🔧 兼容性 +- ✅ 与 v2.0.0 Cookie 完全兼容,无需清除 +- ✅ 支持 `/api/v1/*` 和 `/api/*` 路由 +- ✅ 密钥长度不足时仅记录警告 + +--- + +## [v2.0.0] - 2026-02-08 + +### 🔴 高优先级 (6项) +- ✅ 数据库事务支持 (确保消息和日志一致性) +- ✅ SQL 注入修复 (参数化查询) +- ✅ 配置验证启动时自动检查 +- ✅ 会话密钥强化 (长度验证) +- ✅ 签名验证增强 (详细记录验证过程) +- ✅ 密码哈希支持 (bcrypt) + +### 🟡 中优先级 (15项) +- ✅ 连接池配置 (MaxOpenConns, MaxIdleConns) +- ✅ 查询优化 (范围查询, 索引) +- ✅ 健康检查增强 (/health 端点) +- ✅ API 版本控制 (/api/v1/*) +- ✅ 认证中间件 (RequireAuth, RequireAPIAuth) +- ✅ 定时任务优化 (robfig/cron) +- ✅ 配置文件示例 (config.example.yaml) +- ✅ 常量定义 (config/constants.go) +- ✅ 开发文档 (DEVELOPMENT.md) + +### 🟢 低优先级 (9项) +- ✅ Docker 支持 (Dockerfile, docker-compose.yml) +- ✅ Makefile 构建脚本 +- ✅ 优化报告 (OPTIMIZATION_REPORT.md) +- ✅ 密码哈希工具 (tools/password_hash.go) +- ✅ 单元测试架构准备 + +### 📦 文件变更 +- 新增文件: 14 个 +- 代码行数: +1523 / -101 + +--- + +## [v1.0.0] - 2026-02-08 + +### 🎉 初始版本发布 +- ✅ 完整功能实现 +- ✅ 对齐 Python 版本所有核心特性 +- ✅ 独立数据库 (sms_receiver_go.db) +- ✅ 完整的 API 接口 (POST /api/receive, GET /api/messages, GET /api/statistics) +- ✅ Web 管理界面 (短信列表、详情、统计、日志) +- ✅ 签名验证 (HMAC-SHA256) +- ✅ 时区转换 (Asia/Shanghai) diff --git a/Makefile b/Makefile index c8007e2..eea9821 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ APP_NAME := sms-receiver-v2 MAIN_FILE := main.go # 版本信息 -VERSION := v2.0.1 +VERSION := v2.0.2 BUILD_TIME := $(shell date +%Y-%m-%d\ %H:%M:%S) GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") GO_VERSION := $(shell go version | awk '{print $$3}') diff --git a/README.md b/README.md index 95cef2a..7234a3a 100644 --- a/README.md +++ b/README.md @@ -49,35 +49,53 @@ ``` SmsReceiver-go/ ├── main.go # 入口文件 -├── config.yaml # 配置文件 -├── config.example.yaml # 配置示例 -├── Makefile # 构建脚本 -├── Dockerfile # Docker 镜像 -├── docker-compose.yml # Docker Compose -├── DEVELOPMENT.md # 开发文档 -├── OPTIMIZATION_REPORT.md # 优化报告 -├── auth/ # 认证模块 -│ ├── auth.go # 认证逻辑 +├── go.mod / go.sum # Go 依赖管理 +├── Makefile # 构建脚本 +├── config.example.yaml # 配置示例 +├── .gitignore # Git 忽略规则 +├── .dockerignore # Docker 忽略规则 +├── Dockerfile # Docker 镜像 +├── docker-compose.yml # 开发环境 Docker Compose +├── docker-compose.production.yml # 生产环境 Docker Compose +│ +├── README.md # 项目说明 +├── CHANGELOG.md # 变更日志 +├── DEVELOPMENT.md # 开发文档 +│ +├── docs/ # 文档目录 +│ └── legacy/ # 废弃文档归档 +│ ├── GO_REFACTOR_PROGRESS.md +│ └── OPTIMIZATION_REPORT.md +│ +├── scripts/ # 脚本目录 +│ ├── sms-receiver-go-ctl.sh # 服务管理脚本 +│ └── test_api.sh # API 测试脚本 +│ +├── auth/ # 认证模块 │ └── password.go # 密码验证(bcrypt) -├── config/ # 配置加载 -│ ├── config.go # 配置管理 +├── config/ # 配置加载 │ └── constants.go # 常量定义 -├── database/ # 数据库操作 -│ └── database.go # CRUD + 事务 -├── handlers/ # HTTP 处理器 -│ ├── handlers.go # 主处理函数 +├── database/ # 数据库操作 +├── handlers/ # HTTP 处理器 │ ├── middleware.go # 认证中间件 │ └── health.go # 健康检查 -├── models/ # 数据模型 -│ └── message.go # 数据结构 -├── sign/ # 签名验证 -│ └── sign.go # HMAC-SHA256 -├── static/ # 静态资源 -├── templates/ # HTML 模板 -└── tools/ # 工具脚本 +├── models/ # 数据模型 +├── sign/ # 签名验证 +├── static/ # 静态资源 +├── templates/ # HTML 模板 +└── tools/ # 工具脚本 └── password_hash.go # 密码哈希生成 ``` +**运行时生成(不在仓库中)**: +- `config.yaml` - 配置文件(需从 config.example.yaml 创建) +- `sms_receiver_go.db` - SQLite 数据库 +- `sms_receiver.log` - 运行日志 +- `data/` - 数据目录 +- `logs/` - 日志目录 +- `build/` - 构建输出目录 +- `sms-receiver-v2` - 编译后的二进制文件 + ## 🚀 快速开始 ### 方式 1: 使用预编译二进制(推荐) @@ -439,7 +457,7 @@ systemctl status sms-receiver-go # 状态 ### 控制脚本 -使用 `sms-receiver-go-ctl.sh`: +使用 `scripts/sms-receiver-go-ctl.sh`: ```bash ./sms-receiver-go-ctl.sh start # 启动服务 @@ -452,8 +470,9 @@ systemctl status sms-receiver-go # 状态 ## 📚 文档 +- [变更日志](CHANGELOG.md) - 版本更新记录 - [开发文档](DEVELOPMENT.md) - 详细的开发指南和 API 文档 -- [优化报告](OPTIMIZATION_REPORT.md) - v2.0.0 优化详情和变更记录 +- [优化报告](docs/legacy/OPTIMIZATION_REPORT.md) - v2.0.0 优化详情归档 ## 🔒 安全建议 @@ -486,73 +505,5 @@ MIT License ## 📝 更新日志 -### [v2.0.2] - 2026-02-12 +详细的版本更新记录请查看 [CHANGELOG.md](CHANGELOG.md) -#### 🐛 Bug 修复 -- ✅ 修复容器启动时找不到模板文件导致崩溃的问题 -- ✅ 修复 Dockerfile 缺少 `templates/` 和 `static/` 目录复制 - -#### 📦 Docker 改进 -- ✅ 完善多阶段构建,正确复制运行时所需文件 -- ✅ 新增 `docker-compose.production.yml` 生产环境配置 -- ✅ 预编译镜像推送到 Docker Hub (ouaone/sms-receiver-go:v2.0.2) -- ✅ 验证容器可正常启动并通过健康检查 - -#### 📚 文档 -- ✅ 更新 README.md 镜像拉取说明 -- ✅ 更新版本标签显示 - -#### 🔧 兼容性 -- ✅ 与 v2.0.1 功能完全兼容 -- ✅ 数据库无需迁移 -- ✅ 配置文件无需变更 - -### [v2.0.1] - 2026-02-08 - -#### 🐛 Bug 修复 -- ✅ 修复登录会话创建失败问题(`securecookie: the value is not valid`) -- ✅ 回退密钥处理逻辑确保向后兼容性 -- ✅ 改进会话初始化错误处理 - -#### 🔧 兼容性 -- ✅ 与 v2.0.0 Cookie 完全兼容,无需清除 -- ✅ 支持 `/api/v1/*` 和 `/api/*` 路由 -- ✅ 密钥长度不足时仅记录警告 - -### [v2.0.0] - 2026-02-08 - -#### 🔴 高优先级 (6项) -- ✅ 数据库事务支持 (确保消息和日志一致性) -- ✅ SQL 注入修复 (参数化查询) -- ✅ 配置验证启动时自动检查 -- ✅ 会话密钥强化 (长度验证) -- ✅ 签名验证增强 (详细记录验证过程) -- ✅ 密码哈希支持 (bcrypt) - -#### 🟡 中优先级 (15项) -- ✅ 连接池配置 (MaxOpenConns, MaxIdleConns) -- ✅ 查询优化 (范围查询, 索引) -- ✅ 健康检查增强 (/health 端点) -- ✅ API 版本控制 (/api/v1/*) -- ✅ 认证中间件 (RequireAuth, RequireAPIAuth) -- ✅ 定时任务优化 (robfig/cron) -- ✅ 配置文件示例 (config.example.yaml) -- ✅ 常量定义 (config/constants.go) -- ✅ 开发文档 (DEVELOPMENT.md) - -#### 🟢 低优先级 (9项) -- ✅ Docker 支持 (Dockerfile, docker-compose.yml) -- ✅ Makefile 构建脚本 -- ✅ 优化报告 (OPTIMIZATION_REPORT.md) -- ✅ 密码哈希工具 (tools/password_hash.go) -- ✅ 单元测试架构准备 - -#### 📦 文件变更 -- 新增文件: 14 个 -- 代码行数: +1523 / -101 - -### [v1.0.0] - 2026-02-08 - -- ✅ 初始版本发布 -- ✅ 完整功能实现 -- ✅ 对齐 Python 版本功能 diff --git a/config.yaml b/config.yaml deleted file mode 100644 index 426525a..0000000 --- a/config.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# SMS Receiver Go - 配置文件 -app: - name: "短信转发接收端" - version: "2.0.1" - -server: - host: "0.0.0.0" - port: 28001 - debug: true - -security: - enabled: true - username: "admin" - password: "admin123" - session_lifetime: 3600 - secret_key: "1e81b5f9e5a695eba01e996b14871db8899b08e111cf8252df8aa4c91d1c7144" - sign_verify: true - sign_max_age: 3600000 - -sms: - max_messages: 10000 - auto_cleanup: true - cleanup_days: 30 - -database: - path: "sms_receiver_go.db" - -timezone: "Asia/Shanghai" - -api_tokens: - - name: "默认配置" - token: "default_token" - secret: "" - enabled: true diff --git a/docs/.gitkeep b/docs/.gitkeep new file mode 100644 index 0000000..8735d18 --- /dev/null +++ b/docs/.gitkeep @@ -0,0 +1 @@ +# 废弃文档归档 \ No newline at end of file diff --git a/docs/legacy/.gitkeep b/docs/legacy/.gitkeep new file mode 100644 index 0000000..e7d6219 --- /dev/null +++ b/docs/legacy/.gitkeep @@ -0,0 +1 @@ +# 空目录 \ No newline at end of file diff --git a/GO_REFACTOR_PROGRESS.md b/docs/legacy/GO_REFACTOR_PROGRESS.md similarity index 100% rename from GO_REFACTOR_PROGRESS.md rename to docs/legacy/GO_REFACTOR_PROGRESS.md diff --git a/OPTIMIZATION_REPORT.md b/docs/legacy/OPTIMIZATION_REPORT.md similarity index 100% rename from OPTIMIZATION_REPORT.md rename to docs/legacy/OPTIMIZATION_REPORT.md diff --git a/scripts/.gitkeep b/scripts/.gitkeep new file mode 100644 index 0000000..a61f611 --- /dev/null +++ b/scripts/.gitkeep @@ -0,0 +1 @@ +# 脚本目录 \ No newline at end of file diff --git a/sms-receiver-go-ctl.sh b/scripts/sms-receiver-go-ctl.sh similarity index 76% rename from sms-receiver-go-ctl.sh rename to scripts/sms-receiver-go-ctl.sh index 2fb6aa7..9319f3a 100755 --- a/sms-receiver-go-ctl.sh +++ b/scripts/sms-receiver-go-ctl.sh @@ -2,8 +2,11 @@ # SMS Receiver Go - 管理脚本 SERVICE_NAME="sms-receiver-go" -BINARY_PATH="/root/.openclaw/workspace/SmsReceiver-go/sms-receiver-new" -LOG_PATH="/root/.openclaw/workspace/SmsReceiver-go/sms_receiver.log" +# 脚本所在目录的父目录(项目根目录) +SCRIPT_DIR=$(cd "$(dirname "$0")/.." && pwd) +BINARY_NAME="sms-receiver-v2" +BINARY_PATH="$SCRIPT_DIR/$BINARY_NAME" +LOG_PATH="$SCRIPT_DIR/sms_receiver.log" case "$1" in start) @@ -28,11 +31,19 @@ case "$1" in ;; log) echo "SMS Receiver Go 日志 (最近 50 行):" - tail -n 50 $LOG_PATH + if [ -f "$LOG_PATH" ]; then + tail -n 50 "$LOG_PATH" + else + echo "日志文件不存在: $LOG_PATH" + fi ;; logtail) echo "实时监控 SMS Receiver Go 日志 (Ctrl+C 退出):" - tail -f $LOG_PATH + if [ -f "$LOG_PATH" ]; then + tail -f "$LOG_PATH" + else + echo "日志文件不存在: $LOG_PATH" + fi ;; enable) echo "设置 SMS Receiver Go 开机自启..." diff --git a/test_api.sh b/scripts/test_api.sh similarity index 100% rename from test_api.sh rename to scripts/test_api.sh diff --git a/sms-receiver b/sms-receiver deleted file mode 100755 index eb07c4e..0000000 Binary files a/sms-receiver and /dev/null differ diff --git a/sms-receiver-new b/sms-receiver-new deleted file mode 100755 index 5950195..0000000 Binary files a/sms-receiver-new and /dev/null differ diff --git a/sms-receiver-v2 b/sms-receiver-v2 deleted file mode 100755 index af1484a..0000000 Binary files a/sms-receiver-v2 and /dev/null differ diff --git a/sms_receiver.db b/sms_receiver.db deleted file mode 100644 index d97e7e6..0000000 Binary files a/sms_receiver.db and /dev/null differ diff --git a/sms_receiver_go.db b/sms_receiver_go.db deleted file mode 100644 index fd4a817..0000000 Binary files a/sms_receiver_go.db and /dev/null differ