版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

目录

需求来源

本次修改是对原有功能的Shell命令及NetDispatch的替换,原功能存在较多问题

Shell命令

  • 操作不方便
  • 不支持交互式命令
  • 能利用漏洞进入服务器后台,获取root权限等


NetDispatch

  • 连接丢失
  • 服务端程序崩溃退出等


...

功能演示

本地设备的webssh功能

如果从本地网口的web访问,会跳转到局域网的ip

...

远端omc效果可以看到,从公网访问到了局域网设备(192.168.1.198),并且通过局域网访问了192.168.1.27(编译服务器)

在公网上写文件时,从本地终端也实时刷新了数据


...

实现方法

后端

设备端GatewayServer需增加jsoncmd的解析命令

代码块
	int CWebSSH::Handle(HTTPServerRequest &request, CJSRPCResponseMaker &response, Poco::URI &uri)
	{
		response.BeginResult();
		response.BeginObj(NULL);

 		response.AddMemberString("url", " http://192.168.1.198:8080"); // demo,具体实现较复杂,参看实际代码

		response.EndObj();
		response.EndResult();
		return 0;
	}

	const char *CWebSSH::GetName()
	{
		return "webssh";
	}

前端



本地webssh已经修改成功,需要新增omc上的远程webssh功能


FRPS部署

x86

使用docker部署frps服务端

使用docker部署frpc客户端(x86)

...

查看服务端控制面板,客户端已经注册成功,并且已经将ssh端口映射到公网使用


客户端可以直接在控制台修改需要映射的端口


...

终端设备

终端设备一般为arm或者arm64的平台,整套流程终端设备需要使用到的两个软件为frpc和ttyd

...

编译时候会有报错,修复后编译放到设备上可以正常运行


注意事项

加入了frpc和ttyd的软件包会变大,升级时对空间的要求会高一点,原有的升级方式需要两倍的升级包空间,这个问题在当前版本已经得到优化。但是如果用优化前的系统来升级优化后的系统,如果数据库文件较大,则可能会存在空间不够的问题,需要注意。