- Used IntelliJ's Refactoring-Method

This commit is contained in:
2025-09-20 20:42:58 +02:00
parent b79eba247d
commit 6a79848899
25 changed files with 136 additions and 118 deletions

View File

@@ -6,7 +6,7 @@
<groupId>github.openautonomousconnection</groupId> <groupId>github.openautonomousconnection</groupId>
<artifactId>protocol</artifactId> <artifactId>protocol</artifactId>
<version>1.0.0-BETA.1</version> <version>1.0.0-BETA.2</version>
<organization> <organization>
<name>Open Autonomous Connection</name> <name>Open Autonomous Connection</name>
<url>https://open-autonomous-connection.org/</url> <url>https://open-autonomous-connection.org/</url>

View File

@@ -7,14 +7,12 @@ import github.openautonomousconnection.protocol.packets.v1_0_0.beta.AuthPacket;
import github.openautonomousconnection.protocol.packets.v1_0_0.beta.GetDestinationPacket; import github.openautonomousconnection.protocol.packets.v1_0_0.beta.GetDestinationPacket;
import github.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket; import github.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket;
import github.openautonomousconnection.protocol.packets.v1_0_0.beta.ValidateDomainPacket; import github.openautonomousconnection.protocol.packets.v1_0_0.beta.ValidateDomainPacket;
import github.openautonomousconnection.protocol.versions.ProtocolVersion;
import github.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode;
import github.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerClient;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerServer;
import github.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_DomainPacket; import github.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_DomainPacket;
import github.openautonomousconnection.protocol.side.client.ProtocolClient; import github.openautonomousconnection.protocol.side.client.ProtocolClient;
import github.openautonomousconnection.protocol.side.server.ProtocolServer; import github.openautonomousconnection.protocol.side.server.ProtocolServer;
import github.openautonomousconnection.protocol.versions.ProtocolVersion;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerClient;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerServer;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ClientListener; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ClientListener;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -26,28 +24,24 @@ import java.lang.reflect.InvocationTargetException;
public class ProtocolBridge { public class ProtocolBridge {
@Getter
private static ProtocolBridge instance;
@Getter @Getter
private final ProtocolSettings protocolSettings; private final ProtocolSettings protocolSettings;
@Getter @Getter
private final ProtocolVersion protocolVersion; private final ProtocolVersion protocolVersion;
@Getter
private ProtocolServer protocolServer;
@Getter
private ProtocolClient protocolClient;
@Getter @Getter
private final Logger logger; private final Logger logger;
@Getter @Setter
private ClassicHandlerServer classicHandlerServer;
@Getter @Setter
private ClassicHandlerClient classicHandlerClient;
@Getter @Getter
private static ProtocolBridge instance; private ProtocolServer protocolServer;
@Getter
private ProtocolClient protocolClient;
@Getter
@Setter
private ClassicHandlerServer classicHandlerServer;
@Getter
@Setter
private ClassicHandlerClient classicHandlerClient;
public ProtocolBridge(ProtocolServer protocolServer, ProtocolSettings protocolSettings, ProtocolVersion protocolVersion, File logFolder) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException { public ProtocolBridge(ProtocolServer protocolServer, ProtocolSettings protocolSettings, ProtocolVersion protocolVersion, File logFolder) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {
this.protocolServer = protocolServer; this.protocolServer = protocolServer;
@@ -124,9 +118,12 @@ public class ProtocolBridge {
GetDestinationPacket v100bGetDestinationPacket = new GetDestinationPacket(); GetDestinationPacket v100bGetDestinationPacket = new GetDestinationPacket();
if (isPacketSupported(v100bAuthPath)) protocolSettings.packetHandler.registerPacket(v100bAuthPath); if (isPacketSupported(v100bAuthPath)) protocolSettings.packetHandler.registerPacket(v100bAuthPath);
if (isPacketSupported(v100bUnsupportedClassicPacket)) protocolSettings.packetHandler.registerPacket(v100bUnsupportedClassicPacket); if (isPacketSupported(v100bUnsupportedClassicPacket))
if (isPacketSupported(v100bValidateDomainPacket)) protocolSettings.packetHandler.registerPacket(v100bValidateDomainPacket); protocolSettings.packetHandler.registerPacket(v100bUnsupportedClassicPacket);
if (isPacketSupported(v100bGetDestinationPacket)) protocolSettings.packetHandler.registerPacket(v100bGetDestinationPacket); if (isPacketSupported(v100bValidateDomainPacket))
protocolSettings.packetHandler.registerPacket(v100bValidateDomainPacket);
if (isPacketSupported(v100bGetDestinationPacket))
protocolSettings.packetHandler.registerPacket(v100bGetDestinationPacket);
} }
public boolean isPacketSupported(OACPacket packet) { public boolean isPacketSupported(OACPacket packet) {

View File

@@ -7,8 +7,6 @@ import me.finn.unlegitlibrary.event.Listener;
import me.finn.unlegitlibrary.network.system.server.events.ConnectionHandlerConnectedEvent; import me.finn.unlegitlibrary.network.system.server.events.ConnectionHandlerConnectedEvent;
import me.finn.unlegitlibrary.network.system.server.events.ConnectionHandlerDisconnectedEvent; import me.finn.unlegitlibrary.network.system.server.events.ConnectionHandlerDisconnectedEvent;
import java.util.ArrayList;
public class ServerListener extends EventListener { public class ServerListener extends EventListener {
@Listener @Listener

View File

@@ -17,17 +17,17 @@ public abstract class OACPacket extends Packet {
private DNSResponseCode responseCode = DNSResponseCode.RESPONSE_NOT_REQUIRED; private DNSResponseCode responseCode = DNSResponseCode.RESPONSE_NOT_REQUIRED;
protected final void setResponseCode(DNSResponseCode responseCode) { public OACPacket(int id, ProtocolVersion protocolVersion) {
this.responseCode = responseCode; super(id);
this.protocolVersion = protocolVersion;
} }
protected final DNSResponseCode getResponseCode() { protected final DNSResponseCode getResponseCode() {
return responseCode; return responseCode;
} }
public OACPacket(int id, ProtocolVersion protocolVersion) { protected final void setResponseCode(DNSResponseCode responseCode) {
super(id); this.responseCode = responseCode;
this.protocolVersion = protocolVersion;
} }
@Override @Override
@@ -46,6 +46,9 @@ public abstract class OACPacket extends Packet {
} }
public abstract void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException; public abstract void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException;
public abstract void onRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException; public abstract void onRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException;
protected void onResponseCodeRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) {}
protected void onResponseCodeRead(PacketHandler packetHandler, ObjectInputStream objectInputStream) {
}
} }

View File

@@ -22,7 +22,8 @@ public class AuthPacket extends OACPacket {
@Override @Override
public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException {
if (ProtocolBridge.getInstance().isRunningAsServer()) objectOutputStream.writeObject(ProtocolBridge.getInstance().getProtocolVersion()); if (ProtocolBridge.getInstance().isRunningAsServer())
objectOutputStream.writeObject(ProtocolBridge.getInstance().getProtocolVersion());
else { else {
objectOutputStream.writeInt(ProtocolBridge.getInstance().getProtocolClient().getNetworkClient().getClientID()); objectOutputStream.writeInt(ProtocolBridge.getInstance().getProtocolClient().getNetworkClient().getClientID());
objectOutputStream.writeObject(ProtocolBridge.getInstance().getProtocolVersion()); objectOutputStream.writeObject(ProtocolBridge.getInstance().getProtocolVersion());

View File

@@ -10,7 +10,6 @@ import me.finn.unlegitlibrary.network.system.packets.PacketHandler;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.util.function.DoubleBinaryOperator;
public class GetDestinationPacket extends OACPacket { public class GetDestinationPacket extends OACPacket {
private Domain domain; private Domain domain;

View File

@@ -4,7 +4,6 @@ import github.openautonomousconnection.protocol.ProtocolBridge;
import github.openautonomousconnection.protocol.packets.OACPacket; import github.openautonomousconnection.protocol.packets.OACPacket;
import github.openautonomousconnection.protocol.versions.ProtocolVersion; import github.openautonomousconnection.protocol.versions.ProtocolVersion;
import github.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode; import github.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode;
import me.finn.unlegitlibrary.network.system.packets.Packet;
import me.finn.unlegitlibrary.network.system.packets.PacketHandler; import me.finn.unlegitlibrary.network.system.packets.PacketHandler;
import java.io.IOException; import java.io.IOException;
@@ -27,7 +26,8 @@ public class UnsupportedClassicPacket extends OACPacket {
@Override @Override
public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException {
if (ProtocolBridge.getInstance().isRunningAsClient()) objectOutputStream.writeInt(ProtocolBridge.getInstance().getProtocolClient().getNetworkClient().getClientID()); if (ProtocolBridge.getInstance().isRunningAsClient())
objectOutputStream.writeInt(ProtocolBridge.getInstance().getProtocolClient().getNetworkClient().getClientID());
objectOutputStream.writeUTF(unsupportedClassicPacket.getName()); objectOutputStream.writeUTF(unsupportedClassicPacket.getName());
objectOutputStream.writeInt(content.length); objectOutputStream.writeInt(content.length);
for (Object o : content) objectOutputStream.writeObject(o); for (Object o : content) objectOutputStream.writeObject(o);
@@ -46,7 +46,8 @@ public class UnsupportedClassicPacket extends OACPacket {
content[i] = objectInputStream.readObject(); content[i] = objectInputStream.readObject();
} }
if (ProtocolBridge.getInstance().isRunningAsServer()) ProtocolBridge.getInstance().getClassicHandlerServer().unsupportedClassicPacket(className, content, ProtocolBridge.getInstance().getProtocolServer().getClientByID(clientID)); if (ProtocolBridge.getInstance().isRunningAsServer())
ProtocolBridge.getInstance().getClassicHandlerServer().unsupportedClassicPacket(className, content, ProtocolBridge.getInstance().getProtocolServer().getClientByID(clientID));
else ProtocolBridge.getInstance().getClassicHandlerClient().unsupportedClassicPacket(className, content); else ProtocolBridge.getInstance().getClassicHandlerClient().unsupportedClassicPacket(className, content);
} }
} }

View File

@@ -25,7 +25,8 @@ public class ValidateDomainPacket extends OACPacket {
@Override @Override
public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException { public void onWrite(PacketHandler packetHandler, ObjectOutputStream objectOutputStream) throws IOException, ClassNotFoundException {
if (ProtocolBridge.getInstance().isRunningAsClient()) objectOutputStream.writeInt(ProtocolBridge.getInstance().getProtocolClient().getNetworkClient().getClientID()); if (ProtocolBridge.getInstance().isRunningAsClient())
objectOutputStream.writeInt(ProtocolBridge.getInstance().getProtocolClient().getNetworkClient().getClientID());
else setResponseCode(ProtocolBridge.getInstance().getProtocolServer().validateDomain(domain)); else setResponseCode(ProtocolBridge.getInstance().getProtocolServer().validateDomain(domain));
objectOutputStream.writeObject(domain); objectOutputStream.writeObject(domain);

View File

@@ -1,13 +1,13 @@
package github.openautonomousconnection.protocol.packets.v1_0_0.classic; package github.openautonomousconnection.protocol.packets.v1_0_0.classic;
import github.openautonomousconnection.protocol.ProtocolBridge; import github.openautonomousconnection.protocol.ProtocolBridge;
import github.openautonomousconnection.protocol.packets.OACPacket;
import github.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket; import github.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket;
import github.openautonomousconnection.protocol.versions.ProtocolVersion; import github.openautonomousconnection.protocol.versions.ProtocolVersion;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_Domain; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_Domain;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_DomainPacketReceivedEvent; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_DomainPacketReceivedEvent;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_RequestDomain; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_RequestDomain;
import github.openautonomousconnection.protocol.packets.OACPacket;
import me.finn.unlegitlibrary.network.system.packets.PacketHandler; import me.finn.unlegitlibrary.network.system.packets.PacketHandler;
import java.io.IOException; import java.io.IOException;

View File

@@ -1,9 +1,9 @@
package github.openautonomousconnection.protocol.packets.v1_0_0.classic; package github.openautonomousconnection.protocol.packets.v1_0_0.classic;
import github.openautonomousconnection.protocol.ProtocolBridge; import github.openautonomousconnection.protocol.ProtocolBridge;
import github.openautonomousconnection.protocol.packets.OACPacket;
import github.openautonomousconnection.protocol.versions.ProtocolVersion; import github.openautonomousconnection.protocol.versions.ProtocolVersion;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion;
import github.openautonomousconnection.protocol.packets.OACPacket;
import me.finn.unlegitlibrary.network.system.packets.PacketHandler; import me.finn.unlegitlibrary.network.system.packets.PacketHandler;
import java.io.IOException; import java.io.IOException;

View File

@@ -1,14 +1,13 @@
package github.openautonomousconnection.protocol.packets.v1_0_0.classic; package github.openautonomousconnection.protocol.packets.v1_0_0.classic;
import github.openautonomousconnection.protocol.ProtocolBridge; import github.openautonomousconnection.protocol.ProtocolBridge;
import github.openautonomousconnection.protocol.packets.OACPacket;
import github.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket; import github.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket;
import github.openautonomousconnection.protocol.versions.ProtocolVersion; import github.openautonomousconnection.protocol.versions.ProtocolVersion;
import github.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_Domain; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_Domain;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_PingPacketReceivedEvent; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_PingPacketReceivedEvent;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_ProtocolVersion;
import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_RequestDomain; import github.openautonomousconnection.protocol.versions.v1_0_0.classic.Classic_RequestDomain;
import github.openautonomousconnection.protocol.packets.OACPacket;
import me.finn.unlegitlibrary.network.system.packets.PacketHandler; import me.finn.unlegitlibrary.network.system.packets.PacketHandler;
import java.io.IOException; import java.io.IOException;

View File

@@ -15,10 +15,21 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
public abstract class ProtocolClient extends DefaultMethodsOverrider { public abstract class ProtocolClient extends DefaultMethodsOverrider {
private ProtocolVersion serverVersion = null;
@Getter @Getter
private final NetworkClient networkClient; private final NetworkClient networkClient;
private ProtocolVersion serverVersion = null;
public ProtocolClient(File caFolder, File certificatesClientFolder, File certificatesKeyFolder) {
if (!caFolder.exists()) caFolder.mkdirs();
if (!certificatesClientFolder.exists()) certificatesClientFolder.mkdirs();
if (!certificatesKeyFolder.exists()) certificatesKeyFolder.mkdirs();
networkClient = new NetworkClient.ClientBuilder().setLogger(ProtocolBridge.getInstance().getLogger()).
setHost(ProtocolBridge.getInstance().getProtocolSettings().host).setPort(ProtocolBridge.getInstance().getProtocolSettings().port).
setPacketHandler(ProtocolBridge.getInstance().getProtocolSettings().packetHandler).setEventManager(ProtocolBridge.getInstance().getProtocolSettings().eventManager).
setRootCAFolder(caFolder).setClientCertificatesFolder(certificatesClientFolder, certificatesKeyFolder).
build();
}
public final ProtocolVersion getServerVersion() { public final ProtocolVersion getServerVersion() {
return serverVersion == null ? ProtocolVersion.PV_1_0_0_CLASSIC : serverVersion; return serverVersion == null ? ProtocolVersion.PV_1_0_0_CLASSIC : serverVersion;
@@ -86,18 +97,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
networkClient.sendPacket(new ValidateDomainPacket(domain)); networkClient.sendPacket(new ValidateDomainPacket(domain));
} }
public ProtocolClient(File caFolder, File certificatesClientFolder, File certificatesKeyFolder) {
if (!caFolder.exists()) caFolder.mkdirs();
if (!certificatesClientFolder.exists()) certificatesClientFolder.mkdirs();
if (!certificatesKeyFolder.exists()) certificatesKeyFolder.mkdirs();
networkClient = new NetworkClient.ClientBuilder().setLogger(ProtocolBridge.getInstance().getLogger()).
setHost(ProtocolBridge.getInstance().getProtocolSettings().host).setPort(ProtocolBridge.getInstance().getProtocolSettings().port).
setPacketHandler(ProtocolBridge.getInstance().getProtocolSettings().packetHandler).setEventManager(ProtocolBridge.getInstance().getProtocolSettings().eventManager).
setRootCAFolder(caFolder).setClientCertificatesFolder(certificatesClientFolder, certificatesKeyFolder).
build();
}
public abstract void validationCompleted(Domain domain, DNSResponseCode responseCode); public abstract void validationCompleted(Domain domain, DNSResponseCode responseCode);
public abstract void getDestinationCompleted(Domain domain, String destination, DNSResponseCode validationResponse); public abstract void getDestinationCompleted(Domain domain, String destination, DNSResponseCode validationResponse);
} }

View File

@@ -12,6 +12,10 @@ public class ConnectedProtocolClient {
private ProtocolVersion clientVersion = null; private ProtocolVersion clientVersion = null;
public ConnectedProtocolClient(ConnectionHandler connectionHandler) {
this.connectionHandler = connectionHandler;
}
public ProtocolVersion getClientVersion() { public ProtocolVersion getClientVersion() {
return clientVersion == null ? ProtocolVersion.PV_1_0_0_CLASSIC : clientVersion; return clientVersion == null ? ProtocolVersion.PV_1_0_0_CLASSIC : clientVersion;
} }
@@ -20,10 +24,6 @@ public class ConnectedProtocolClient {
if (clientVersion == null) this.clientVersion = clientVersion; if (clientVersion == null) this.clientVersion = clientVersion;
} }
public ConnectedProtocolClient(ConnectionHandler connectionHandler) {
this.connectionHandler = connectionHandler;
}
public boolean isStableClient() { public boolean isStableClient() {
return !isBetaClient() && !isClassicClient(); return !isBetaClient() && !isClassicClient();
} }

View File

@@ -5,7 +5,6 @@ import github.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponse
import github.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain; import github.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain;
import lombok.Getter; import lombok.Getter;
import me.finn.unlegitlibrary.file.ConfigurationManager; import me.finn.unlegitlibrary.file.ConfigurationManager;
import me.finn.unlegitlibrary.network.system.server.ConnectionHandler;
import me.finn.unlegitlibrary.network.system.server.NetworkServer; import me.finn.unlegitlibrary.network.system.server.NetworkServer;
import me.finn.unlegitlibrary.utils.DefaultMethodsOverrider; import me.finn.unlegitlibrary.utils.DefaultMethodsOverrider;
@@ -22,12 +21,7 @@ public abstract class ProtocolServer extends DefaultMethodsOverrider {
@Getter @Getter
private List<ConnectedProtocolClient> clients; private List<ConnectedProtocolClient> clients;
private ConfigurationManager configurationManager; private final ConfigurationManager configurationManager;
public final ConnectedProtocolClient getClientByID(int clientID) {
for (ConnectedProtocolClient client : clients) if (client.getConnectionHandler().getClientID() == clientID) return client;
return null;
}
public ProtocolServer(File caFolder, File certFile, File keyFile, File configFile) throws IOException { public ProtocolServer(File caFolder, File certFile, File keyFile, File configFile) throws IOException {
if (!caFolder.exists()) caFolder.mkdirs(); if (!caFolder.exists()) caFolder.mkdirs();
@@ -36,8 +30,10 @@ public abstract class ProtocolServer extends DefaultMethodsOverrider {
configurationManager = new ConfigurationManager(configFile); configurationManager = new ConfigurationManager(configFile);
configurationManager.loadProperties(); configurationManager.loadProperties();
if (!configurationManager.isSet("server.site.info")) configurationManager.set("server.site.info", "DNS-SERVER INFO SITE IP"); if (!configurationManager.isSet("server.site.info"))
if (!configurationManager.isSet("server.site.register")) configurationManager.set("server.site.register", "SERVER IP TO DNS-FRONTENT WEBSITE"); configurationManager.set("server.site.info", "DNS-SERVER INFO SITE IP");
if (!configurationManager.isSet("server.site.register"))
configurationManager.set("server.site.register", "SERVER IP TO DNS-FRONTENT WEBSITE");
ProtocolBridge protocolBridge = ProtocolBridge.getInstance(); ProtocolBridge protocolBridge = ProtocolBridge.getInstance();
this.clients = new ArrayList<>(); this.clients = new ArrayList<>();
@@ -50,6 +46,12 @@ public abstract class ProtocolServer extends DefaultMethodsOverrider {
build(); build();
} }
public final ConnectedProtocolClient getClientByID(int clientID) {
for (ConnectedProtocolClient client : clients)
if (client.getConnectionHandler().getClientID() == clientID) return client;
return null;
}
public final String getDNSInfoSite() { public final String getDNSInfoSite() {
return configurationManager.getString("server.site.info"); return configurationManager.getString("server.site.info");
} }
@@ -59,10 +61,16 @@ public abstract class ProtocolServer extends DefaultMethodsOverrider {
} }
public abstract List<Domain> getDomains(); public abstract List<Domain> getDomains();
public abstract String getDomainDestination(Domain domain); public abstract String getDomainDestination(Domain domain);
public abstract String getSubnameDestination(Domain domain, String subname); public abstract String getSubnameDestination(Domain domain, String subname);
public abstract String getTLNInfoSite(String topLevelName); public abstract String getTLNInfoSite(String topLevelName);
public abstract DNSResponseCode validateDomain(Domain requestedDomain); public abstract DNSResponseCode validateDomain(Domain requestedDomain);
public abstract void validationFailed(Domain domain, ConnectedProtocolClient client, Exception exception); public abstract void validationFailed(Domain domain, ConnectedProtocolClient client, Exception exception);
public abstract void getDomainDestinationFailed(ConnectedProtocolClient client, Domain domain, DNSResponseCode validationResponse, Exception exception); public abstract void getDomainDestinationFailed(ConnectedProtocolClient client, Domain domain, DNSResponseCode validationResponse, Exception exception);
} }

View File

@@ -9,8 +9,7 @@ import java.util.List;
public enum ProtocolVersion implements Serializable { public enum ProtocolVersion implements Serializable {
PV_1_0_0_CLASSIC("1.0.0", ProtocolType.CLASSIC, ProtocolSide.BOTH), PV_1_0_0_CLASSIC("1.0.0", ProtocolType.CLASSIC, ProtocolSide.BOTH),
PV_1_0_0_BETA("1.0.0", ProtocolType.BETA, ProtocolSide.BOTH, PV_1_0_0_CLASSIC) PV_1_0_0_BETA("1.0.0", ProtocolType.BETA, ProtocolSide.BOTH, PV_1_0_0_CLASSIC);
;
@Getter @Getter
private final String version; private final String version;
@@ -35,7 +34,7 @@ public enum ProtocolVersion implements Serializable {
for (ProtocolVersion compatibleVersion : compatibleVersions) compatible.append(compatibleVersion.buildName()); for (ProtocolVersion compatibleVersion : compatibleVersions) compatible.append(compatibleVersion.buildName());
compatible.append("]"); compatible.append("]");
return "{version=" + version + ";type=" + protocolType.toString() + ";side=" + protocolSide.toString() + ";compatible=" + compatible.toString() + "}"; return "{version=" + version + ";type=" + protocolType.toString() + ";side=" + protocolSide.toString() + ";compatible=" + compatible + "}";
} }
public final String buildName() { public final String buildName() {
@@ -45,9 +44,7 @@ public enum ProtocolVersion implements Serializable {
public enum ProtocolType implements Serializable { public enum ProtocolType implements Serializable {
CLASSIC, // -> See "_old" Projects on GitHub Organisation https://github.com/Open-Autonomous-Connection/ CLASSIC, // -> See "_old" Projects on GitHub Organisation https://github.com/Open-Autonomous-Connection/
BETA, BETA,
STABLE STABLE;
;
@Override @Override
public final String toString() { public final String toString() {

View File

@@ -27,8 +27,7 @@ public enum DNSResponseCode implements Serializable {
RESPONSE_DOMAIN_SUBNAME_DELETED(126, "Subname deleted"), RESPONSE_DOMAIN_SUBNAME_DELETED(126, "Subname deleted"),
RESPONSE_DOMAIN_FULLY_EXIST(130, "Full domain exist"), RESPONSE_DOMAIN_FULLY_EXIST(130, "Full domain exist"),
RESPONSE_DOMAIN_FULLY_NOT_EXIST(131, "Full domain does not exist") RESPONSE_DOMAIN_FULLY_NOT_EXIST(131, "Full domain does not exist");
;
@Getter @Getter
private final int code; private final int code;
@@ -43,6 +42,6 @@ public enum DNSResponseCode implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "{code=" + code + ";description=" + description +"}"; return "{code=" + code + ";description=" + description + "}";
} }
} }

View File

@@ -8,15 +8,6 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
public class Domain implements Serializable { public class Domain implements Serializable {
public static class DefaultDomains {
public static final Domain DNS_INFO_SITE = new Domain("oac://about.oac/");
public static final Domain DNS_REGISTER_SITE = new Domain("oac://register.oac/");
public static Domain TLN_INFO_SITE(String topLevelName) {
return new Domain("oac://about." + topLevelName + "/");
}
}
@Getter @Getter
private final String subname; private final String subname;
@Getter @Getter
@@ -31,12 +22,12 @@ public class Domain implements Serializable {
private String fragment; private String fragment;
@Getter @Getter
private String protocol; private String protocol;
public Domain(String fullDomain) { public Domain(String fullDomain) {
// Remove protocol // Remove protocol
String domainWithPath = fullDomain.contains("://") ? fullDomain.split("://", 2)[1] : fullDomain; String domainWithPath = fullDomain.contains("://") ? fullDomain.split("://", 2)[1] : fullDomain;
this.protocol = fullDomain.contains("://") ? fullDomain.split("://", 2)[0] : ""; this.protocol = fullDomain.contains("://") ? fullDomain.split("://", 2)[0] : "";
if (this.protocol.endsWith("://")) this.protocol = this.protocol.substring(0, this.protocol.length() - "://".length()); if (this.protocol.endsWith("://"))
this.protocol = this.protocol.substring(0, this.protocol.length() - "://".length());
// Cut path // Cut path
String[] domainPartsAndPath = domainWithPath.split("/", 2); String[] domainPartsAndPath = domainWithPath.split("/", 2);
@@ -85,15 +76,27 @@ public class Domain implements Serializable {
domain.getTopLevelName().equalsIgnoreCase(this.topLevelName) && domain.getProtocol().equalsIgnoreCase(this.protocol); domain.getTopLevelName().equalsIgnoreCase(this.topLevelName) && domain.getProtocol().equalsIgnoreCase(this.protocol);
} }
public final String getDestination() { public final String getDestination() {
if (ProtocolBridge.getInstance().isRunningAsClient()) return DNSResponseCode.RESPONSE_INVALID_REQUEST.toString(); if (ProtocolBridge.getInstance().isRunningAsClient())
return DNSResponseCode.RESPONSE_INVALID_REQUEST.toString();
if (this.equals(DefaultDomains.DNS_INFO_SITE)) return ProtocolBridge.getInstance().getProtocolServer().getDNSInfoSite(); if (this.equals(DefaultDomains.DNS_INFO_SITE))
if (this.equals(DefaultDomains.DNS_REGISTER_SITE)) return ProtocolBridge.getInstance().getProtocolServer().getDNSRegisterSite(); return ProtocolBridge.getInstance().getProtocolServer().getDNSInfoSite();
if (this.name.equalsIgnoreCase("about") && this.protocol.equalsIgnoreCase("oac")) return ProtocolBridge.getInstance().getProtocolServer().getTLNInfoSite(topLevelName); if (this.equals(DefaultDomains.DNS_REGISTER_SITE))
return ProtocolBridge.getInstance().getProtocolServer().getDNSRegisterSite();
if (this.name.equalsIgnoreCase("about") && this.protocol.equalsIgnoreCase("oac"))
return ProtocolBridge.getInstance().getProtocolServer().getTLNInfoSite(topLevelName);
return !hasSubname() ? ProtocolBridge.getInstance().getProtocolServer().getDomainDestination(this) : ProtocolBridge.getInstance().getProtocolServer().getSubnameDestination(this, subname); return !hasSubname() ? ProtocolBridge.getInstance().getProtocolServer().getDomainDestination(this) : ProtocolBridge.getInstance().getProtocolServer().getSubnameDestination(this, subname);
} }
public static class DefaultDomains {
public static final Domain DNS_INFO_SITE = new Domain("oac://about.oac/");
public static final Domain DNS_REGISTER_SITE = new Domain("oac://register.oac/");
public static Domain TLN_INFO_SITE(String topLevelName) {
return new Domain("oac://about." + topLevelName + "/");
}
}
} }

View File

@@ -1,10 +1,10 @@
package github.openautonomousconnection.protocol.versions.v1_0_0.classic; package github.openautonomousconnection.protocol.versions.v1_0_0.classic;
import github.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClassicPacket;
public abstract class ClassicHandlerClient { public abstract class ClassicHandlerClient {
public abstract void unsupportedClassicPacket(String classicPacketClassName, Object[] content); public abstract void unsupportedClassicPacket(String classicPacketClassName, Object[] content);
public abstract void handleHTMLContent(Classic_SiteType siteType, Classic_Domain domain, String html); public abstract void handleHTMLContent(Classic_SiteType siteType, Classic_Domain domain, String html);
public abstract void handleMessage(String message); public abstract void handleMessage(String message);
} }

View File

@@ -1,13 +1,15 @@
package github.openautonomousconnection.protocol.versions.v1_0_0.classic; package github.openautonomousconnection.protocol.versions.v1_0_0.classic;
import github.openautonomousconnection.protocol.side.server.ConnectedProtocolClient; import github.openautonomousconnection.protocol.side.server.ConnectedProtocolClient;
import me.finn.unlegitlibrary.network.system.server.ConnectionHandler;
import java.sql.SQLException; import java.sql.SQLException;
public abstract class ClassicHandlerServer { public abstract class ClassicHandlerServer {
public abstract void handleMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion); public abstract void handleMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion);
public abstract Classic_Domain getDomain(Classic_RequestDomain requestDomain) throws SQLException; public abstract Classic_Domain getDomain(Classic_RequestDomain requestDomain) throws SQLException;
public abstract Classic_Domain ping(Classic_RequestDomain requestDomain) throws SQLException; public abstract Classic_Domain ping(Classic_RequestDomain requestDomain) throws SQLException;
public abstract void unsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client); public abstract void unsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client);
} }

View File

@@ -21,13 +21,14 @@ public class Classic_ClientListener extends EventListener {
try { try {
if (!ProtocolBridge.getInstance().getProtocolClient().getNetworkClient().sendPacket(new Classic_PingPacket(event.requestDomain, event.domain, false))) { if (!ProtocolBridge.getInstance().getProtocolClient().getNetworkClient().sendPacket(new Classic_PingPacket(event.requestDomain, event.domain, false))) {
ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", ""), ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", ""),
Classic_WebsitesContent.ERROR_OCCURRED(event.domain.toString() + "/" + event.domain.path)); Classic_WebsitesContent.ERROR_OCCURRED(event.domain + "/" + event.domain.path));
} }
} catch (IOException | ClassNotFoundException e) { } catch (IOException | ClassNotFoundException e) {
ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", ""), ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", ""),
Classic_WebsitesContent.ERROR_OCCURRED(event.domain.toString() + "/" + event.domain.path + ":\n" + e.getMessage())); Classic_WebsitesContent.ERROR_OCCURRED(event.domain + "/" + event.domain.path + ":\n" + e.getMessage()));
} }
} else ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("domain-not-found", "html", ""), Classic_WebsitesContent.DOMAIN_NOT_FOUND); } else
ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("domain-not-found", "html", ""), Classic_WebsitesContent.DOMAIN_NOT_FOUND);
} }
@Listener @Listener
@@ -49,9 +50,10 @@ public class Classic_ClientListener extends EventListener {
ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PUBLIC, event.domain, content.toString()); ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PUBLIC, event.domain, content.toString());
} catch (IOException exception) { } catch (IOException exception) {
ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", ""), ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-occurred", "html", ""),
Classic_WebsitesContent.ERROR_OCCURRED(exception.getMessage().replace(event.domain.getDomain().getDestination(), event.domain.toString() + "/" + event.domain.path))); Classic_WebsitesContent.ERROR_OCCURRED(exception.getMessage().replace(event.domain.getDomain().getDestination(), event.domain + "/" + event.domain.path)));
} }
} else ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-not-reached", "html", ""), Classic_WebsitesContent.DOMAIN_NOT_REACHABLE); } else
ProtocolBridge.getInstance().getClassicHandlerClient().handleHTMLContent(Classic_SiteType.PROTOCOL, new Classic_LocalDomain("error-not-reached", "html", ""), Classic_WebsitesContent.DOMAIN_NOT_REACHABLE);
} }
@Override @Override

