Initial commit: IP-KVM server implementation with complete functionality
Core Features:
- Web server based on Mongoose framework listening on port 82
- WebSocket support for real-time mouse and keyboard control
- Serial communication via /dev/ttyS5 (115200 baud rate)
- GPIO-based hardware control (GPIO 34/35 for shutdown/reboot, GPIO 139 for reset)
- User authentication and management system
- Network configuration management with dynamic updates
- MJPG-streamer integration for video streaming (port 8080, 1920x1080)
- File upload support with chunked transfer capability
- Hardware reset functionality via GPIO button
Technical Implementation:
- Mouse protocol conversion to serial data format {0x57, 0xAB, ...}
- Keyboard input handling with proper HID report generation
- Real-time configuration updates without service restart
- Thread-based GPIO monitoring for hardware events
- Authentication integration with MJPG-streamer
- Default configuration restoration on hardware reset
Configuration Files:
- /mnt/user.txt - User credentials storage
- /etc/init.d/xnet.conf - Network configuration
- /www/webcam - Web interface files
Documentation:
- Complete functional specification in Chinese (功能说明.md)
- Detailed WebSocket message protocol documentation
- GPIO mapping and hardware control specifications
This is a complete standalone IP-KVM server that enables remote
keyboard, video, and mouse control over IP networks.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
121
功能说明.md
Normal file
121
功能说明.md
Normal file
@ -0,0 +1,121 @@
|
||||
# xtell_server 功能说明
|
||||
|
||||
## 概述
|
||||
xtell_server 是一个基于 Mongoose 库的嵌入式 Web 服务器,用于 IP-KVM (Keyboard-Video-Mouse over IP) 远程控制系统。
|
||||
|
||||
## 主要功能
|
||||
|
||||
### 1. Web 服务器功能
|
||||
- 监听端口 82,提供 HTTP 服务
|
||||
- 支持 WebSocket 连接和文件上传
|
||||
- 使用 Mongoose 库处理 HTTP 请求
|
||||
|
||||
### 2. 远程控制功能
|
||||
- **鼠标控制**: 接收 WebSocket 鼠标指令,转换为串口协议数据
|
||||
- 数据格式: `{0x57, 0xAB, 0x00, 0x04, 0x07, 0x02, ..., checksum}`
|
||||
- 通过 `/dev/ttyS5` 串口通信 (波特率 115200)
|
||||
- **键盘控制**: 接收 WebSocket 键盘指令,转换为串口协议数据
|
||||
- 数据格式: `{0x57,0xAB,0x00,0x02,0x08,0x00, ..., checksum}`
|
||||
|
||||
### 3. 用户管理系统
|
||||
- 用户名密码修改功能
|
||||
- 认证信息存储在 `/mnt/user.txt`
|
||||
- 支持 MJPG-streamer 认证配置
|
||||
- 默认配置检测和创建
|
||||
|
||||
### 4. 网络配置管理
|
||||
- IP 地址、子网掩码、网关、DNS 配置
|
||||
- 配置文件存储在 `/etc/init.d/xnet.conf`
|
||||
- 支持网络配置动态更新
|
||||
- 默认 IP: 192.168.6.100, 端口: 8700
|
||||
|
||||
### 5. 系统控制功能
|
||||
- **关机控制**: 通过 GPIO 35 控制系统关机
|
||||
- **重启控制**: 通过 GPIO 34 控制系统重启
|
||||
- 支持远程关机和重启操作
|
||||
|
||||
### 6. 视频流管理
|
||||
- 启动和管理 MJPG-streamer 服务
|
||||
- 支持认证的视频流传输 (端口 8080)
|
||||
- 分辨率: 1920x1080
|
||||
- 动态用户认证配置
|
||||
|
||||
### 7. GPIO 按键处理
|
||||
- GPIO 139 按键检测线程
|
||||
- 按键触发时恢复默认网络配置
|
||||
- 硬件重置功能
|
||||
- 自动重启 MJPG-streamer 服务
|
||||
|
||||
### 8. 文件上传功能
|
||||
- 支持分块文件上传
|
||||
- 上传端点: `/upload`
|
||||
- 上传路径: `/mnt/UDISK/gcode.nc`
|
||||
- 支持大文件分块传输
|
||||
|
||||
## 技术架构
|
||||
|
||||
### 核心依赖
|
||||
- **Mongoose**: 嵌入式 Web 服务器框架
|
||||
- **MJPG-streamer**: 视频流服务
|
||||
- **Linux GPIO**: 硬件控制接口
|
||||
- **串口通信**: `/dev/ttyS5`
|
||||
|
||||
### 配置文件
|
||||
- `/mnt/user.txt`: 用户认证信息
|
||||
- `/etc/init.d/xnet.conf`: 网络配置
|
||||
- `/www/webcam`: Web 界面文件
|
||||
|
||||
### GPIO 映射
|
||||
- GPIO 34: 系统重启控制
|
||||
- GPIO 35: 系统关机控制
|
||||
- GPIO 139: 硬件重置按键
|
||||
|
||||
## WebSocket 消息协议
|
||||
|
||||
### 鼠标控制
|
||||
```
|
||||
mouse,x1,y1,x2,y2,buttons,scroll
|
||||
```
|
||||
|
||||
### 键盘控制
|
||||
```
|
||||
keyboard,key_code,modifier
|
||||
```
|
||||
|
||||
### 用户管理
|
||||
```
|
||||
newuser,oldUser,oldPass,newUser,newPass
|
||||
```
|
||||
|
||||
### 网络配置
|
||||
```
|
||||
newip,ip,mask,gw,dns1,dns2
|
||||
```
|
||||
|
||||
### 系统控制
|
||||
```
|
||||
control,shutdown|reboot
|
||||
```
|
||||
|
||||
## 运行流程
|
||||
|
||||
1. **初始化阶段**:
|
||||
- 读取用户配置
|
||||
- 启动 MJPG-streamer
|
||||
- 配置 GPIO
|
||||
- 初始化串口
|
||||
- 启动 GPIO 监控线程
|
||||
|
||||
2. **服务阶段**:
|
||||
- 监听 HTTP/WebSocket 连接
|
||||
- 处理客户端指令
|
||||
- 转发键鼠数据到串口
|
||||
- 管理系统配置
|
||||
|
||||
3. **硬件重置**:
|
||||
- GPIO 139 按键触发
|
||||
- 恢复默认网络配置
|
||||
- 重启相关服务
|
||||
|
||||
## 独立性
|
||||
xtell_server 是一个完整的独立应用程序,不需要其他组件配合即可正常运行所有功能。
|
||||
Reference in New Issue
Block a user