Bridge: успешная отправка логов на MCSM
(cherry picked from commit 2070a5eb63)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
group = 'asys'
|
||||
version = '0.2-SNAPSHOT'
|
||||
version = '0.3-SNAPSHOT'
|
||||
|
||||
task jar(type: Jar, overwrite: true) {
|
||||
// не собирать jar
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2017-05-17
|
||||
*/
|
||||
package asys.mcsmanager.packets;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
public class CS_ConsoleMessage extends Packet {
|
||||
private long time;
|
||||
private int level;
|
||||
private String loggerName,
|
||||
message;
|
||||
|
||||
public CS_ConsoleMessage() {
|
||||
}
|
||||
|
||||
public CS_ConsoleMessage(long time, int level, String loggerName, String message) {
|
||||
this.time = time;
|
||||
this.level = level;
|
||||
this.loggerName = loggerName;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public long getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public int getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public String getLoggerName() {
|
||||
return loggerName;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readSelfData(ByteBuf buffer) {
|
||||
this.time = buffer.readLong();
|
||||
this.level = buffer.readInt();
|
||||
this.loggerName = readString(buffer);
|
||||
this.message = readString(buffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeSelfData(ByteBuf buffer) {
|
||||
buffer.writeLong(time);
|
||||
buffer.writeInt(level);
|
||||
writeString(buffer, loggerName);
|
||||
writeString(buffer, message);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
group = 'asys'
|
||||
version = '0.5.1-SNAPSHOT'
|
||||
version = '0.5.2-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
|
||||
@@ -40,5 +40,5 @@ dependencies {
|
||||
exclude group: 'org.avaje'
|
||||
}
|
||||
compile group: 'io.netty', name: 'netty-codec', version: nettyVersion
|
||||
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.5'
|
||||
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.0-rc1'
|
||||
}
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
/*
|
||||
* DmitriyMX <d.mihailov@samson-rus.com>
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2017-05-17
|
||||
*/
|
||||
package asys.bridge.bukkit;
|
||||
|
||||
import asys.mcsmanager.packets.CS_ConsoleMessage;
|
||||
import io.netty.channel.Channel;
|
||||
import org.apache.logging.log4j.core.LogEvent;
|
||||
import org.apache.logging.log4j.core.appender.AbstractAppender;
|
||||
|
||||
public class BridgeLoggerAppender extends AbstractAppender {
|
||||
private Channel channel;
|
||||
|
||||
BridgeLoggerAppender() {
|
||||
super("ASysBridge", null, null);
|
||||
@@ -16,6 +19,24 @@ public class BridgeLoggerAppender extends AbstractAppender {
|
||||
|
||||
@Override
|
||||
public void append(LogEvent event) {
|
||||
System.out.println("+++ "+event.getMessage().getFormattedMessage());
|
||||
if (channel == null) return;
|
||||
|
||||
long timeMillis = event.getMillis();
|
||||
int intLevel = event.getLevel().intLevel();
|
||||
String loggerName = event.getLoggerName();
|
||||
String message = event.getMessage().getFormattedMessage();
|
||||
|
||||
CS_ConsoleMessage messagePkg = new CS_ConsoleMessage(
|
||||
timeMillis,
|
||||
intLevel,
|
||||
loggerName,
|
||||
message
|
||||
);
|
||||
|
||||
channel.writeAndFlush(messagePkg);
|
||||
}
|
||||
|
||||
void setChannel(Channel channel) {
|
||||
this.channel = channel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,18 +24,22 @@ public class BridgePlugin extends JavaPlugin {
|
||||
private ScheduledExecutorService ses;
|
||||
private ScheduledFuture<?> sesFuture, sesPingFuture;
|
||||
private int tryConnect = 0;
|
||||
private BridgeLoggerAppender loggerAppender;
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
((Logger)LogManager.getRootLogger()).addAppender(new BridgeLoggerAppender());
|
||||
((Logger)LogManager.getRootLogger()).addAppender(loggerAppender = new BridgeLoggerAppender());
|
||||
onEnable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
INSTANCE = this;
|
||||
saveDefaultConfig();
|
||||
if (INSTANCE == null) {
|
||||
INSTANCE = this;
|
||||
saveDefaultConfig();
|
||||
|
||||
startReconnect();
|
||||
startReconnect();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -84,6 +88,7 @@ public class BridgePlugin extends JavaPlugin {
|
||||
}
|
||||
|
||||
public void startPing(Channel channel) {
|
||||
getLoggerAppender().setChannel(channel);
|
||||
sesPingFuture = ses.scheduleAtFixedRate(() -> {
|
||||
channel.write(new CS_Ping(
|
||||
System.currentTimeMillis(),
|
||||
@@ -104,8 +109,13 @@ public class BridgePlugin extends JavaPlugin {
|
||||
}
|
||||
|
||||
public void stopPing() {
|
||||
getLoggerAppender().setChannel(null);
|
||||
if (sesPingFuture != null) {
|
||||
sesPingFuture.cancel(false);
|
||||
}
|
||||
}
|
||||
|
||||
public BridgeLoggerAppender getLoggerAppender() {
|
||||
return loggerAppender;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,8 @@ public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements
|
||||
private static Map<Class<? extends Packet>, IPacketHandler> handshakeHandlers;
|
||||
|
||||
private static final BiMap<Integer, Class<? extends Packet>> pingPackets = ImmutableBiMap.of(
|
||||
3, CS_Ping.class
|
||||
3, CS_Ping.class,
|
||||
4, CS_ConsoleMessage.class
|
||||
);
|
||||
|
||||
ClientPacketHandler() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
group = 'asys'
|
||||
version = '0.8.6-SNAPSHOT'
|
||||
version = '0.8.7-SNAPSHOT'
|
||||
|
||||
apply plugin: 'osgi'
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.google.common.collect.ImmutableMap;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ChannelInboundHandlerAdapter;
|
||||
import io.netty.util.AttributeKey;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -26,7 +27,8 @@ class ServerPacketHandler extends ChannelInboundHandlerAdapter implements IPacke
|
||||
private static Map<Class<? extends Packet>, IPacketHandler> handshakeHandlers;
|
||||
|
||||
private static final BiMap<Integer, Class<? extends Packet>> pingPackets = ImmutableBiMap.of(
|
||||
3, CS_Ping.class
|
||||
3, CS_Ping.class,
|
||||
4, CS_ConsoleMessage.class
|
||||
);
|
||||
private static Map<Class<? extends Packet>, IPacketHandler> pingHandlers;
|
||||
|
||||
@@ -41,7 +43,8 @@ class ServerPacketHandler extends ChannelInboundHandlerAdapter implements IPacke
|
||||
|
||||
if (pingHandlers == null) {
|
||||
pingHandlers = ImmutableMap.of(
|
||||
CS_Ping.class, this
|
||||
CS_Ping.class, this,
|
||||
CS_ConsoleMessage.class, this
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -59,6 +62,8 @@ class ServerPacketHandler extends ChannelInboundHandlerAdapter implements IPacke
|
||||
handleCSHandshake((CS_Handshake) packet, context);
|
||||
} else if (packet.getClass() == CS_Ping.class) {
|
||||
handleCSPing((CS_Ping) packet, context);
|
||||
} else if (packet.getClass() == CS_ConsoleMessage.class) {
|
||||
handleCSConsoleMessage((CS_ConsoleMessage) packet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,4 +96,8 @@ class ServerPacketHandler extends ChannelInboundHandlerAdapter implements IPacke
|
||||
private void handleCSPing(CS_Ping packet, ChannelHandlerContext context) {
|
||||
manager.putInfo(context.channel().attr(CLIENTID).get(), packet);
|
||||
}
|
||||
|
||||
private void handleCSConsoleMessage(CS_ConsoleMessage packet) {
|
||||
LoggerFactory.getLogger(getClass()).debug("[L:{}] {}", packet.getLevel(), packet.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user