5 Commits

Author SHA1 Message Date
OpenClaw Agent
c34d7f43fc 归档 2026-03-23 03:51:10 +08:00
OpenClaw Agent
b973bdaf47 refactor: 目录结构重构和清理 (v2.0.2)
新增目录:
- docs/legacy/ - 废弃文档归档
- scripts/ - 管理脚本和测试脚本
- build/ - 构建输出目录

文件移动:
- GO_REFACTOR_PROGRESS.md -> docs/legacy/
- OPTIMIZATION_REPORT.md -> docs/legacy/
- sms-receiver-go-ctl.sh -> scripts/
- test_api.sh -> scripts/

改进:
- 更新 .gitignore 忽略运行时文件
- 新增 CHANGELOG.md 独立变更日志
- 更新 README.md 目录结构说明
- 更新 Makefile 版本号到 v2.0.2
- 更新管理脚本路径引用

清理:
- 从仓库中移除二进制文件
- 从仓库中移除数据库文件
- 从仓库中移除日志文件
- 从仓库中移除配置文件
2026-02-12 12:19:05 +08:00
OpenClaw Agent
b29a7bbc63 docs(readme): 更新 v2.0.2 版本信息和更新日志
- 更新版本标签从 v2.0.0 到 v2.0.2
- 添加生产环境 Docker Compose 部署说明
- 新增 v2.0.2 详细更新日志
- 添加 Docker Hub 镜像标签说明
2026-02-12 11:47:27 +08:00
OpenClaw Agent
05a39bd495 feat(docker): 添加生产环境 Docker Compose 配置
- 使用预编译镜像 ouaone/sms-receiver-go:latest
- 自动数据卷挂载(data/ 和 logs/)
- 只读配置文件挂载
- 健康检查和资源限制配置
- 完整的使用说明文档
2026-02-12 11:13:39 +08:00
OpenClaw Agent
ebe9d61665 fix(docker): 复制 templates 和 static 目录到运行时镜像
- 修复容器启动时找不到模板文件导致崩溃的问题
- 添加 COPY 指令复制 templates/ 和 static/ 目录
- 验证容器可正常启动并通过健康检查
2026-02-12 00:59:46 +08:00
20 changed files with 314 additions and 115 deletions

27
.gitignore vendored
View File

@@ -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

103
CHANGELOG.md Normal file
View File

@@ -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)

View File

@@ -49,6 +49,10 @@ WORKDIR /app
COPY --from=builder /app/sms-receiver .
COPY --from=builder /app/config.example.yaml config.yaml
# 复制运行时需要的目录(模板和静态资源)
COPY --from=builder /app/templates ./templates
COPY --from=builder /app/static ./static
# 创建数据目录并设置权限
RUN mkdir -p /app/data /app/logs && \
chown -R appuser:appuser /app

View File

@@ -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}')

140
README.md
View File

