logo
0
0
WeChat Login

短信管理系统

一个功能强大、用户友好的短信管理系统,基于 Node.js 和 Express 开发,支持查看、管理所有接收和发送的短信,提供实时刷新、智能分页和 URL 识别等高级功能。

安装步骤

1. 克隆项目

git clone https://cnb.cool/null/gammu-ui cd gammu

2. 安装依赖

npm install

3. 配置环境变量

  1. 复制示例配置文件:

    # 复制示例配置文件 cp .env.example .env
  2. 编辑 .env 文件填写实际配置:

    # Database Configuration DB_HOST=localhost # 数据库主机地址 DB_USER=root # 数据库用户名 DB_PASSWORD=your_password_here # 数据库密码 DB_NAME=your_database_name_here # 数据库名称 # Server Configuration PORT=3000 # 服务器端口 NODE_ENV=development # 运行环境(development/production) # Authentication LOGIN_USERNAME=admin # 登录用户名 LOGIN_PASSWORD=password # 登录密码

4. 配置数据库

  1. 确保 MySQL 服务已启动
  2. 创建数据库(如果不存在):
    CREATE DATABASE your_database_name_here;
  3. 确保数据库用户有适当的权限

5. 启动服务器

node index.js

6. 访问系统

打开浏览器访问 http://localhost:3000

7. 登录系统

使用配置文件中设置的用户名和密码登录系统:

  • 默认用户名:admin
  • 默认密码:password

配置说明

环境变量配置

.env 文件是系统的核心配置文件,包含以下配置项:

数据库配置

  • DB_HOST:数据库主机地址(默认:localhost)

    • 说明:指定 MySQL 数据库的主机地址,可以是 localhost、IP 地址或域名
    • 示例:DB_HOST=10.1.0.5
  • DB_USER:数据库用户名(默认:root)

    • 说明:连接 MySQL 数据库使用的用户名
    • 示例:DB_USER=sms
  • DB_PASSWORD:数据库密码

    • 说明:连接 MySQL 数据库使用的密码
    • 示例:DB_PASSWORD=Fi87beR5KoV8
  • DB_NAME:数据库名称

    • 说明:存储短信数据的数据库名称
    • 示例:DB_NAME=sms

服务器配置

  • PORT:服务器端口(默认:3000)

    • 说明:指定 Express 服务器监听的端口号
    • 示例:PORT=3000
  • NODE_ENV:运行环境(默认:development)

    • 说明:指定运行环境,可选值为 development(开发)或 production(生产)
    • 示例:NODE_ENV=production

认证配置

  • LOGIN_USERNAME:登录用户名(默认:admin)

    • 说明:系统登录的用户名
    • 示例:LOGIN_USERNAME=admin
  • LOGIN_PASSWORD:登录密码(默认:password)

    • 说明:系统登录的密码
    • 示例:LOGIN_PASSWORD=your_secure_password

配置建议

  1. 开发环境

    • 使用默认的 NODE_ENV=development
    • 数据库可以使用本地或开发服务器
  2. 生产环境

    • 设置 NODE_ENV=production
    • 使用强密码保护数据库和登录账号
    • 考虑使用环境变量管理工具,避免将敏感信息提交到版本控制系统
  3. 安全注意事项

    • 不要在 .env 文件中使用弱密码
    • 确保 .env 文件被添加到 .gitignore
    • 定期更改密码和密钥

使用方法

登录系统

  1. 访问登录页面:打开浏览器访问 http://localhost:3000
  2. 输入凭证:在登录表单中输入配置文件中设置的用户名和密码
  3. 点击登录:点击「登录」按钮
  4. 自动跳转:登录成功后,系统会自动跳转到所有短信页面

查看短信

  • 登录后默认页面:登录成功后,系统会自动进入所有短信页面
  • 短信列表:页面会显示所有接收和发送的短信,按时间倒序排列(最新短信在顶部)
  • 短信详情:每条短信显示发送/接收时间、联系人号码、短信内容和状态
  • URL 链接:短信中的 URL 会自动转换为可点击链接,点击即可在新窗口打开

项目结构

gammu/ ├── .cnb.yml # cnb.cool 编译配置 ├── .env # 环境变量配置文件 ├── .env.example # 环境变量配置示例 ├── .gitignore # Git 忽略文件配置 ├── db.js # 数据库连接配置 ├── Dockerfile # Docker 镜像构建文件 ├── docker-compose.yaml # Docker Compose 配置 ├── common.css # 通用样式 ├── common.js # 通用脚本 ├── index.html # 登录页面 ├── index.js # 主服务器文件 ├── inbox.html # 收件箱页面 ├── package.json # 项目依赖配置 ├── package-lock.json # 依赖版本锁定文件 ├── README.md # 项目文档 ├── sent.html # 已发送页面 └── sms.html # 所有短信页面

