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%