Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
haikang-client
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
杨立
haikang-client
Commits
811a43aa
提交
811a43aa
authored
9月 16, 2021
作者:
yangli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
.
上级
6832128c
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
90 行增加
和
14 行删除
+90
-14
Main.java
apq-pc-client/src/main/java/com/priusis/Main.java
+0
-14
MqttServiceImpl.java
...java/com/priusis/client/service/core/MqttServiceImpl.java
+10
-0
RemoteControlController.java
.../java/com/priusis/controller/RemoteControlController.java
+80
-0
没有找到文件。
apq-pc-client/src/main/java/com/priusis/Main.java
deleted
100644 → 0
浏览文件 @
6832128c
package
com
.
priusis
;
import
java.io.IOException
;
/**
* @author yangli
* @since 2021/09/10
*/
public
class
Main
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
Runtime
.
getRuntime
().
exec
(
"cmd /c C:\\Users\\lenovo\\Downloads\\3dbc34fcefbe4dd2a6a98c34e92dbe3f.msi"
);
}
}
apq-pc-client/src/main/java/com/priusis/client/service/core/MqttServiceImpl.java
浏览文件 @
811a43aa
...
...
@@ -9,11 +9,13 @@ import com.priusis.client.service.conf.*;
import
com.priusis.client.service.data.*
;
import
com.priusis.client.util.JsonTools
;
import
com.priusis.monitor.mqtt.*
;
import
com.priusis.util.SysConfigUtil
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.handler.ssl.SslContext
;
import
io.netty.handler.ssl.SslContextBuilder
;
import
io.netty.util.concurrent.Promise
;
import
lombok.SneakyThrows
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.eclipse.paho.client.mqttv3.MqttMessage
;
...
...
@@ -339,8 +341,16 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
MqttRpcDataMessage
mqttRpcDataMessage
=
MqttRpcDataMessage
.
builder
().
requestId
(
payload
.
get
(
"id"
).
asInt
())
.
method
(
payload
.
get
(
"method"
).
asText
()).
params
(
payload
.
get
(
"params"
).
asText
()).
build
();
// 存储rpc下发的数据
try
{
if
(
"remote_control"
.
equals
(
mqttRpcDataMessage
.
getMethod
()))
{
// 远程控制请求
SysConfigUtil
.
saveProperty
(
"control.request"
,
mqttRpcDataMessage
.
getParams
());
// 存储参数
return
;
}
persistentFileService
.
flushRpcDataToFile
(
mqttRpcDataMessage
);
}
catch
(
IOException
e
)
{
log
.
error
(
"Failed to process rpc command persistent : {}"
,
message
);
...
...
apq-pc-client/src/main/java/com/priusis/controller/RemoteControlController.java
0 → 100644
浏览文件 @
811a43aa
package
com
.
priusis
.
controller
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateTime
;
import
com.priusis.lib.R
;
import
com.priusis.util.SysConfigUtil
;
import
lombok.SneakyThrows
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.util.Timer
;
import
java.util.TimerTask
;
/**
* @author yangli
* @since 2021/09/16
*/
@Validated
@RestController
@RequestMapping
(
value
=
"remote_control"
)
public
class
RemoteControlController
{
/**
* 前端定时任务查询远程控制请求,不为空则表示有请求,展示确认弹窗
*/
@GetMapping
(
value
=
"get_control_request"
)
public
R
<
String
>
getControlRequest
()
throws
IOException
{
return
R
.
success
(
SysConfigUtil
.
getProperty
(
"control.request"
));
}
/**
* 接受远程控制请求
*
* @return
*/
@GetMapping
(
value
=
"accept_request"
)
public
R
<
Void
>
acceptRequest
()
throws
IOException
{
String
requestParams
=
SysConfigUtil
.
getProperty
(
"control.request"
);
SysConfigUtil
.
saveProperty
(
"control.request"
,
null
);
// todo 根据参数开启VNC
// todo 从参数里取出控制的时间,单位分钟
int
minute
=
30
;
// 定时任务,指定分钟后执行一次
Timer
timer
=
new
Timer
();
timer
.
schedule
(
new
TimerTask
()
{
@SneakyThrows
@Override
public
void
run
()
{
// 杀掉VNC进程
Process
process
=
Runtime
.
getRuntime
().
exec
(
"cmd /c tasklist /fo csv | findstr winvnc"
);
try
(
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
process
.
getInputStream
(),
"GBK"
)))
{
String
line
;
while
((
line
=
reader
.
readLine
())
!=
null
)
{
String
pid
=
line
.
split
(
","
)[
1
].
replace
(
"\""
,
""
);
Runtime
.
getRuntime
().
exec
(
"cmd /c taskkill /pid "
+
pid
).
destroy
();
}
process
.
destroy
();
}
timer
.
cancel
();
}
},
DateTime
.
now
().
offset
(
DateField
.
MINUTE
,
minute
));
return
R
.
success
();
}
/**
* 拒绝远程控制请求
*/
@GetMapping
(
value
=
"refuse_request"
)
public
R
<
Void
>
refuseRequest
()
throws
IOException
{
SysConfigUtil
.
saveProperty
(
"control.request"
,
null
);
// 直接清除请求参数
return
R
.
success
();
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论