主要文件说明

  • index.js:主服务器文件,包含所有 API 路由、服务器配置和业务逻辑

    • 功能:处理 HTTP 请求、连接数据库、提供 API 接口
    • 核心路由:/api/login(登录)、/api/sms/all(获取所有短信)
  • db.js:数据库连接配置文件

    • 功能:创建和管理 MySQL 数据库连接池
    • 技术:使用 mysql2 驱动提供更好的性能和可靠性
  • index.html:登录页面

    • 功能:用户认证入口,提供登录表单
    • 技术:使用 Bootstrap 5 构建响应式登录界面
  • sms.html:合并短信页面

    • 功能:显示所有接收和发送的短信,支持分页、自动刷新和 URL 识别
    • 技术:原生 JavaScript 实现前端逻辑,Bootstrap 5 构建 UI
  • package.json:项目依赖配置文件

    • 功能:定义项目名称、版本和依赖包
    • 依赖:Express.js、mysql2、dotenv 等
  • .env:环境变量配置文件

    • 功能:存储数据库连接信息、服务器配置和认证信息
    • 注意:不要将此文件提交到版本控制系统
  • .env.example:环境变量配置示例

    • 功能:提供环境变量配置的模板
    • 用途:新用户可以基于此文件创建自己的 .env 文件
  • .gitignore:Git 忽略文件配置

    • 功能:指定 Git 应该忽略的文件和目录
    • 内容:依赖目录、环境变量文件、日志文件等
  • README.md:项目文档

    • 功能:提供项目的详细说明、安装步骤、使用方法等
    • 用途:帮助新用户快速了解和使用项目

API 接口

认证接口

登录接口

  • 接口路径POST /api/login
  • 功能:用户登录,获取访问令牌
  • 请求体
    { "username": "admin", "password": "password" }
  • 响应
    • 成功:
      { "success": true, "token": "random-token-string", "expiresIn": 3600 }
    • 失败:
      { "error": "Invalid username or password" }

短信接口

合并短信接口

  • 接口路径GET /api/sms/all
  • 功能:获取所有接收和发送的短信列表
  • 请求参数
    • page:页码,默认值为 1
    • pageSize:每页条数,默认值为 10
    • keyword:搜索关键词,用于搜索短信内容和联系人
    • startDate:开始日期,格式为 YYYY-MM-DD
    • endDate:结束日期,格式为 YYYY-MM-DD
    • type:消息类型,可选值为 inbox(接收)、sent(发送)或空(所有)
    • status:消息状态,仅对发送消息有效
    • contact:联系人号码,用于搜索特定联系人的短信
  • 请求头
    • Authorization:Bearer (登录后获取的令牌)
  • 响应
    { "data": [ { "ID": 1, "Contact": "13800138000", "Content": "Hello World", "DateTime": "2026-02-05 12:00:00", "Type": "inbox", "Status": null } ], "pagination": { "page": 1, "pageSize": 10, "total": 100, "totalPages": 10 } }

开发指南

开发环境设置

  1. 克隆项目并安装依赖

    git clone <repository-url> cd gammu npm install
  2. 配置环境变量

    cp .env.example .env # 编辑 .env 文件,设置开发环境配置
  3. 启动开发服务器

    node index.js
  4. 访问开发服务器 打开浏览器访问 http://localhost:3000

部署说明

生产环境部署

方法一:传统部署

  1. 服务器准备

    • 系统要求:Linux (Ubuntu 18.04+ 推荐) 或 Windows Server 2016+
    • 硬件要求:至少 1 核 CPU,1GB 内存,20GB 存储空间
    • 软件安装:Node.js 12.0+,MySQL 5.7+
  2. 项目部署

    # 克隆项目 git clone <repository-url> cd gammu # 安装依赖 npm install --production # 配置环境变量 cp .env.example .env # 编辑 .env 文件,设置生产环境配置
  3. 启动服务

    • 使用 PM2 管理进程(推荐):
      npm install -g pm2 pm2 start index.js --name "sms-system" pm2 save pm2 startup
    • 直接启动
      node index.js
  4. 配置防火墙

    # Ubuntu/Debian ufw allow 3000 # CentOS/RHEL firewall-cmd --permanent --add-port=3000/tcp firewall-cmd --reload
  5. 访问系统 打开浏览器访问 http://your-server-ip:3000

