This commit is contained in:
UnlegitDqrk
2026-02-28 15:34:05 +01:00
parent 8ef2f0291f
commit 700cff0294
7 changed files with 46 additions and 13 deletions

View File

@@ -6,7 +6,7 @@
<groupId>org.openautonomousconnection</groupId>
<artifactId>Protocol</artifactId>
<version>1.0.1-BETA.0.5</version>
<version>1.0.1-BETA.0.6</version>
<organization>
<name>Open Autonomous Connection</name>
<url>https://open-autonomous-connection.org/</url>

View File

@@ -1,9 +1,7 @@
package org.openautonomousconnection.protocol;
import dev.unlegitdqrk.unlegitlibrary.addon.AddonLoader;
import dev.unlegitdqrk.unlegitlibrary.file.FileUtils;
import dev.unlegitdqrk.unlegitlibrary.network.system.utils.ClientAuthMode;
import dev.unlegitdqrk.unlegitlibrary.utils.Logger;
import lombok.Getter;
import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
import org.openautonomousconnection.protocol.listeners.ClientListener;
@@ -28,7 +26,6 @@ import org.openautonomousconnection.protocol.packets.v1_0_1.beta.web.impl.stream
import org.openautonomousconnection.protocol.packets.v1_0_1.beta.web.impl.stream.WebStreamEndPacket_v1_0_1_B;
import org.openautonomousconnection.protocol.packets.v1_0_1.beta.web.impl.stream.WebStreamStartPacket_v1_0_1_B;
import org.openautonomousconnection.protocol.side.client.ProtocolClient;
import org.openautonomousconnection.protocol.side.client.ProtocolWebClient;
import org.openautonomousconnection.protocol.side.ins.ProtocolINSServer;
import org.openautonomousconnection.protocol.side.server.ProtocolCustomServer;
import org.openautonomousconnection.protocol.side.web.ProtocolWebServer;
@@ -40,7 +37,6 @@ import org.openautonomousconnection.protocol.versions.v1_0_0.beta.ProtocolWebSer
import java.io.File;
import java.io.IOException;
import java.util.ResourceBundle;
import java.util.function.Supplier;
/**

View File

@@ -5,7 +5,6 @@ import net.bytebuddy.agent.ByteBuddyAgent;
import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.asm.Advice;
import javax.annotation.Nullable;
import java.lang.annotation.Annotation;
import java.lang.instrument.Instrumentation;
import java.lang.reflect.Method;
@@ -73,6 +72,6 @@ public class CallTracker<A extends Annotation> extends GenericReflectClass<A> {
/**
* Code executed on any method call
*/
public abstract void onCall(Method method, @Nullable StackTraceElement callerMethod);
public abstract void onCall(Method method, StackTraceElement callerMethod);
}
}

View File

