Releases: ottercoconut/LinuxChat
Releases · ottercoconut/LinuxChat
Release list
LinuxChat v2.0.0 Linux程序设计课程设计作业
LinuxChat v2.0.0
版本概览
本版本完成了 LinuxChat C 语言原生版的主要功能闭环,覆盖注册登录、好友私聊、群聊、拉黑、离线未读提示、数据库持久化、协议稳定性、安全加固、macOS 构建适配和完整测试文档同步。项目当前已进入课程设计可交付状态。
新增功能
- 支持用户名注册与登录,用户 ID 调整为 8 位随机数字。
- 支持基于用户名添加好友、添加群成员、拉黑和解除拉黑。
- 新增群聊能力:
- 创建群聊
- 查询群聊列表
- 查询群成员
- 添加群成员
- 群聊文本消息
- 群消息持久化
- 新增好友上线/离线通知。
- 新增私聊和群聊离线未读提示。
- 新增拉黑与解除拉黑流程,私聊发送前会检查屏蔽关系。
- 新增服务端优雅退出,支持
SIGINT/SIGTERM。
修复与稳定性
- 修复登录后聊天链路问题,包括接收线程启动时机、聊天页切换和在线会话同步。
- 修复实时消息用户名、时间戳和群聊刷新问题。
- 修复协议前缀解析偏移问题。
- 修复注册成功误报问题。
- 修复重复好友、重复群成员、重复拉黑/解除拉黑等关系型操作的幂等处理。
- 修复解除拉黑权限提示和被拉黑场景下的客户端反馈。
- 修复 TCP 粘包/拆包风险:
- 客户端发送命令统一追加换行帧边界。
- 服务端维护连接级接收缓冲区,按完整行解析协议命令。
安全加固
- 注册、登录和关键数据库写入改为 MySQL 预处理语句。
- 密码使用
SHA2(..., 256)哈希存储。 - 好友、消息、群聊、拉黑等操作以登录会话用户 ID 为准,不信任客户端声明的 user_id/sender_id。
- 私聊、群聊历史、群成员查询和群消息发送增加权限校验。
- 客户端和服务端拒绝会破坏文本协议的分隔符输入。
- 响应构造和命令解析使用有界写入/限长读取,减少缓冲区风险。
构建与测试
- 新增 macOS 构建脚本:
scripts/build_macos.sh- 自动探测
mysql_config - 自动配置 GTK3 编译参数
- 自动设置 MySQL/OpenSSL rpath
- 自动探测
- 新增完整测试入口:
tests/run_all_tests.sh - 测试覆盖:
- 客户端/服务端编译检查
- 服务端会话状态同步
- 私聊和群聊协议边界
- TCP 粘包/拆包帧解析
- 数据库事务、外键、唯一约束
- SQL 注入防护
- 会话授权
- 离线消息统计
- 可选真实 MySQL 集成测试
文档更新
- README、操作文档、课程设计报告和测试说明已与当前代码同步。
- 修正旧文档中关于三字段注册、初始成员 ID 建群、TCP 未处理粘包/拆包等过期描述。
- 课程设计报告不再内嵌过期源码副本,改为引用仓库真实源码文件。
已知限制
- 当前仅支持文本消息,不支持图片、文件、语音或视频。
- 文本协议仍依赖
:,,,;等分隔符,目前通过输入校验规避解析错位。 - 密码哈希仍使用 MySQL
SHA2(..., 256),后续可升级为带盐慢哈希。 - 传输层未加密,局域网/教学演示环境可用,生产环境仍需 TLS 或其他安全通道。
LinuxChat v1.0.0 Linux程序设计课程设计作业
LinuxChat v1.0.0
这是 LinuxChat 课程设计最终版,一个基于 C 语言、TCP Socket、pthread、MySQL 和 GTK3 的 Linux/macOS 网络即时通信工具。
主要功能
- 用户注册与登录
- 好友添加与好友列表
- 一对一实时聊天
- 群聊创建、群成员管理和群消息
- 好友上线/离线通知
- 用户屏蔽与解除屏蔽
- 私聊/群聊离线未读提示
- 聊天记录 MySQL 持久化
- GTK3 图形客户端
- 多线程 TCP 服务端
项目结构
源码已整理到项目根目录:
client/:GTK3 客户端server/:C 语言服务端database/:MySQL 初始化脚本docs/:操作文档和课程设计报告tests/:回归测试与安全契约测试
验证情况
已通过非数据库完整测试:
./tests/run_all_tests.sh测试结果:All non-database tests passed.
文档
- README.md
- docs/操作文档.md
- docs/课程设计报告.md
已知限制
- 文本协议仍依赖分隔符,当前通过拒绝特殊分隔符规避解析问题
- 密码哈希使用 MySQL SHA2(..., 256),后续可升级为带盐慢哈希
- TCP 拆包/粘包尚未实现完整消息边界协议