Renamed DNS to INS

This commit is contained in:
Finn
2025-12-08 09:59:58 +01:00
parent f5afd9c3e7
commit 2ea23885fd
34 changed files with 573 additions and 574 deletions

View File

@@ -10,12 +10,12 @@ import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
import org.openautonomousconnection.protocol.exceptions.UnsupportedProtocolException;
import org.openautonomousconnection.protocol.packets.OACPacket;
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.GetDestinationPacket;
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.ValidateDomainPacket;
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.ValidateInfoNamePacket;
import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_DomainPacket;
import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_PingPacket;
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSResponseCode;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.InfoName;
import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain;
import java.io.File;
@@ -24,14 +24,14 @@ import java.io.IOException;
import java.security.cert.CertificateException;
/**
* Abstract class defining the client-side protocol operations and interactions with DNS and web servers.
* Abstract class defining the client-side protocol operations and interactions with INS and web servers.
*/
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS)
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.INS)
public abstract class ProtocolClient extends DefaultMethodsOverrider {
/**
* Handles everything with DNS-Connection.
* Handles everything with INS-Connection.
*/
private final NetworkClient clientToDNS;
private final NetworkClient clientToINS;
/**
* Manages the folder structure for client certificates.
@@ -57,7 +57,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
private ProtocolBridge protocolBridge;
/**
* Initializes the ProtocolClient, setting up certificate folders and the DNS client connection.
* Initializes the ProtocolClient, setting up certificate folders and the INS client connection.
*
* @throws CertificateException if there are issues with the certificates.
* @throws IOException if there are I/O issues during initialization.
@@ -66,8 +66,8 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
// Initialize and verify certificate folders and files
folderStructure = new ClientCertificateFolderStructure();
// Initialize connection to DNS server
clientToDNS = new NetworkClient.ClientBuilder().setLogger(protocolBridge.getLogger()).setProxy(protocolBridge.getProxy()).
// Initialize connection to INS server
clientToINS = new NetworkClient.ClientBuilder().setLogger(protocolBridge.getLogger()).setProxy(protocolBridge.getProxy()).
setHost(protocolBridge.getProtocolSettings().host).setPort(protocolBridge.getProtocolSettings().port).
setPacketHandler(protocolBridge.getProtocolSettings().packetHandler).setEventManager(protocolBridge.getProtocolSettings().eventManager).
setRootCAFolder(folderStructure.publicCAFolder).setClientCertificatesFolder(folderStructure.publicClientFolder, folderStructure.privateClientFolder).
@@ -75,23 +75,23 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
}
/**
* Gets the DNS connection client.
* Gets the INS connection client.
*
* @return the NetworkClient handling the DNS connection.
* @return the NetworkClient handling the INS connection.
*/
public final NetworkClient getClientDNSConnection() {
return clientToDNS;
public final NetworkClient getClientINSConnection() {
return clientToINS;
}
/**
* Creates a web connection to the specified domain and ports.
* Creates a web connection to the specified InfoName and ports.
*
* @param domain the target domain for the web connection.
* @param infoName the target InfoName for the web connection.
* @param pipelinePort the port used for the pipeline connection.
* @param webPort the port used for the web connection.
* @throws Exception if there are issues creating the web connection or if the protocol is unsupported.
*/
public final void createWebConnection(Domain domain, int pipelinePort, int webPort) throws Exception {
public final void createWebConnection(InfoName infoName, int pipelinePort, int webPort) throws Exception {
// Ensure the protocol supports web connections
if (!protocolBridge.isProtocolSupported(ProtocolVersion.Protocol.OAC))
throw new UnsupportedProtocolException();
@@ -107,7 +107,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
}
// Verify necessary certificate files exist
webClient = new WebClient(domain, pipelinePort, webPort, this);
webClient = new WebClient(infoName, pipelinePort, webPort, this);
}
/**
@@ -162,12 +162,12 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
}
/**
* Handles DNS disconnection events, resetting the server version and closing the web client connection if necessary.
* Handles INS disconnection events, resetting the server version and closing the web client connection if necessary.
*
* @param event the ClientDisconnectedEvent triggered on DNS disconnection.
* @param event the ClientDisconnectedEvent triggered on INS disconnection.
*/
public final void onDNSDisconnect(ClientDisconnectedEvent event) {
// Reset server version on DNS disconnect
public final void onINSDisconnect(ClientDisconnectedEvent event) {
// Reset server version on INS disconnect
serverVersion = null;
// Close web client connection if it exists
@@ -302,36 +302,36 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
}
/**
* Validates the specified domain by sending a validation request to the DNS server.
* Validates the specified InfoName by sending a validation request to the INS server.
*
* @param domain the Domain to validate.
* @param infoName the InfoName to validate.
* @throws IOException if there are I/O issues during the validation process.
* @throws ClassNotFoundException if there are issues with class loading during packet handling.
*/
public final void validateDomain(Domain domain) throws IOException, ClassNotFoundException {
public final void validateInfoName(InfoName infoName) throws IOException, ClassNotFoundException {
// Send Classic_PingPacket if classic protocol is supported
Classic_PingPacket cPingPacket = new Classic_PingPacket(new Classic_RequestDomain(domain.getName(), domain.getTopLevelName(), domain.getPath()), null, false);
if (protocolBridge.isClassicSupported()) clientToDNS.sendPacket(cPingPacket);
Classic_PingPacket cPingPacket = new Classic_PingPacket(new Classic_RequestDomain(infoName.getName(), infoName.getTopLevelName(), infoName.getPath()), null, false);
if (protocolBridge.isClassicSupported()) clientToINS.sendPacket(cPingPacket);
// Send ValidateDomainPacket
clientToDNS.sendPacket(new ValidateDomainPacket(domain, protocolBridge));
// Send ValidateInfoNamePacket
clientToINS.sendPacket(new ValidateInfoNamePacket(infoName, protocolBridge));
}
/**
* Requests the destination for the specified domain from the DNS server.
* Requests the destination for the specified InfoName from the INS server.
*
* @param domain the Domain for which to request the destination.
* @param responseCode the expected DNSResponseCode for the request.
* @param infoName the InfoName for which to request the destination.
* @param responseCode the expected INSResponseCode for the request.
* @throws IOException if there are I/O issues during the request process.
* @throws ClassNotFoundException if there are issues with class loading during packet handling.
*/
public final void requestDestination(Domain domain, DNSResponseCode responseCode) throws IOException, ClassNotFoundException {
public final void requestInfoName(InfoName infoName, INSResponseCode responseCode) throws IOException, ClassNotFoundException {
// Send Classic_DomainPacket if classic protocol is supported
Classic_DomainPacket cDomainPacket = new Classic_DomainPacket(0, new Classic_RequestDomain(domain.getName(), domain.getTopLevelName(), domain.getPath()), null);
if (protocolBridge.isClassicSupported()) clientToDNS.sendPacket(cDomainPacket);
Classic_DomainPacket cDomainPacket = new Classic_DomainPacket(0, new Classic_RequestDomain(infoName.getName(), infoName.getTopLevelName(), infoName.getPath()), null);
if (protocolBridge.isClassicSupported()) clientToINS.sendPacket(cDomainPacket);
// Send GetDestinationPacket
clientToDNS.sendPacket(new GetDestinationPacket(domain, responseCode));
clientToINS.sendPacket(new GetDestinationPacket(infoName, responseCode));
}
/**
@@ -343,21 +343,21 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
}
/**
* Callback method invoked when domain validation is completed.
* Callback method invoked when InfoName validation is completed.
*
* @param domain the Domain that was validated.
* @param responseCode the DNSResponseCode resulting from the validation.
* @param infoName the InfoName that was validated.
* @param responseCode the INSResponseCode resulting from the validation.
*/
public abstract void validationCompleted(Domain domain, DNSResponseCode responseCode);
public abstract void validationCompleted(InfoName infoName, INSResponseCode responseCode);
/**
* Callback method invoked when the destination retrieval is completed.
*
* @param domain the Domain for which the destination was requested.
* @param infoName the InfoName for which the destination was requested.
* @param destination the retrieved destination as a string.
* @param validationResponse the DNSResponseCode resulting from the destination retrieval.
* @param validationResponse the INSResponseCode resulting from the destination retrieval.
*/
public abstract void getDestinationCompleted(Domain domain, String destination, DNSResponseCode validationResponse);
public abstract void getDestinationCompleted(InfoName infoName, String destination, INSResponseCode validationResponse);
/**
* Manages the folder structure for client certificates.

View File

@@ -1,12 +1,10 @@
package org.openautonomousconnection.protocol.side.client;
import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient;
import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler;
import lombok.Getter;
import org.openautonomousconnection.protocol.ProtocolBridge;
import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.InfoName;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLSocket;
@@ -23,7 +21,7 @@ import java.net.Socket;
* WebClient handles secure connections to web servers through a pipeline connection.
* It manages SSL/TLS handshakes and data transmission over the established connection.
*/
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS)
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.INS)
public final class WebClient {
/**
* NetworkClient instance for managing the pipeline connection to the web server.
@@ -53,13 +51,13 @@ public final class WebClient {
/**
* Constructs a WebClient instance and establishes a secure connection to the web server.
*
* @param domain The domain information for the web server.
* @param infoName The InfoName information for the web server.
* @param pipelinePort The port for the pipeline connection.
* @param webPort The port for the web server connection.
* @param protocolClient The Protocol Client associated with this protocol client.
* @throws Exception If an error occurs during connection setup.
*/
public WebClient(Domain domain, int pipelinePort, int webPort, ProtocolClient protocolClient) throws Exception {
public WebClient(InfoName infoName, int pipelinePort, int webPort, ProtocolClient protocolClient) throws Exception {
this.protocolClient = protocolClient;
// Initialize and connect the pipeline client
@@ -67,15 +65,15 @@ public final class WebClient {
// Set logger from ProtocolBridge
setLogger(protocolClient.getProtocolBridge().getLogger()).
// Set the destination and port for the pipeline connection
setHost(domain.getDestination()).setPort(pipelinePort).
setHost(infoName.getDestination()).setPort(pipelinePort).
// Configure packet handler and event manager
setPacketHandler(protocolClient.getProtocolBridge().getProtocolSettings().packetHandler).
setEventManager(protocolClient.getProtocolBridge().getProtocolSettings().eventManager).
// Set proxy and ssl parameters from DNS connection settings
setProxy(protocolClient.getProtocolBridge().getProtocolClient().getClientDNSConnection().getProxy()).
setSSLParameters(protocolClient.getProtocolBridge().getProtocolClient().getClientDNSConnection().getSocket().getSSLParameters()).
// Set proxy and ssl parameters from INS connection settings
setProxy(protocolClient.getProtocolBridge().getProtocolClient().getClientINSConnection().getProxy()).
setSSLParameters(protocolClient.getProtocolBridge().getProtocolClient().getClientINSConnection().getSocket().getSSLParameters()).
// Set certificates and folders for SSL
setRootCAFolder(protocolClient.getProtocolBridge().getProtocolClient().getFolderStructure().publicCAFolder).
@@ -109,10 +107,10 @@ public final class WebClient {
// Create raw socket and wrap it in SSL socket
if (proxy != null) {
Socket rawSocket = new Socket(proxy);
rawSocket.connect(new InetSocketAddress(domain.getDestination(), webPort), 0);
tempSocket = (SSLSocket) sslSocketFactory.createSocket(rawSocket, domain.getDestination(), webPort, true);
rawSocket.connect(new InetSocketAddress(infoName.getDestination(), webPort), 0);
tempSocket = (SSLSocket) sslSocketFactory.createSocket(rawSocket, infoName.getDestination(), webPort, true);
} else {
tempSocket = (SSLSocket) sslSocketFactory.createSocket(domain.getDestination(), webPort);
tempSocket = (SSLSocket) sslSocketFactory.createSocket(infoName.getDestination(), webPort);
}
clientToWebServer = tempSocket;
@@ -177,7 +175,7 @@ public final class WebClient {
public boolean isConnected() {
return this.clientToWebServer != null && this.clientToWebServer.isConnected() && !this.clientToWebServer.isClosed()
&& this.receiveThread.isAlive() && !this.receiveThread.isInterrupted() &&
protocolClient.getProtocolBridge().getProtocolClient().getClientDNSConnection().isConnected() && clientToWebPipeline.isConnected();
protocolClient.getProtocolBridge().getProtocolClient().getClientINSConnection().isConnected() && clientToWebPipeline.isConnected();
}
/**

View File

@@ -5,8 +5,8 @@ import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
/**
* Event triggered when a client successfully connects to a DNS protocol server.
* Event triggered when a client successfully connects to a INS protocol server.
*/
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS)
public final class ConnectedToProtocolDNSServerEvent extends Event {
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.INS)
public final class ConnectedToProtocolINSServerEvent extends Event {
}

View File

@@ -1,16 +1,15 @@
package org.openautonomousconnection.protocol.side.dns;
package org.openautonomousconnection.protocol.side.ins;
import dev.unlegitdqrk.unlegitlibrary.network.system.server.ConnectionHandler;
import lombok.Getter;
import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
import org.openautonomousconnection.protocol.packets.OACPacket;
import org.openautonomousconnection.protocol.side.web.ProtocolWebServer;
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
/**
* Represents a connected protocol client on the DNS server side.
* Represents a connected protocol client on the INS server side.
*/
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS)
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.INS)
public final class ConnectedProtocolClient {
/**
@@ -23,16 +22,16 @@ public final class ConnectedProtocolClient {
* The Protocol Server associated with this protocol client.
*/
@Getter
private final ProtocolDNSServer protocolDNSServer;
private final ProtocolINSServer protocolINSServer;
/**
* The protocol version of the connected client.
*/
private ProtocolVersion clientVersion = null;
public ConnectedProtocolClient(ConnectionHandler connectionHandler, ProtocolDNSServer protocolDNSServer) {
public ConnectedProtocolClient(ConnectionHandler connectionHandler, ProtocolINSServer protocolINSServer) {
this.connectionHandler = connectionHandler;
this.protocolDNSServer = protocolDNSServer;
this.protocolINSServer = protocolINSServer;
}
/**

View File

@@ -1,4 +1,4 @@
package org.openautonomousconnection.protocol.side.dns;
package org.openautonomousconnection.protocol.side.ins;
import dev.unlegitdqrk.unlegitlibrary.file.ConfigurationManager;
import dev.unlegitdqrk.unlegitlibrary.network.system.server.NetworkServer;
@@ -8,8 +8,8 @@ import lombok.Getter;
import org.openautonomousconnection.protocol.ProtocolBridge;
import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.INSResponseCode;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.InfoName;
import java.io.File;
import java.io.FileNotFoundException;
@@ -19,10 +19,10 @@ import java.util.ArrayList;
import java.util.List;
/**
* Abstract class representing a DNS server in the protocol.
* Abstract class representing a INS server in the protocol.
*/
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS)
public abstract class ProtocolDNSServer extends DefaultMethodsOverrider {
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.INS)
public abstract class ProtocolINSServer extends DefaultMethodsOverrider {
/**
* The network server instance.
*/
@@ -53,13 +53,13 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider {
private ProtocolBridge protocolBridge;
/**
* Constructs a ProtocolDNSServer with the specified configuration file.
* Constructs a ProtocolINSServer with the specified configuration file.
*
* @param configFile The configuration file for the DNS server.
* @param configFile The configuration file for the INS server.
* @throws IOException If an I/O error occurs.
* @throws CertificateException If a certificate error occurs.
*/
public ProtocolDNSServer(File configFile) throws IOException, CertificateException {
public ProtocolINSServer(File configFile) throws IOException, CertificateException {
// Ensure the configuration file exists
if (!configFile.exists()) configFile.createNewFile();
@@ -69,12 +69,12 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider {
// Set default values for configuration properties if not already set
if (!configurationManager.isSet("server.site.info")) {
configurationManager.set("server.site.info", "DNS-SERVER INFO SITE IP");
configurationManager.set("server.site.info", "INS-SERVER INFO SITE IP");
configurationManager.saveProperties();
}
if (!configurationManager.isSet("server.site.register")) {
configurationManager.set("server.site.register", "SERVER IP TO DNS-FRONTENT WEBSITE");
configurationManager.set("server.site.register", "SERVER IP TO INS-FRONTEND WEBSITE");
configurationManager.saveProperties();
}
@@ -162,79 +162,79 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider {
}
/**
* Gets the DNS information site URL from the configuration.
* Gets the INS information site URL from the configuration.
*
* @return The DNS information site URL.
* @return The INS information site URL.
*/
public final String getDNSInfoSite() {
public final String getINSInfoSite() {
return configurationManager.getString("server.site.info");
}
/**
* Gets the DNS registration site URL from the configuration.
* Gets the INS registration site URL from the configuration.
*
* @return The DNS registration site URL.
* @return The INS registration site URL.
*/
public final String getDNSRegisterSite() {
public final String getINSRegisterSite() {
return configurationManager.getString("server.site.register");
}
/**
* Abstract method to retrieve the list of domains managed by the DNS server.
* Abstract method to retrieve the list of InfoNames managed by the INS server.
*
* @return A list of Domain objects.
* @return A list of InfoName objects.
*/
public abstract List<Domain> getDomains();
public abstract List<InfoName> getInfoNames();
/**
* @param domain The domain to look up.
* @return The destination associated with the domain.
* @see Domain#getDestination()
* Abstract method to get the destination for a given domain.
* @param infoName The InfoName to look up.
* @return The destination associated with the InfoName.
* @see InfoName#getDestination()
* Abstract method to get the destination for a given InfoName.
*/
public abstract String getDomainDestination(Domain domain);
public abstract String getInfoNameDestination(InfoName infoName);
/**
* @param domain The parent domain.
* @param infoName The parent InfoName.
* @param subname The subname to look up.
* @return The destination associated with the subname.
* @see Domain#getDestination()
* Abstract method to get the destination for a given subname under a specific domain.
* @see InfoName#getDestination()
* Abstract method to get the destination for a given subname under a specific InfoName.
*/
public abstract String getSubnameDestination(Domain domain, String subname);
public abstract String getSubnameDestination(InfoName infoName, String subname);
/**
* @param topLevelName The top-level domain name.
* @return The information site URL for the specified top-level domain.
* @see Domain#getDestination()
* Abstract method to get the top-level domain information site URL.
* @param topLevelName The top-level name.
* @return The information site URL for the specified top-level name.
* @see InfoName#getDestination()
* Abstract method to get the top-level name information site URL.
*/
public abstract String getTLNInfoSite(String topLevelName);
/**
* Abstract method to validate a requested domain.
* Abstract method to validate a requested InfoName.
*
* @param requestedDomain The domain to validate.
* @return A DNSResponseCode indicating the result of the validation.
* @param requestedInfoName The InfoName to validate.
* @return A INSResponseCode indicating the result of the validation.
*/
public abstract DNSResponseCode validateDomain(Domain requestedDomain);
public abstract INSResponseCode validateInfoName(InfoName requestedInfoName);
/**
* Abstract method called when a validation packet fails to send.
* @param domain The domain associated with the validation.
* @param infoName The InfoName associated with the validation.
* @param client The connected protocol client.
* @param exception The exception that occurred during sending.
*/
public abstract void validationPacketSendFailed(Domain domain, ConnectedProtocolClient client, Exception exception);
public abstract void validationPacketSendFailed(InfoName infoName, ConnectedProtocolClient client, Exception exception);
/**
* Abstract method called when a domain destination packet fails to send.
* Abstract method called when a InfoName destination packet fails to send.
* @param client The connected protocol client.
* @param domain The domain associated with the packet.
* @param validationResponse The DNS response code from validation.
* @param infoName The InfoName associated with the packet.
* @param validationResponse The INS response code from validation.
* @param exception The exception that occurred during sending.
*/
public abstract void domainDestinationPacketFailedSend(ConnectedProtocolClient client, Domain domain, DNSResponseCode validationResponse, Exception exception);
public abstract void infoNameDestinationPacketFailedSend(ConnectedProtocolClient client, InfoName infoName, INSResponseCode validationResponse, Exception exception);
/**
* Class representing the folder structure for server certificates.
@@ -250,8 +250,8 @@ public abstract class ProtocolDNSServer extends DefaultMethodsOverrider {
public final File publicCAFolder;
public final File publicServerFolder;
public final String caPrefix = "ca_dns_";
public final String certPrefix = "cert_dns_";
public final String caPrefix = "ca_ins_";
public final String certPrefix = "cert_ins_";
public ServerCertificateFolderStructure() {
certificatesFolder = new File("certificates");

View File

@@ -1,15 +1,15 @@
package org.openautonomousconnection.protocol.side.dns.events;
package org.openautonomousconnection.protocol.side.ins.events;
import dev.unlegitdqrk.unlegitlibrary.event.impl.Event;
import lombok.Getter;
import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient;
import org.openautonomousconnection.protocol.side.ins.ConnectedProtocolClient;
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
/**
* Event triggered when a protocol client connects to the DNS server.
* Event triggered when a protocol client connects to the INS server.
*/
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.DNS)
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.INS)
public final class ConnectedProtocolClientEvent extends Event {
@Getter