diff --git a/README.md b/README.md index 1c96748..cee3125 100644 --- a/README.md +++ b/README.md @@ -1,145 +1,125 @@ # 🐱 SenSu -一个功能强大的Python后端框架,具有插件化架构和丰富的功能集。 +万能 Python TUI 项目管理器 — 插件化架构,任何项目都能挂载运行。 + +[![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE) +[![Python](https://img.shields.io/badge/python-3.11%2B-blue)]() + +--- ## ✨ 特性 -- 🎨 **TUI界面**: 基于Textual的终端用户界面 -- 📝 **强大日志系统**: 多输出、文件切割、实时日志流 -- 🔌 **插件化架构**: 热加载、权限管理、插件隔离 -- 🌐 **网络服务**: WebSocket、HTTP API、反向代理 -- 🔐 **认证系统**: 用户认证、令牌管理、权限验证 -- 🔄 **消息桥接**: 模块间通信、插件间通信 -- ⚡ **高性能**: 异步架构、协程支持 -- 🛡️ **安全**: 权限验证、输入验证、错误隔离 +- 🎨 **Textual TUI** — 三栏界面 + 系统监控面板 + CLI 回退 +- 🔌 **插件系统** — 热加载、权限隔离、依赖解析、进程隔离 +- 🗄️ **项目注册表** — 插件声明 `project.yaml` 申请端口和资源 +- 📊 **SQLite 持久化** — 插件状态、权限、审计日志统一存储 +- 🌐 **Web 管理面板** — aiohttp + WebSocket,:4200 实时仪表盘 +- 🔐 **安全认证** — PBKDF2-SHA256、环境变量密码、Token 管理 +- 🐳 **Docker 部署** — Alpine 镜像 <100MB,systemd 服务文件 +- 🧪 **23 个回归测试** — pytest,零失败 ## 🚀 快速开始 -### 安装依赖 - ```bash +# 安装依赖 pip install -r requirements.txt -``` -### 运行框架 - -```bash +# 启动 (TUI 模式) python main.py + +# 启动 (headless,适合 SSH/systemd/Docker) +python main.py --headless + +# 运行测试 +python -m pytest tests/ -v ``` -### 基本命令 - -在TUI底部输入框中输入命令: - -- `help` - 显示帮助信息 -- `status` - 显示框架状态 -- `history` - 显示命令历史 - -## 📁 项目结构 +## 🏗️ 架构 ``` -project_root/ -├── main.py # 框架主入口 -├── service_manager.py # 服务管理器 -├── requirements.txt # 依赖包列表 -├── README.md # 项目说明 -│ -├── config/ # 运行时生成的配置文件 -│ ├── framework/ # 框架核心配置 -│ ├── plugins/ # 插件配置 -│ ├── services/ # 服务配置 -│ └── permissions/ # 权限配置 -│ -├── logs/ # 日志文件目录 -│ ├── debug/ # debug级别日志 -│ └── runtime/ # 运行时日志 -│ -├── services/ # 核心服务模块 -│ ├── init_service.py # 初始化服务 -│ ├── log_service.py # 日志服务 -│ ├── tui_service.py # TUI服务 -│ ├── command_service.py # 指令服务 -│ ├── auth_service.py # 认证服务 -│ ├── internet_service.py # 互联网服务 -│ ├── plugin_service.py # 插件服务 -│ ├── permission_service.py # 权限服务 -│ ├── api_service.py # API服务 -│ └── shutdown_service.py # 关闭服务 -│ -├── bridges/ # 桥接模块 -│ ├── core_bridge.py # 核心桥接 -│ └── plugin_bridge.py # 插件桥接 -│ -├── core/ # 框架功能集 -│ ├── file_utils.py # 文件操作工具 -│ ├── config_utils.py # 配置工具 -│ ├── validation_utils.py # 验证工具 -│ ├── network_utils.py # 网络工具 -│ └── plugin_utils.py # 插件工具 -│ -├── plugins/ # 插件目录 -│ └── example_plugin/ # 示例插件 -│ -└── gui/ # GUI接口 - └── api.py # GUI操作接口 +main.py → SenSuFramework + ├─ ServiceManager (15 服务) + ├─ CoreBridge ⇄ PluginBridge ⇄ NetworkBridge + ├─ PluginService (热加载 + 依赖解析) + ├─ ProjectService (项目注册表 + 端口分配) + ├─ SenSuDB (SQLite 5 表) + ├─ TuiService (Textual + 系统监控) + ├─ InternetService (HTTP :4200 + WS :4240) + ├─ WebPanel (管理面板 /SenSu) + └─ PermissionService (4 级权限) +``` + +## 📁 目录结构 + +``` +SenSu-Alpha/ +├── main.py # 框架入口 +├── service_manager.py # 服务注册表 +├── sdk/ # 插件开发工具包 +│ ├── plugin_command_decorator.py +│ ├── plugin_status.py +│ └── plugin_error.py +├── services/ # 核心服务 (15 个) +│ ├── sensu_db.py # SQLite 持久化 +│ ├── project_service.py # 项目注册表 +│ ├── process_isolated.py # 进程隔离 +│ └── sysmon_widget.py # 系统监控 +├── bridges/ # 消息桥接 +├── plugins/ # 插件目录 +├── deploy/ # 部署文件 +│ ├── sensu.service # systemd +│ └── Dockerfile # Docker +├── tests/ # 23 个测试 +└── docs/ # 开发文档 ``` ## 🔌 插件开发 -### 创建插件 +```python +# plugins/my_plugin/__init__.py +from sdk.plugin_command_decorator import plugin_command -1. 在 `plugins/` 目录下创建插件文件夹 -2. 创建必要的配置文件: - - `__init__.py` - 插件主模块 - - `config.yaml` - 插件配置 - - `permissions.yaml` - 权限申请 +class Plugin: + def __init__(self, plugin_name=None, config=None, bridge=None): + self.plugin_name = plugin_name + self.bridge = bridge -### 插件示例 + async def initialize(self): + # 注册网络路由 + await self.network_bridge.register_http_route( + "/api/my/info", self._handler, methods=["GET"]) -参考 `plugins/example_plugin/` 目录中的示例插件。 + @plugin_command(name="hello", description="打招呼") + async def cmd_hello(self, *args): + return f"Hello from {self.plugin_name}!" -## 🔧 配置说明 + async def shutdown(self): + pass +``` -框架配置位于 `config/framework/` 目录: +详细文档见 `docs/SenSu 插件开发详细指南.md` -- `base_config.yaml` - 基础框架配置 -- `permission_rules.yaml` - 权限规则配置 +## 🌐 API 端点 -## 📡 API接口 +| 方法 | 路径 | 说明 | +|------|------|------| +| GET | `/health` | 健康检查 | +| GET | `/SenSu/` | Web 管理面板 | +| POST | `/SenSu/api/login` | 面板登录 | +| GET | `/SenSu/api/system` | 系统状态 | +| GET | `/SenSu/api/plugins` | 插件列表 | +| POST | `/SenSu/api/command` | 执行命令 | +| GET | `/api/example/info` | 示例插件 | -框架提供以下API接口: +## 🔧 环境变量 -- WebSocket服务: `ws://localhost:8765` -- HTTP API服务: `http://localhost:8000` -- GUI API服务: `http://localhost:8080` - -## 🐛 问题排查 - -查看 `logs/` 目录中的日志文件获取详细错误信息。 +| 变量 | 默认值 | 说明 | +|------|------|------| +| `SENSU_ADMIN_PASSWORD` | `admin123` | 管理员密码 | +| `SENSU_API_PASSWORD` | `api123` | API 密码 | +| `SENSU_PANEL_USER` | `admin` | 面板用户名 | +| `SENSU_PANEL_PASS` | `admin` | 面板密码 | ## 📄 许可证 -Apache License 2.0 - -## 🤝 贡献 - -欢迎提交Issue和Pull Request! -``` - -这个完整的Python后端框架包含了这些功能: - -- ✅ TUI渲染界面(三部分布局) -- ✅ 强大的日志处理模块 -- ✅ 初始化系统和指令模块 -- ✅ 核心桥接和插件桥接 -- ✅ 互联网模块集(WebSocket、HTTP API) -- ✅ 插件管理器(热加载、错误隔离) -- ✅ 权限管理器(权限申请和验证) -- ✅ API管理器 -- ✅ 优雅的关闭方法 -- ✅ 丰富的debug日志 -- ✅ GUI API接口 -- ✅ 清晰的目录结构 - -每个文件都有完整的错误处理和详细的日志记录 可以直接运行 `python main.py` 来启动框架 -``` \ No newline at end of file +Apache License 2.0 · Copyright 2026 AskaEth diff --git a/docs/项目文件结构.txt b/docs/项目文件结构.txt index 91b4edd..2c4fab1 100644 --- a/docs/项目文件结构.txt +++ b/docs/项目文件结构.txt @@ -1,44 +1,75 @@ SenSu/ -├── main.py # 框架主入口 -├── requirements.txt # 依赖包列表 -├── README.md # 项目说明 +├── main.py # 框架主入口 (--headless 参数) +├── service_manager.py # 服务管理器 (依赖注入 + 健康检查) +├── requirements.txt # Python 依赖 (版本锁定) +├── README.md # 项目说明 +├── ROADMAP.md # 开发路线图 (本地) +├── LICENSE # Apache 2.0 +├── Dockerfile # Docker 镜像 │ -├── config/ # 运行时生成的配置文件 -│ ├── framework/ # 框架核心配置 -│ ├── plugins/ # 插件配置 -│ ├── services/ # 服务配置 -│ └── permissions/ # 权限配置 +├── sdk/ # 插件开发工具包 +│ ├── plugin_command_decorator.py # @plugin_command 装饰器 +│ ├── plugin_status.py # PluginStatus 枚举 (9 状态) +│ └── plugin_error.py # PluginError 异常层级 (6 类) │ -├── logs/ # 日志文件目录 -│ ├── debug/ # debug级别日志 -│ └── runtime/ # 运行时日志 +├── services/ # 核心服务 (15 个) +│ ├── init_service.py # 初始化 + 调试服务器自启 +│ ├── log_service.py # 日志 (多输出, 切割, TUI捕获) +│ ├── tui_service.py # Textual TUI (4栏 + 系统监控) +│ ├── command_service.py # 命令系统 (注册/历史/补全) +│ ├── auth_service.py # 认证 (PBKDF2, Token) +│ ├── internet_service.py # HTTP + WebSocket +│ ├── plugin_service.py # 插件管理 (热加载, 状态追踪) +│ ├── permission_service.py # 权限验证 (4级, 通配符) +│ ├── api_service.py # API 端点 +│ ├── shutdown_service.py # 优雅关闭 +│ ├── sensu_db.py # SQLite 持久化 (5表) +│ ├── project_service.py # 项目注册表 + 依赖解析 +│ ├── process_isolated.py # 插件进程隔离 +│ ├── sysmon_widget.py # TUI 系统监控组件 +│ └── web_panel/ # Web 管理面板 +│ ├── manager.py # 路由注册 +│ ├── auth.py # 面板认证 +│ ├── routes/ # API 路由 (auth/status/plugins/commands/logs) +│ └── utils/ # 工具 (auth/system_info/response) │ -├── fmfuncs/ # 框架功能集 -│ ├── __init__.py -│ ├── tui_renderer.py # TUI渲染器 -│ ├── log_handler.py # 日志处理模块 -│ ├── init_system.py # 初始化系统 -│ ├── command_handler.py # 指令处理模块 -│ ├── bridge_core.py # 核心桥模块 -│ ├── bridge_plugin.py # 插件桥模块 -│ ├── internet_module.py # 互联网模块集 -│ ├── auth_system.py # 访问验证系统 -│ ├── plugin_manager.py # 插件管理器 -│ ├── permission_validator.py # 权限验证器 -│ ├── api_manager.py # API管理器 -│ └── shutdown_handler.py # 终止处理器 +├── bridges/ # 消息桥接 +│ ├── core_bridge.py # 核心桥 (发布-订阅) +│ ├── plugin_bridge.py # 插件桥 (subscribe_plugin) +│ └── plugin_network_bridge.py # 网络桥 (setup_data_transfer, send_data) │ -├── plugins/ # 插件目录 -│ └── example_plugin/ # 示例插件结构 -│ ├── __init__.py -│ ├── permissions.yaml -│ └── config.yaml +├── plugins/ # 插件目录 +│ └── example_plugin/ # 示例插件 (echo, plugin_status) │ -├── gui/ # GUI接口目录 -│ └── api.py # GUI操作接口 +├── tests/ # 测试 (23 个, pytest) +│ ├── test_auth.py +│ ├── test_service_manager.py +│ ├── test_plugin_enhancements.py +│ └── test_v03.py │ -└── utils/ # 工具函数 - ├── __init__.py - ├── file_utils.py # 文件操作工具 - ├── config_utils.py # 配置工具 - └── validation_utils.py # 验证工具 +├── deploy/ # 部署文件 +│ ├── sensu.service # systemd unit +│ └── Dockerfile +│ +├── docs/ # 文档 +│ ├── SenSu 框架基本架构.md +│ ├── SenSu 插件开发详细指南.md +│ └── 项目文件结构.txt +│ +├── config/ # 运行时配置 +│ ├── framework/ # 框架配置 +│ ├── permissions/ # 权限数据 +│ ├── plugins/ # 插件配置 +│ └── services/ # 服务配置 +│ +├── static/ # 前端静态资源 +│ └── web_panel/ +│ +├── utils/ # 通用工具 +│ └── async_file_utils.py # 异步文件IO +│ +├── templates/ # 插件模板 +│ └── plugin/ +│ +└── gui/ # GUI 接口 (预留) + └── api.py