本文最后更新于:June 30, 2023 pm
本文作者:[wangwenhai] # 概要:准备结合MQTT协议做一个Web Terminal,功能就是通过外网管理内网Linux主机或者运行Linux的设备。
WebTerminal功能设计
准备结合MQTT协议做一个Web Terminal,功能就是通过外网管理内网Linux主机或者运行Linux的设备。
效果图如下:
架构设计:
主要原理就是使用Mqtt协议联通内外网,然后,通过Mqtt协议传输数据到内网Linux,从而实现WebTerminal的效果
目前基于Python实现了Mqtt SDK封装和Paramiko模块封装
MqttSDk:
目前的进度暂时在这里,后面继续跟进实现这个
计划表:
实现完整web terminal
支持FTP/SFTP
支持VNC远程桌面
增加一些常见操作:
·一键安装Java
·一键安装其他库等等,根据用户需求来装
版本计划:
V0.0.1
·客户端的CURD操作
·Web Terminal完全支持
V0.1.0
·VNC支持
·一键配置环境,装软件
FTP
附:
关于权限表的一些设计:内网主机连接进来以后,全部按照以下步骤处理
自动分配权限(Permission),Permission数据结构如下:最终的Topic 生成规则如下:/client/group/{client_id}
可以选择分组订阅,这样就能接收广播【分组不支持WebTerminal】
字段 | 类型 | 长度 | 备注 |
---|---|---|---|
id | INT | 11 | 主键 |
client_id | INT | 11 | 客户端的ID |
group | VARCHAR | 20 | 分组 |
topic | VARCHAR | 20 | 自己的topic |
消息表设计:
Topic:消息的主题
Content:消息内容
创建客户端凭据
·输入设备相关信息:名称,SSH账户
·选择分组【默认分组为:DEFAULT_GROUP,需要手动创建其他分组】
·生成配置文件和客户端的安装包:
{
"serverIp": "服务器IP",
"serverPort": 服务器MQTT端口,
"clientId": "随机生成字10位符串",
"username": "随机生成字10位符串",
"password": "随机生成字10位符串",
"sshUsername": "SSH用户名",
"sshPassword": "SSH密码"
}
基本操作流程
·登录后台
·查看客户端列表
·选择在线客户端
·点击【WebShell】打开登录窗口,此时会从客户端那边提取配置好的SSH用户和密码,配置如下:
然后进行登录,如果登录成功了,然会一个标记,然后前端弹出WebTerminal,通过WebSocket连接起来,所有的通信到此完成
操作完毕,点击【退出】,关闭Socket,关闭弹出的窗口
基本的功能:
·用户管理:注册(邮箱)、登录、激活、修改资料
·客户端管理:客户端的CURD操作
·WebShell:核心功能,通过HTML页面联通内网主机
整体功能设计:
用户的角色有:管理员,普通用户
管理员可以添加用户,管理用户,限制用户登录 等等
同时可以查看所有的客户端状况(但是不能操作终端)
用户可以创建终端设备,操作终端
关键界面原型图
添加
功能需求-用户
用户相关
功能 | 描述 | |
---|---|---|
用户登录 | ||
用户注册 | ||
资料修改 | ||
获取当前用户资料 | ||
设备相关
设备列表 | |
---|---|
添加设备 | |
修改设备 | |
删除设备 | |
查找设备 | 根据关键字查找设备:clientId name 备注 等字段 |
设备添加/移除进某群组 | 考虑到群控功能 |
设备转让 | 吧自己的设备转让给别人使用 |
设备分布 | 用地图显示设备位置 |
群组功能
添加群组 | |
---|---|
群组列表 | |
删除群组 | |
修改群组 | |
列出当前群组下面所有的设备 |
系统首页
首页统计 | 设备数 分组数 在线数 离线数服务器CPU 服务器负载 服务器。。。 |
---|---|
广告 | 打一下广告 |
使用方法 | 简单的列表一下使用教程 |
管理员
查看所有用户 |
---|
查看所有设备 |
控制用户账户 |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!