might break

This commit is contained in:
sirjonasxx 2021-07-04 20:34:26 +02:00
parent 85c933cf7c
commit 3735799629
11 changed files with 50 additions and 45 deletions

View File

@ -19,12 +19,12 @@ public abstract class Extension extends ExtensionBase {
protected FlagsCheckListener flagRequestCallback = null;
private String[] args;
private boolean isCorrupted = false;
private volatile boolean isCorrupted = false;
private static final String[] PORT_FLAG = {"--port", "-p"};
private static final String[] FILE_FLAG = {"--filename", "-f"};
private static final String[] COOKIE_FLAG = {"--auth-token", "-c"}; // don't add a cookie or filename when debugging
protected PacketInfoManager packetInfoManager = new PacketInfoManager(new ArrayList<>()); // empty
private volatile boolean delayed_init = false;
private OutputStream out = null;
@ -130,13 +130,17 @@ public abstract class Extension extends ExtensionBase {
String hotelVersion = packet.readString();
String clientIdentifier = packet.readString();
HClient clientType = HClient.valueOf(packet.readString());
packetInfoManager = PacketInfoManager.readFromPacket(packet);
setPacketInfoManager(PacketInfoManager.readFromPacket(packet));
Constants.UNITY_PACKETS = clientType == HClient.UNITY;
getOnConnectionObservable().fireEvent(l -> l.onConnection(
host, connectionPort, hotelVersion,
clientIdentifier, clientType, packetInfoManager)
clientIdentifier, clientType)
);
if (delayed_init) {
initExtension();
delayed_init = false;
}
onStartConnection();
}
else if (packet.headerId() == NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.CONNECTIONEND) {
@ -155,8 +159,10 @@ public abstract class Extension extends ExtensionBase {
flagRequestCallback = null;
}
else if (packet.headerId() == NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.INIT) {
// boolean isConnected = packet.readBoolean(); - don't read since not relevant here
initExtension();
delayed_init = packet.readBoolean();
if (!delayed_init) {
initExtension();
}
writeToConsole("green","Extension \"" + getInfoAnnotations().Title() + "\" successfully initialized", false);
}
else if (packet.headerId() == NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.ONDOUBLECLICK) {
@ -300,5 +306,4 @@ public abstract class Extension extends ExtensionBase {
protected boolean canDelete() {
return true;
}
}

View File

@ -3,6 +3,7 @@ package gearth.extensions;
import gearth.misc.listenerpattern.Observable;
import gearth.protocol.HMessage;
import gearth.protocol.HPacket;
import gearth.services.packet_info.PacketInfoManager;
import java.util.ArrayList;
import java.util.HashMap;
@ -21,6 +22,8 @@ public abstract class ExtensionBase extends IExtension {
protected final Map<Integer, List<MessageListener>> incomingMessageListeners = new HashMap<>();
protected final Map<Integer, List<MessageListener>> outgoingMessageListeners = new HashMap<>();
protected PacketInfoManager packetInfoManager = new PacketInfoManager(new ArrayList<>()); // empty
/**
* Register a listener on a specific packet Type
* @param direction ToClient or ToServer
@ -127,4 +130,13 @@ public abstract class ExtensionBase extends IExtension {
Observable<OnConnectionListener> getOnConnectionObservable() {
return onConnectionObservable;
}
protected void setPacketInfoManager(PacketInfoManager packetInfoManager) {
this.packetInfoManager = packetInfoManager;
}
@Override
public PacketInfoManager getPacketInfoManager() {
return packetInfoManager;
}
}

View File

@ -2,6 +2,7 @@ package gearth.extensions;
import gearth.protocol.HMessage;
import gearth.protocol.HPacket;
import gearth.services.packet_info.PacketInfoManager;
public abstract class IExtension {
@ -21,4 +22,6 @@ public abstract class IExtension {
abstract ExtensionInfo getInfoAnnotations();
abstract boolean canLeave();
abstract boolean canDelete();
public abstract PacketInfoManager getPacketInfoManager();
}

View File

@ -105,9 +105,10 @@ public class InternalExtensionBuilder extends GEarthExtension {
@Override
public void connectionStart(String host, int port, String hotelVersion, String clientIdentifier, HClient clientType, PacketInfoManager packetInfoManager) {
extension.setPacketInfoManager(packetInfoManager);
extension.getOnConnectionObservable().fireEvent(l -> l.onConnection(
host, port, hotelVersion,
clientIdentifier, clientType, packetInfoManager)
clientIdentifier, clientType)
);
extension.onStartConnection();
}

View File

@ -4,5 +4,5 @@ import gearth.services.packet_info.PacketInfoManager;
import gearth.protocol.connection.HClient;
public interface OnConnectionListener {
void onConnection(String host, int port, String hotelversion, String clientIdentifier, HClient clientType, PacketInfoManager packetInfoManager);
void onConnection(String host, int port, String hotelversion, String clientIdentifier, HClient clientType);
}

View File

@ -41,7 +41,7 @@ public class ChatConsole {
this.infoMessage = infoMessage;
final boolean[] doOncePerConnection = {false};
extension.onConnect((host, port, hotelversion, clientIdentifier, clientType, packetInfoManager) ->
extension.onConnect((host, port, hotelversion, clientIdentifier, clientType) ->
doOncePerConnection[0] = true
);

View File

@ -17,7 +17,6 @@ public class PacketInfoSupport {
private final Object lock = new Object();
private PacketInfoManager packetInfoManager = new PacketInfoManager(new ArrayList<>()); //empty
private Map<String, List<Extension.MessageListener>> incomingMessageListeners = new HashMap<>();
private Map<String, List<Extension.MessageListener>> outgoingMessageListeners = new HashMap<>();
@ -26,10 +25,6 @@ public class PacketInfoSupport {
public PacketInfoSupport(IExtension extension) {
this.extension = extension;
extension.onConnect((host, port, hotelversion, clientIdentifier, clientType, packetInfoManager) ->
this.packetInfoManager = packetInfoManager
);
extension.intercept(HMessage.Direction.TOSERVER, message -> onReceivePacket(HMessage.Direction.TOSERVER, message));
extension.intercept(HMessage.Direction.TOCLIENT, message -> onReceivePacket(HMessage.Direction.TOCLIENT, message));
}
@ -41,7 +36,7 @@ public class PacketInfoSupport {
? outgoingMessageListeners
: incomingMessageListeners);
List<PacketInfo> packetInfos = packetInfoManager.getAllPacketInfoFromHeaderId(direction, message.getPacket().headerId());
List<PacketInfo> packetInfos = extension.getPacketInfoManager().getAllPacketInfoFromHeaderId(direction, message.getPacket().headerId());
for (PacketInfo packetInfo : packetInfos) {
List<Extension.MessageListener> listeners_hash = messageListeners.get(packetInfo.getHash());
@ -72,12 +67,12 @@ public class PacketInfoSupport {
private boolean send(HMessage.Direction direction, String hashOrName, Object... objects) {
int headerId;
PacketInfo fromname = packetInfoManager.getPacketInfoFromName(direction, hashOrName);
PacketInfo fromname = extension.getPacketInfoManager().getPacketInfoFromName(direction, hashOrName);
if (fromname != null) {
headerId = fromname.getHeaderId();
}
else {
PacketInfo fromHash = packetInfoManager.getPacketInfoFromHash(direction, hashOrName);
PacketInfo fromHash = extension.getPacketInfoManager().getPacketInfoFromHash(direction, hashOrName);
if (fromHash == null) return false;
headerId = fromHash.getHeaderId();
}
@ -109,8 +104,4 @@ public class PacketInfoSupport {
public boolean sendToServer(String hashOrName, Object... objects) {
return send(HMessage.Direction.TOSERVER, hashOrName, objects);
}
public PacketInfoManager getPacketInfoManager() {
return packetInfoManager;
}
}

View File

@ -51,8 +51,6 @@ public class BlockAndReplacePackets extends ExtensionForm {
List<BlockReplaceRule> rules = new ArrayList<>();
private PacketInfoManager packetInfoManager = PacketInfoManager.EMPTY;
// public static void main(String[] args) {
// runExtensionForm(args, BlockAndReplacePackets.class);
// }
@ -210,10 +208,6 @@ public class BlockAndReplacePackets extends ExtensionForm {
intercept(HMessage.Direction.TOSERVER, messageListener);
intercept(HMessage.Direction.TOCLIENT, messageListener);
onConnect((host, port, hotelversion, clientIdentifier, clientType, packetInfoManager) -> {
this.packetInfoManager = packetInfoManager;
});
}
@Override

View File

@ -110,17 +110,17 @@ public class PacketInfoExplorer extends ExtensionForm {
@Override
protected void initExtension() {
onConnect((host, port, hotelversion, clientIdentifier, clientType, packetInfoManager) -> {
setPacketInfoManager(packetInfoManager);
onConnect((host, port, hotelversion, clientIdentifier, clientType) -> {
init(packetInfoManager);
});
}
@Override
protected void onEndConnection() {
setPacketInfoManager(PacketInfoManager.EMPTY);
init(PacketInfoManager.EMPTY);
}
private void setPacketInfoManager(PacketInfoManager packetInfoManager) {
private void init(PacketInfoManager packetInfoManager) {
packetInfoList = packetInfoManager.getPacketInfoList();
packetInfoList.sort(Comparator.comparingInt(PacketInfo::getHeaderId));

View File

@ -46,8 +46,8 @@ public class UiLogger extends ExtensionForm implements PacketLogger {
@Override
protected void initExtension() {
onConnect((host, port, hotelversion, clientIdentifier, clientType, packetInfoManager) -> {
controller.setPacketInfoManager(packetInfoManager);
controller.init(this);
onConnect((host, port, hotelversion, clientIdentifier, clientType) -> {
controller.onConnect();
});
}
@ -55,7 +55,6 @@ public class UiLogger extends ExtensionForm implements PacketLogger {
@Override
protected void onEndConnection() {
controller.onDisconnect();
controller.setPacketInfoManager(PacketInfoManager.EMPTY);
}
@Override

View File

@ -71,7 +71,6 @@ public class UiLoggerController implements Initializable {
private StyleClassedTextArea area;
private Stage stage;
private PacketInfoManager packetInfoManager = null;
private int filteredAmount = 0;
@ -79,6 +78,7 @@ public class UiLoggerController implements Initializable {
private final List<Element> appendLater = new ArrayList<>();
private List<MenuItem> allMenuItems = new ArrayList<>();
private UiLogger uiLogger;
private boolean isSelected(MenuItem item) {
if (item instanceof CheckMenuItem) {
@ -216,10 +216,10 @@ public class UiLoggerController implements Initializable {
elements.add(new Element(String.format("(timestamp: %d)\n", System.currentTimeMillis()), "timestamp"));
}
boolean packetInfoAvailable = packetInfoManager.getPacketInfoList().size() > 0;
boolean packetInfoAvailable = uiLogger.getPacketInfoManager().getPacketInfoList().size() > 0;
if ((chkMessageName.isSelected() || chkMessageHash.isSelected()) && packetInfoAvailable) {
List<PacketInfo> messages = packetInfoManager.getAllPacketInfoFromHeaderId(
List<PacketInfo> messages = uiLogger.getPacketInfoManager().getAllPacketInfoFromHeaderId(
(isIncoming ? HMessage.Direction.TOCLIENT : HMessage.Direction.TOSERVER),
packet.headerId()
);
@ -277,7 +277,7 @@ public class UiLoggerController implements Initializable {
if (packet.length() <= 2000) {
try {
String expr = packet.toExpression(isIncoming ? HMessage.Direction.TOCLIENT : HMessage.Direction.TOSERVER, packetInfoManager, chkUseNewStructures.isSelected());
String expr = packet.toExpression(isIncoming ? HMessage.Direction.TOCLIENT : HMessage.Direction.TOSERVER, uiLogger.getPacketInfoManager(), chkUseNewStructures.isSelected());
String cleaned = cleanTextContent(expr);
if (cleaned.equals(expr)) {
if (!expr.equals("") && chkDisplayStructure.isSelected())
@ -338,16 +338,11 @@ public class UiLoggerController implements Initializable {
lblAutoScrolll.setText("Autoscroll: " + (chkAutoscroll.isSelected() ? "True" : "False"));
lblFiltered.setText("Filtered: " + filteredAmount);
boolean packetInfoAvailable = packetInfoManager.getPacketInfoList().size() > 0;
boolean packetInfoAvailable = uiLogger.getPacketInfoManager().getPacketInfoList().size() > 0;
lblPacketInfo.setText("Packet info: " + (packetInfoAvailable ? "True" : "False"));
});
}
public void setPacketInfoManager(PacketInfoManager packetInfoManager) {
this.packetInfoManager = packetInfoManager;
Platform.runLater(this::updateLoggerInfo);
}
public void toggleAlwaysOnTop(ActionEvent actionEvent) {
stage.setAlwaysOnTop(chkAlwaysOnTop.isSelected());
}
@ -376,6 +371,7 @@ public class UiLoggerController implements Initializable {
stage.show();
}
});
Platform.runLater(this::updateLoggerInfo);
}
public void exportAll(ActionEvent actionEvent) {
@ -406,4 +402,8 @@ public class UiLoggerController implements Initializable {
}
}
public void init(UiLogger uiLogger) {
this.uiLogger = uiLogger;
}
}