logo
0
0
WeChat Login

Telnet BBS (Golang + MySQL)

一个基于 Golang 与 MySQL 的 Telnet BBS 基线实现,包含用户认证、版块、帖子、回复、站内信、举报审核、审计日志与在线会话管理。

功能概览

  • Telnet 连接与协议协商(基础 ECHO/SGA 协商)
  • 会话状态管理(WELCOME/AUTH/MAIN_MENU/BOARD_LIST/POST_LIST/POST_VIEW/EDITOR)
  • 用户注册与登录(密码哈希、失败计数、锁定窗口、登录限流)
  • 版块浏览与进入
  • 帖子列表、详情、发帖、回帖
  • 站内信发送
  • 举报、封禁、踢下线与审计日志
  • MySQL 自动迁移(启动时执行)

技术栈

  • Go 1.22
  • MySQL 8.x
  • github.com/go-sql-driver/mysql
  • golang.org/x/crypto/bcrypt

项目结构

.
├── cmd/server/main.go          # 服务启动入口
├── internal/
│   ├── biz/                    # 业务服务层
│   ├── config/                 # 配置加载
│   ├── model/                  # 领域模型
│   ├── repo/                   # MySQL 仓储与迁移执行
│   ├── router/                 # 命令解析与路由分发
│   ├── session/                # 在线会话与状态机
│   └── telnet/                 # Telnet 服务与协议处理
└── migrations/001_init.sql     # 数据库初始化脚本

运行前准备

  1. 启动 MySQL,并创建数据库 telnet_bbs
  2. 确保当前账号对该数据库有建表与读写权限。

参考 SQL:

CREATE DATABASE IF NOT EXISTS telnet_bbs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

配置项

程序通过环境变量读取配置(带默认值):

  • BBS_LISTEN_ADDR(默认 :2323
  • BBS_MYSQL_DSN(默认 root:root@tcp(127.0.0.1:3306)/telnet_bbs?parseTime=true
  • BBS_DB_MAX_OPEN_CONNS(默认 20
  • BBS_DB_MAX_IDLE_CONNS(默认 5
  • BBS_LOGIN_ATTEMPTS_PER_MIN(默认 30
  • BBS_SESSION_HEARTBEAT_SECONDS(默认 15

本地启动

# 安装依赖
go mod tidy

# 启动服务
go run ./cmd/server

启动后程序会自动执行 migrations/*.sql

Docker 快速拉起开发环境

# 构建并启动(包含 MySQL + 应用)
docker compose up --build

服务说明:

  • MySQL: 127.0.0.1:3306
  • Telnet BBS: 127.0.0.1:2323

停止并清理容器:

docker compose down

连接与基础命令

使用 Telnet 客户端连接:

telnet 127.0.0.1 2323

可用命令(输入 help 可查看):

  • register <username> <password>
  • login <username> <password>
  • logout
  • boards
  • enter <board_id>
  • list [page]
  • read <post_id>
  • post <title> <line1|line2|...>
  • reply <post_id> <line1|line2|...>
  • mail <to_user_id> <title> <content>
  • report <target_type> <target_id> <reason>
  • ban <user_id>
  • who
  • kick <conn_id>

测试与构建

# 运行测试
go test ./...

# 构建
go build ./...

当前实现说明

  • 这是可运行的基线版本,重点是核心链路与分层结构。
  • 部分功能为最小实现(例如权限细粒度、富文本编辑体验、完整管理后台)可在后续迭代扩展。

About

No description, topics, or website provided.
Language
Go99.7%
Dockerfile0.3%