59 lines
1.8 KiB
Markdown
59 lines
1.8 KiB
Markdown
# Architecture (Community Edition)
|
|
|
|
> 中文版请见:[ARCHITECTURE.md](./ARCHITECTURE.md)
|
|
|
|
## 1. Overview
|
|
|
|
WebSSH Gateway follows a frontend-backend architecture:
|
|
|
|
- Frontend: user interaction, terminal UI, file and monitoring panels
|
|
- Backend: authentication, session orchestration, SSH bridge, and APIs
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
U[Browser User] --> F[Frontend React + xterm]
|
|
F -->|HTTP| B[Backend FastAPI]
|
|
F -->|WebSocket| B
|
|
B --> DB[(SQLite)]
|
|
B --> S[(Remote SSH Hosts)]
|
|
B --> K[session-transfer-files/tmux]
|
|
```
|
|
|
|
## 2. Backend Modules
|
|
|
|
- `app/main.py`: app bootstrap and route mounting
|
|
- `app/api/`: REST and WebSocket handlers
|
|
- `app/services/`: auth, crypto, SSH/session core logic
|
|
- `app/models/`: SQLAlchemy models
|
|
- `app/core/`: config, db, logging, state composition
|
|
|
|
## 3. Frontend Modules
|
|
|
|
- `src/pages/Login.tsx`
|
|
- `src/pages/Sessions.tsx`
|
|
- `src/pages/Terminal.tsx`
|
|
- `src/components/FileBrowser.tsx`
|
|
- `src/components/SystemMonitor.tsx`
|
|
- `src/lib/api.ts`
|
|
- `src/context/AppContext.tsx`
|
|
|
|
## 4. Critical Flows
|
|
|
|
- Auth flow: `/auth/login` -> JWT -> protected APIs
|
|
- Session flow: create session -> connect terminal WebSocket -> stream input/output
|
|
- Enhanced persistence: disconnected sessions are retried by background workers
|
|
|
|
## 5. Security Baseline
|
|
|
|
- AES-GCM encrypted credential storage
|
|
- JWT issuer validation
|
|
- Password policy and forced password change
|
|
- Lockout policy for repeated failed logins
|
|
- Request-id logging for traceability
|
|
|
|
## 6. CE vs Paid Edition
|
|
|
|
The Community Edition provides complete self-hosted core SSH gateway capabilities.
|
|
There is an intention to explore a paid development direction, while detailed scope, delivery model, and timeline are **TBD**.
|
|
Until then, CE continues as the independently deployable open-source edition.
|