@@ -8,7 +8,6 @@ import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
import org.openautonomousconnection.protocol.exceptions.IncompatibleProtocolSideException;
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
import javax.annotation.Nullable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -36,7 +35,7 @@ public class ProtocolInfoProcessing extends AnnotationProcessor<ProtocolInfo> {
this.tracker = new CallTracker<>(new CallTracker.CallInterceptor() {
@Override
public void onCall(Method method, @Nullable StackTraceElement callerMethod) {
public void onCall(Method method, StackTraceElement callerMethod) {
ProtocolVersion.ProtocolSide side, callerSide;
Object o;

View File

@@ -90,7 +90,13 @@ public final class WebResourceRequestPacket extends WebPacket {
boolean hasBct = in.readBoolean();
this.bodyContentType = hasBct ? in.readUTF() : null;
this.initiatorType = WebInitiatorType.valueOf(in.readUTF());
try {
this.initiatorType = WebInitiatorType.valueOf(in.readUTF());
} catch (IllegalArgumentException e) {
getProtocolBridge().getProtocolValues().logger.exception("Invalid initiator type: " + initiatorType, e);
this.initiatorType = WebInitiatorType.OTHER;
}
this.cacheMode = WebCacheMode.valueOf(in.readUTF());
int len = in.readInt();
@@ -100,6 +106,7 @@ public final class WebResourceRequestPacket extends WebPacket {
if (protocolBridge.isRunningAsWebServer()) {
ProtocolWebServer server = (ProtocolWebServer) protocolBridge.getProtocolServer();
CustomConnectedClient client = server.getClientByID(clientID);
if (client == null) return;
client.getConnection().sendPacket(server.handleResource(client, this), TransportProtocol.TCP);
}
}

View File

@@ -4,6 +4,7 @@ import dev.unlegitdqrk.unlegitlibrary.event.EventListener;
import dev.unlegitdqrk.unlegitlibrary.event.EventPriority;
import dev.unlegitdqrk.unlegitlibrary.event.Listener;
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.packets.C_PacketReadEvent;
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.ClientDisconnectedEvent;
import org.openautonomousconnection.protocol.ProtocolBridge;
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.INSResponsePacket;
import org.openautonomousconnection.protocol.side.client.ProtocolClient;
@@ -40,6 +41,7 @@ public final class InsResolutionCoordinator_v1_0_1_B extends EventListener {
private volatile ProtocolClient insClient; // from ConnectedToProtocolINSServerEvent
private volatile boolean insConnected;
private volatile Object activeServerConnection;
private volatile String activeInfoName;
private volatile String pendingInfoName;
@@ -197,9 +199,37 @@ public final class InsResolutionCoordinator_v1_0_1_B extends EventListener {
@Listener(priority = EventPriority.HIGHEST)
public void onConnectedToServer(ConnectedToProtocolServerEvent event) {
Objects.requireNonNull(event, "event");
ProtocolClient client = event.getClient();
if (client != null) {
this.activeServerConnection = client.getClientServerConnection();
}
OacWebRequestBroker.get().notifyServerConnected();
}
@Listener(priority = EventPriority.HIGHEST)
public void onDisconnected(ClientDisconnectedEvent event) {
Objects.requireNonNull(event, "event");
Object disconnected = event.getClient();
if (disconnected == null) return;
ProtocolBridge b = this.bridge;
ProtocolClient client = (b == null) ? null : b.getProtocolClient();
if (disconnected == activeServerConnection) {
activeServerConnection = null;
activeInfoName = null;
OacWebRequestBroker.get().notifyServerConnectionFailed(
new IllegalStateException("Server connection was lost")
);
}
if (client != null && disconnected == client.getClientINSConnection()) {
this.insConnected = false;
this.pendingInfoName = null;
}
}
private boolean canReuseCurrentServerConnection(String infoName) {
ProtocolBridge b = this.bridge;
if (b == null) return false;
@@ -226,7 +256,6 @@ public final class InsResolutionCoordinator_v1_0_1_B extends EventListener {
InsParts parts = InsParts.parse(infoName);
try {
// IMPORTANT: direct INS query, no impl.sendIns()
c.sendINSQuery(parts.tln(), parts.name(), parts.sub(), INSRecordType.A);
} catch (Exception e) {
OacWebRequestBroker.get().notifyServerConnectionFailed(e);
@@ -254,9 +283,13 @@ public final class InsResolutionCoordinator_v1_0_1_B extends EventListener {
);
client.getClientServerConnection().connect(hostname, port);
this.activeServerConnection = client.getClientServerConnection();
this.activeInfoName = infoName;
// Broker gate is opened by ConnectedToProtocolServerEvent.
} catch (Exception e) {
e.printStackTrace();
this.activeServerConnection = null;
this.activeInfoName = null;
OacWebRequestBroker.get().notifyServerConnectionFailed(e);
}
}

View File

@@ -216,7 +216,6 @@ public final class OacWebRequestBroker {
Map<String, String> safeHeaders = (headers == null) ? Map.of() : new LinkedHashMap<>(headers);
byte[] safeBody = (body == null) ? new byte[0] : body;
WebResourceRequestPacket packet = new WebResourceRequestPacket(
header,
url.toString(),