本文最后更新于:June 30, 2023 pm

本文作者:[wangwenhai] # 概要:准备结合MQTT协议做一个Web Terminal,功能就是通过外网管理内网Linux主机或者运行Linux的设备。

WebTerminal功能设计

准备结合MQTT协议做一个Web Terminal,功能就是通过外网管理内网Linux主机或者运行Linux的设备。

效果图如下:

架构设计:

主要原理就是使用Mqtt协议联通内外网,然后,通过Mqtt协议传输数据到内网Linux,从而实现WebTerminal的效果

img

目前基于Python实现了Mqtt SDK封装和Paramiko模块封装

MqttSDk:

目前的进度暂时在这里,后面继续跟进实现这个

计划表:

  1. 实现完整web terminal

  2. 支持FTP/SFTP

  3. 支持VNC远程桌面

  4. 增加一些常见操作:

·一键安装Java

·一键安装其他库等等,根据用户需求来装

版本计划:

V0.0.1

·客户端的CURD操作

·Web Terminal完全支持

V0.1.0

·VNC支持

·一键配置环境,装软件

FTP

附:

关于权限表的一些设计:内网主机连接进来以后,全部按照以下步骤处理

  1. 自动分配权限(Permission),Permission数据结构如下:最终的Topic 生成规则如下:/client/group/{client_id}

  2. 可以选择分组订阅,这样就能接收广播【分组不支持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用户和密码,配置如下:

img

然后进行登录,如果登录成功了,然会一个标记,然后前端弹出WebTerminal,通过WebSocket连接起来,所有的通信到此完成

操作完毕,点击【退出】,关闭Socket,关闭弹出的窗口

基本的功能:

img

·用户管理:注册(邮箱)、登录、激活、修改资料

·客户端管理:客户端的CURD操作

·WebShell:核心功能,通过HTML页面联通内网主机

整体功能设计:

用户的角色有:管理员,普通用户

管理员可以添加用户,管理用户,限制用户登录 等等

同时可以查看所有的客户端状况(但是不能操作终端)

用户可以创建终端设备,操作终端

关键界面原型图

添加

img

功能需求-用户

用户相关

功能 描述
用户登录
用户注册
资料修改
获取当前用户资料

设备相关

设备列表
添加设备
修改设备
删除设备
查找设备 根据关键字查找设备:clientId name 备注 等字段
设备添加/移除进某群组 考虑到群控功能
设备转让 吧自己的设备转让给别人使用
设备分布 用地图显示设备位置

群组功能

添加群组
群组列表
删除群组
修改群组
列出当前群组下面所有的设备

系统首页

首页统计 设备数 分组数 在线数 离线数服务器CPU 服务器负载 服务器。。。
广告 打一下广告
使用方法 简单的列表一下使用教程

管理员

查看所有用户
查看所有设备
控制用户账户

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

物联网终端设计 Previous
多状态开关设计 Next