@@ -4,7 +4,7 @@
[![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat&logo=go)](https://golang.org/)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Version](https://img.shields.io/badge/Version-2.0.0-blue.svg)](https://gitea.king.nyc.mn/openclaw/SmsReceiver-go)
[![Version](https://img.shields.io/badge/Version-2.0.2-blue.svg)](https://gitea.king.nyc.mn/openclaw/SmsReceiver-go/releases/tag/v2.0.2)
## ✨ 功能特性
@@ -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: 使用预编译二进制(推荐)
@@ -155,8 +173,30 @@ make docker-logs
docker-compose up -d
```
**使用生产环境 Docker Compose推荐**:
```bash
# 复制配置文件
cp config.example.yaml config.yaml
# 启动服务
docker compose -f docker-compose.production.yml up -d
# 查看日志
docker compose -f docker-compose.production.yml logs -f
# 停止服务
docker compose -f docker-compose.production.yml down
```
**Docker Hub**: https://hub.docker.com/r/ouaone/sms-receiver-go
**可用镜像标签**:
- `ouaone/sms-receiver-go:latest` - 最新版本(推荐)
- `ouaone/sms-receiver-go:v2.0.2` - v2.0.2 稳定版本
- `ouaone/sms-receiver-go:v2.0.1` - v2.0.1 版本
- `ouaone/sms-receiver-go:v2.0.0` - v2.0.0 版本
### 方式 4: 从源码编译
```bash
@@ -417,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 # 启动服务
@@ -430,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 优化详情归档
## 🔒 安全建议
@@ -464,52 +505,5 @@ MIT License
## 📝 更新日志
### [v2.0.1] - 2026-02-08
详细的版本更新记录请查看 [CHANGELOG.md](CHANGELOG.md)
#### 🐛 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 版本功能

Binary file not shown.

View File

@@ -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

View File

@@ -0,0 +1,97 @@
# SmsReceiver-go 生产环境 Docker Compose 配置
# 使用预编译好的 Docker 镜像,无需本地编译
#
# 快速启动:
# 1. 复制配置文件cp config.example.yaml config.yaml
# 2. 根据需要修改 config.yaml数据库路径、API Token 等)
# 3. 启动服务docker compose -f docker-compose.production.yml up -d
#
# 访问地址http://localhost:28001
# 默认账号admin / admin123
services:
sms-receiver:
# 使用 Docker Hub 上的预编译镜像
image: ouaone/sms-receiver-go:latest
# 或指定版本image: ouaone/sms-receiver-go:v2.0.2
container_name: sms-receiver-go
# 自动重启策略
restart: unless-stopped
# 端口映射
ports:
- "28001:28001"
# 数据卷挂载
volumes:
# 数据库目录(容器内 /app/data
- ./data:/app/data
# 日志目录(容器内 /app/logs
- ./logs:/app/logs
# 配置文件(只读挂载)
- ./config.yaml:/app/config.yaml:ro
# 环境变量
environment:
- TZ=Asia/Shanghai
# 健康检查
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:28001/health"]
interval: 30s # 每 30 秒检查一次
timeout: 3s # 超时时间 3 秒
retries: 3 # 失败 3 次后标记为不健康
start_period: 5s # 容器启动后 5 秒开始检查
# 网络
networks:
- sms-network
# 资源限制(可选)
deploy:
resources:
limits:
cpus: '0.5'
memory: 128M
reservations:
cpus: '0.1'
memory: 32M
networks:
sms-network:
driver: bridge
# 使用说明:
#
# 1. 首次使用前,创建配置文件:
# cp config.example.yaml config.yaml
#
# 2. 编辑 config.yaml 配置:
# - data_path: /app/data (数据库名称,无需修改)
# - admin_password: admin123 (修改为强密码,或使用 password_hash
# - api_tokens: 添加你的 TranspondSms APP 的 Token 配置
#
# 3. 启动服务:
# docker compose -f docker-compose.production.yml up -d
#
# 4. 查看日志:
# docker compose -f docker-compose.production.yml logs -f
#
# 5. 停止服务:
# docker compose -f docker-compose.production.yml down
#
# 6. 更新镜像:
# docker compose -f docker-compose.production.yml pull
# docker compose -f docker-compose.production.yml up -d
#
# 目录结构示例:
# SmsReceiver-go/
# ├── docker-compose.production.yml (本文件)
# ├── config.yaml (配置文件,需自行创建)
# ├── config.example.yaml (配置示例)
# ├── data/ (自动创建,存放数据库)
# └── logs/ (自动创建,存放日志)

1
docs/.gitkeep Normal file
View File

@@ -0,0 +1 @@
# 废弃文档归档

1
docs/legacy/.gitkeep Normal file
View File

@@ -0,0 +1 @@
# 空目录

1
scripts/.gitkeep Normal file
View File

@@ -0,0 +1 @@
# 脚本目录

View File

@@ -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 开机自启..."

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.