Skip to content

Luomicx/TLS-Message-GUI

Repository files navigation

安全网络聊天工具(TLS-Message-GUI)

Python PyQt5 SQLite TLS Tests Platform

基于 Python + PyQt5 + SQLite 的桌面聊天系统,包含客户端、服务端管理界面与 TLS 安全通信。当前版本补齐了好友申请确认、加群审批、分片文件传输与接收目录管理,适合课程实验、功能演示和小规模本地联调。

项目概览

  • 客户端:登录、注册、好友管理、私聊/群聊、分片文件发送与下载、接收目录选择、个人资料编辑
  • 服务端:图形化启动/停止服务、用户管理、在线状态维护、好友申请与加群审批、消息与文件存储
  • 协议层:JSON 行协议(保留少量旧版文本协议兼容),大文件走分片上传流程
  • 安全能力:密码哈希存储、TLS 传输、单账号单终端会话控制、找回问题重置密码

项目演示

image-20260410170114330

image-20260410170156925

技术栈

  • Python 3.10+
  • PyQt5 5.15.10
  • SQLite3(标准库)
  • socket / socketserver / ssl(标准库)
  • unittest(标准库)

依赖文件:requirements.txt

架构说明

PyQt5 Client (client_app)
        |
        |  TLS + JSON Line Protocol
        v
PyQt5 Server UI (server_app/ui + server_app/app.py)
        |
        v
Server Controller (server_app/network/server_controller.py)
        |
        v
SQLite Database (server_app/db.py -> data/server.db)

核心特点:客户端是“同步请求-响应”模型,服务端按 action 分发业务并写入 SQLite。

快速开始

1. 环境准备

  • Windows 10/11(推荐)
  • Python 3.10 或更高版本

检查 Python 版本:

python --version

2. 安装依赖

python -m pip install -r requirements.txt

3. 启动服务端

python -m server_app

4. 启动客户端

python -m client_app

项目结构

SD1/
├─ client_app/              # 客户端应用(UI + 应用编排 + 网络控制)
├─ server_app/              # 服务端应用(UI + 网络服务 + 数据层)
├─ tests/                   # unittest 测试
├─ plans/                   # 实施计划与对齐文档
├─ doc/ / docs/             # 项目说明、答辩与技术文档
├─ data/                    # SQLite 数据文件目录
├─ downloads/received/      # 客户端默认接收文件目录
├─ tls_support.py           # TLS 证书与上下文辅助
└─ requirements.txt

关键功能

  • 账号体系:登录、注册、锁定控制、找回问题重置密码
  • 社交能力:搜索用户、好友申请、好友同意/拒绝、会话列表
  • 聊天能力:私聊消息拉取、群聊创建、邀请审批、群消息拉取
  • 文件能力:分片上传、大文件发送、文件拉取、客户端下载目录管理、发送进度提示
  • 在线状态:登录在线、离线时间、会话状态刷新
  • 安全能力:PBKDF2 + Salt 密码存储、TLS 通信、单端登录挤下线

当前版本补充

  • 好友申请需要对方明确同意,未成为好友前不能直接私聊或发送文件
  • 创建群聊后,受邀成员会先收到加群申请,通过后才正式加入
  • 文件发送改为后台分片上传,界面会显示进度,较大的文件也能稳定传输
  • 客户端可以单独设置接收目录,收到的文件会按用户关系落到本地目录中

开发流程(建议)

  1. 在 plans/ 下先补一份需求或变更计划
  2. 在 client_app 或 server_app 完成功能实现
  3. 先做语法校验,再跑对应测试
  4. 自查文案与错误码映射,确保客户端提示可读

编码约定(摘要)

  • 新模块默认包含 from __future__ import annotations(延迟注解)
  • 导入顺序:标准库 -> 第三方 -> 本地模块
  • 命名规则:类用 PascalCase,函数/变量用 snake_case
  • 网络错误优先返回结构化响应,不直接让处理线程崩溃
  • 保持现有同步通信模型,不随意改成服务端主动推送

测试与校验

运行全量测试:

python -m unittest discover -s tests -p "test_*.py"

按影响范围运行重点测试:

python -m unittest tests.test_secure_chat_tls_presence
python -m unittest tests.test_client_app_message_mapping
python -m unittest tests.test_client_controller_file_upload

语法校验示例:

python -m py_compile "client_app/app.py" "client_app/network/client_controller.py" "client_app/ui/chat_window.py" "server_app/db.py" "server_app/network/server_controller.py" "tls_support.py"

贡献说明

  • 先阅读 AGENTS.md,遵守仓库约定
  • 尽量做“小步可验证”提交,避免一次性大改协议或数据库结构
  • 涉及网络协议、数据库表结构、通信模型的重大调整,请先达成共识
  • 严禁提交密钥、令牌、.env(环境变量文件)等敏感信息

许可证

当前仓库未提供明确 License 文件。如需开源分发,请先补充 LICENSE。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages