ba68735638
增加服务端向客户端下发-执行命令
50 lines
1.8 KiB
Java
50 lines
1.8 KiB
Java
package com.tongran.agenttcp.server.handler;
|
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
import com.tongran.agenttcp.server.model.Message;
|
|
import com.tongran.agenttcp.server.netty.core.session.SessionManager;
|
|
import com.tongran.agenttcp.utils.AssertLog;
|
|
import io.netty.buffer.ByteBuf;
|
|
import io.netty.buffer.Unpooled;
|
|
import io.netty.channel.ChannelHandler;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
import io.netty.channel.ChannelOutboundHandlerAdapter;
|
|
import io.netty.channel.ChannelPromise;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
@Component
|
|
@ChannelHandler.Sharable
|
|
public class AgentEncoderHandler extends ChannelOutboundHandlerAdapter {
|
|
|
|
protected final SessionManager sessionManager;
|
|
|
|
public AgentEncoderHandler() {
|
|
this.sessionManager = SessionManager.getInstance();
|
|
}
|
|
|
|
/**
|
|
* 消息解码器
|
|
*/
|
|
@Override
|
|
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
|
|
if (msg instanceof Message) {
|
|
Message entity = (Message) msg;
|
|
if (StringUtils.isBlank(entity.getData())) {
|
|
AssertLog.error(">>[down]:IP:{},errorContent:{}", sessionManager.client(ctx), msg);
|
|
return;
|
|
}
|
|
AssertLog.info(">>[down]:IP:{},[content]==>{}", sessionManager.client(ctx), entity.getData());
|
|
// String json = JSON.toJSONString(entity);
|
|
String json = "agent-server:"+JSON.toJSONString(entity)+"@tong-ran";
|
|
byte[] bytes = json.getBytes(StandardCharsets.UTF_8); // 显式指定 UTF-8
|
|
// byte[] bytes = EscapeUtil.hexStringToByteArray(entity.getContent());
|
|
ByteBuf buf = Unpooled.wrappedBuffer(bytes);
|
|
ctx.write(buf, promise);
|
|
}
|
|
}
|
|
|
|
}
|