feat: 更新模块文档,添加详细说明和使用示例
This commit is contained in:
@@ -1,6 +1,36 @@
|
||||
"""Web TUI 模块
|
||||
"""Web TUI 模块 - Web 管理界面
|
||||
|
||||
提供 Web 终端界面、SSH 连接管理
|
||||
本模块提供基于 Web 的终端管理界面:
|
||||
|
||||
认证管理 (auth):
|
||||
- AuthManager: 认证管理器
|
||||
- AuthToken: 认证令牌
|
||||
- 支持 JWT 令牌认证
|
||||
- 令牌刷新和撤销
|
||||
|
||||
SSH 管理 (ssh_manager):
|
||||
- SSHManager: SSH 连接管理器
|
||||
- SSHSession: SSH 会话封装
|
||||
- 支持多会话管理
|
||||
- WebSocket 实时终端
|
||||
|
||||
Web 服务 (server):
|
||||
- FastAPI 应用
|
||||
- 静态文件服务
|
||||
- WebSocket 终端
|
||||
- RESTful API
|
||||
|
||||
使用示例:
|
||||
>>> from minenasai.webtui import get_auth_manager
|
||||
>>>
|
||||
>>> # 获取认证管理器
|
||||
>>> auth = get_auth_manager()
|
||||
>>>
|
||||
>>> # 生成令牌
|
||||
>>> token = auth.generate_token(user_id="admin")
|
||||
>>>
|
||||
>>> # 验证令牌
|
||||
>>> user_info = auth.verify_token(token.token)
|
||||
"""
|
||||
|
||||
from minenasai.webtui.auth import AuthManager, AuthToken, get_auth_manager
|
||||
|
||||
@@ -7,13 +7,14 @@ from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import uuid
|
||||
from collections.abc import AsyncGenerator
|
||||
from contextlib import asynccontextmanager
|
||||
from pathlib import Path
|
||||
from typing import Any, AsyncGenerator
|
||||
from typing import Any
|
||||
|
||||
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.responses import FileResponse, HTMLResponse
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from minenasai.core import get_logger, get_settings, setup_logging
|
||||
@@ -95,8 +96,12 @@ manager = ConnectionManager()
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
|
||||
"""应用生命周期管理"""
|
||||
async def lifespan(_app: FastAPI) -> AsyncGenerator[None, None]:
|
||||
"""应用生命周期管理
|
||||
|
||||
Args:
|
||||
_app: FastAPI 应用实例(lifespan 标准签名要求)
|
||||
"""
|
||||
settings = get_settings()
|
||||
setup_logging(settings.logging)
|
||||
logger.info("Web TUI 服务启动", port=settings.webtui.port)
|
||||
|
||||
@@ -6,10 +6,11 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import contextlib
|
||||
import os
|
||||
import time
|
||||
from pathlib import Path
|
||||
from typing import Any, Callable
|
||||
from collections.abc import Callable
|
||||
from typing import Any
|
||||
|
||||
import paramiko
|
||||
|
||||
@@ -128,10 +129,8 @@ class SSHSession:
|
||||
|
||||
if self._read_task:
|
||||
self._read_task.cancel()
|
||||
try:
|
||||
with contextlib.suppress(asyncio.CancelledError):
|
||||
await self._read_task
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
|
||||
if self.channel:
|
||||
self.channel.close()
|
||||
|
||||
Reference in New Issue
Block a user