方法二:Docker 部署

  1. 安装 Docker 参考 Docker 官方文档安装 Docker

  2. 构建 Docker 镜像

    # 克隆项目 git clone <repository-url> cd gammu # 构建镜像(单平台) docker build -t sms-system . # 构建多平台镜像(需要 buildx 支持) docker buildx build --platform linux/amd64,linux/arm64 -t sms-system .
  3. 配置环境变量 复制 .env.example 文件为 .env 并填写配置:

    cp .env.example .env # 编辑 .env 文件,设置生产环境配置
  4. 运行 Docker 容器

    # 使用 docker-compose(推荐) docker-compose up -d # 或者直接运行容器 docker run -d --name sms-system \ -p 3000:3000 \ --env-file .env \ sms-system # 或者直接传递环境变量 docker run -d --name sms-system \ -p 3000:3000 \ -e DB_HOST=your-db-host \ -e DB_USER=your-db-user \ -e DB_PASSWORD=your-db-password \ -e DB_NAME=your-db-name \ -e LOGIN_USERNAME=admin \ -e LOGIN_PASSWORD=your-secure-password \ sms-system
  5. 访问系统 打开浏览器访问 http://your-server-ip:3000

方法三:cnb.cool 自动构建

本项目已配置 cnb.cool 多平台镜像自动构建,支持以下功能:

自动构建触发

  • 推送代码到 main 分支时自动构建
  • 支持并发构建 linux/amd64linux/arm64 多平台镜像
  • 自动推送到 cnb.cool 制品库

手动构建触发 在 cnb.cool 平台手动触发构建:

  1. 进入 cnb.cool 项目分支详情页面
  2. 点击「构建 Web 镜像」按钮
  3. 选择构建平台:
    • 全部平台 - 构建 AMD64 和 ARM64 两个平台
    • 仅 AMD64 - 仅构建 x64 平台
    • 仅 ARM64 - 仅构建 ARM64 平台
  4. 点击确定开始构建

cnb.cool 配置文件说明

.cnb.yml 配置文件包含以下主要配置:

  • 并发构建:使用 YAML 锚点模板,同时构建 amd64 和 arm64 平台
  • 多平台支持linux/amd64linux/arm64
  • 自动合并 manifest:构建完成后自动创建并推送多平台 manifest
  • 手动触发:通过 web_trigger 事件支持手动构建按钮
  • 内置环境变量
    • ${CNB_DOCKER_REGISTRY} - cnb.cool Docker 制品库地址
    • ${CNB_REPO_SLUG_LOWERCASE} - 仓库路径(小写)
    • ${CNB_BRANCH} - 当前分支名
    • ${CNB_COMMIT_SHORT} - 提交 SHA(前8位)
    • ${CNB_TOKEN} - cnb.cool 访问令牌(用于 manifest 推送)
    • ${platform} - 手动触发时选择的平台参数(all/amd64/arm64)

.cnb/web_trigger.yml 配置文件说明:

  • 自定义按钮配置:在分支详情页显示「构建 Web 镜像」按钮
  • 平台选择:支持选择全部平台、仅 AMD64 或仅 ARM64
  • 默认按钮:设置为默认按钮,点击直接弹出配置弹窗

构建流程

  1. 并发构建 amd64 和 arm64 单平台镜像
  2. 自动创建多平台 manifest(使用 docker manifest create
  3. 推送 manifest 到 cnb.cool 制品库

镜像标签规则

  • latest - 多平台镜像(包含 amd64 + arm64)
  • latest-amd64 - AMD64 单平台镜像
  • latest-arm64 - ARM64 单平台镜像
  • <分支名> - 多平台镜像标签
  • <分支名>-amd64 - AMD64 分支标签
  • <分支名>-arm64 - ARM64 分支标签
  • <commit-sha> - 多平台提交标签
  • <commit-sha>-amd64 - AMD64 提交标签
  • <commit-sha>-arm64 - ARM64 提交标签

查看构建状态

  • cnb.cool 构建页面查看构建日志
  • cnb.cool Docker 制品库查看构建产物
  • 推送命令:
    # 拉取多平台镜像(Docker 会自动选择当前平台) docker pull docker.cnb.cool/${CNB_REPO_SLUG_LOWERCASE}:latest # 拉取指定平台镜像 docker pull docker.cnb.cool/${CNB_REPO_SLUG_LOWERCASE}:latest-amd64 docker pull docker.cnb.cool/${CNB_REPO_SLUG_LOWERCASE}:latest-arm64

更新日志

版本 1.0.0 (2026-02-05)

  • 初始版本发布
  • 实现核心功能:
    • 统一短信视图
    • 智能分页系统
    • 实时自动刷新
    • 智能 URL 识别
    • 响应式设计
  • 提供完整的 API 接口
  • 支持生产环境部署
  • 添加 Docker 支持,提供 Dockerfile 和 Docker 部署指南

About

gammu ui

gammu-uirepo-named
Language
HTML81.8%
JavaScript13.3%
CSS3.8%
Dockerfile1.1%