View File

@@ -8,9 +8,10 @@ import java.io.Serializable;
public class Classic_Domain implements Serializable { public class Classic_Domain implements Serializable {
public final String name; public final String name;
public final String topLevelDomain; public final String topLevelDomain;
private final String destination;
public final String path; public final String path;
@Getter private final Domain domain; private final String destination;
@Getter
private final Domain domain;
public Classic_Domain(String name, String topLevelDomain, String destination, String path) { public Classic_Domain(String name, String topLevelDomain, String destination, String path) {
this.domain = new Domain(name + "." + topLevelDomain + "/" + (path.startsWith("/") ? path : "/" + path)); this.domain = new Domain(name + "." + topLevelDomain + "/" + (path.startsWith("/") ? path : "/" + path));

View File

@@ -13,11 +13,16 @@ class Classic_DomainUtils extends DefaultMethodsOverrider {
URL uri = null; URL uri = null;
String tldString = null; String tldString = null;
if (url.startsWith(Classic_SiteType.PUBLIC.name + "://")) url = url.substring((Classic_SiteType.PUBLIC.name + "://").length()); if (url.startsWith(Classic_SiteType.PUBLIC.name + "://"))
if (url.startsWith(Classic_SiteType.CLIENT.name + "://")) url = url.substring((Classic_SiteType.CLIENT.name + "://").length()); url = url.substring((Classic_SiteType.PUBLIC.name + "://").length());
if (url.startsWith(Classic_SiteType.SERVER.name + "://")) url = url.substring((Classic_SiteType.SERVER.name + "://").length()); if (url.startsWith(Classic_SiteType.CLIENT.name + "://"))
if (url.startsWith(Classic_SiteType.PROTOCOL.name + "://")) url = url.substring((Classic_SiteType.PROTOCOL.name + "://").length()); url = url.substring((Classic_SiteType.CLIENT.name + "://").length());
if (url.startsWith(Classic_SiteType.LOCAL.name + "://")) url = url.substring((Classic_SiteType.LOCAL.name + "://").length()); if (url.startsWith(Classic_SiteType.SERVER.name + "://"))
url = url.substring((Classic_SiteType.SERVER.name + "://").length());
if (url.startsWith(Classic_SiteType.PROTOCOL.name + "://"))
url = url.substring((Classic_SiteType.PROTOCOL.name + "://").length());
if (url.startsWith(Classic_SiteType.LOCAL.name + "://"))
url = url.substring((Classic_SiteType.LOCAL.name + "://").length());
if (!url.startsWith("https://") && !url.startsWith("http://")) url = "https://" + url; if (!url.startsWith("https://") && !url.startsWith("http://")) url = "https://" + url;
@@ -29,11 +34,16 @@ class Classic_DomainUtils extends DefaultMethodsOverrider {
} }
public static String getDomainName(String url) throws URISyntaxException, MalformedURLException { public static String getDomainName(String url) throws URISyntaxException, MalformedURLException {
if (url.startsWith(Classic_SiteType.PUBLIC.name + "://")) url = url.substring((Classic_SiteType.PUBLIC.name + "://").length()); if (url.startsWith(Classic_SiteType.PUBLIC.name + "://"))
if (url.startsWith(Classic_SiteType.CLIENT.name + "://")) url = url.substring((Classic_SiteType.CLIENT.name + "://").length()); url = url.substring((Classic_SiteType.PUBLIC.name + "://").length());
if (url.startsWith(Classic_SiteType.SERVER.name + "://")) url = url.substring((Classic_SiteType.SERVER.name + "://").length()); if (url.startsWith(Classic_SiteType.CLIENT.name + "://"))
if (url.startsWith(Classic_SiteType.PROTOCOL.name + "://")) url = url.substring((Classic_SiteType.PROTOCOL.name + "://").length()); url = url.substring((Classic_SiteType.CLIENT.name + "://").length());
if (url.startsWith(Classic_SiteType.LOCAL.name + "://")) url = url.substring((Classic_SiteType.LOCAL.name + "://").length()); if (url.startsWith(Classic_SiteType.SERVER.name + "://"))
url = url.substring((Classic_SiteType.SERVER.name + "://").length());
if (url.startsWith(Classic_SiteType.PROTOCOL.name + "://"))
url = url.substring((Classic_SiteType.PROTOCOL.name + "://").length());
if (url.startsWith(Classic_SiteType.LOCAL.name + "://"))
url = url.substring((Classic_SiteType.LOCAL.name + "://").length());
if (!url.startsWith("https://") && !url.startsWith("http://")) url = "https://" + url; if (!url.startsWith("https://") && !url.startsWith("http://")) url = "https://" + url;

View File

@@ -4,7 +4,6 @@ import java.io.Serializable;
public enum Classic_ProtocolVersion implements Serializable { public enum Classic_ProtocolVersion implements Serializable {
PV_1_0_0("1.0.0"); PV_1_0_0("1.0.0");
;
public final String version; public final String version;
Classic_ProtocolVersion(String version) { Classic_ProtocolVersion(String version) {

View File

@@ -5,7 +5,6 @@ import java.io.Serializable;
enum Classic_SiteType implements Serializable { enum Classic_SiteType implements Serializable {
CLIENT("oac-client"), SERVER("oac-server"), CLIENT("oac-client"), SERVER("oac-server"),
PUBLIC("oac"), PROTOCOL("oac-protocol"), LOCAL("oac-local"); PUBLIC("oac"), PROTOCOL("oac-protocol"), LOCAL("oac-local");
;
public final String name; public final String name;

View File

@@ -45,6 +45,7 @@ public class Classic_WebsitesContent extends DefaultMethodsOverrider {
</body> </body>
</html> </html>
"""; """;
public static String ERROR_OCCURRED = ERROR_OCCURRED("No specified details!");
public static String ERROR_OCCURRED(String errorDetails) { public static String ERROR_OCCURRED(String errorDetails) {
return """ return """
@@ -63,6 +64,4 @@ public class Classic_WebsitesContent extends DefaultMethodsOverrider {
</html> </html>
"""; """;
} }
public static String ERROR_OCCURRED = ERROR_OCCURRED("No specified details!");
} }