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%