- Started with Web Protocol
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
package org.openautonomousconnection.protocol;
|
||||
|
||||
import org.openautonomousconnection.protocol.listeners.ClientListener;
|
||||
import org.openautonomousconnection.protocol.listeners.ServerListener;
|
||||
import org.openautonomousconnection.protocol.listeners.DNSServerListener;
|
||||
import org.openautonomousconnection.protocol.listeners.WebServerListener;
|
||||
import org.openautonomousconnection.protocol.packets.OACPacket;
|
||||
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.AuthPacket;
|
||||
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.GetDestinationPacket;
|
||||
@@ -9,7 +10,8 @@ import org.openautonomousconnection.protocol.packets.v1_0_0.beta.UnsupportedClas
|
||||
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.ValidateDomainPacket;
|
||||
import org.openautonomousconnection.protocol.packets.v1_0_0.classic.Classic_DomainPacket;
|
||||
import org.openautonomousconnection.protocol.side.client.ProtocolClient;
|
||||
import org.openautonomousconnection.protocol.side.server.ProtocolServer;
|
||||
import org.openautonomousconnection.protocol.side.dns.ProtocolDNSServer;
|
||||
import org.openautonomousconnection.protocol.side.web.ProtocolWebServer;
|
||||
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
|
||||
import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerClient;
|
||||
import org.openautonomousconnection.protocol.versions.v1_0_0.classic.ClassicHandlerServer;
|
||||
@@ -33,18 +35,20 @@ public class ProtocolBridge {
|
||||
@Getter
|
||||
private final Logger logger;
|
||||
@Getter
|
||||
private ProtocolServer protocolServer;
|
||||
private ProtocolDNSServer protocolDNSServer;
|
||||
@Getter
|
||||
private ProtocolClient protocolClient;
|
||||
@Getter
|
||||
private ProtocolWebServer protocolWebServer;
|
||||
@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 {
|
||||
this.protocolServer = protocolServer;
|
||||
public ProtocolBridge(ProtocolDNSServer protocolDNSServer, ProtocolSettings protocolSettings, ProtocolVersion protocolVersion, File logFolder) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {
|
||||
this.protocolDNSServer = protocolDNSServer;
|
||||
this.protocolSettings = protocolSettings;
|
||||
this.protocolVersion = protocolVersion;
|
||||
|
||||
@@ -58,7 +62,7 @@ public class ProtocolBridge {
|
||||
}
|
||||
|
||||
this.logger = tmpLogger;
|
||||
protocolSettings.eventManager.registerListener(new ServerListener());
|
||||
protocolSettings.eventManager.registerListener(new DNSServerListener());
|
||||
protocolSettings.eventManager.unregisterListener(new ClientListener());
|
||||
|
||||
if (!validateProtocolSide()) {
|
||||
@@ -88,7 +92,7 @@ public class ProtocolBridge {
|
||||
|
||||
this.logger = tmpLogger;
|
||||
protocolSettings.eventManager.registerListener(new ClientListener());
|
||||
protocolSettings.eventManager.unregisterListener(new ServerListener());
|
||||
protocolSettings.eventManager.unregisterListener(new DNSServerListener());
|
||||
|
||||
if (!validateProtocolSide()) {
|
||||
this.logger.error("Invalid protocol version '" + protocolVersion.toString() + "'!");
|
||||
@@ -126,11 +130,11 @@ public class ProtocolBridge {
|
||||
protocolSettings.packetHandler.registerPacket(v100bGetDestinationPacket);
|
||||
}
|
||||
|
||||
public boolean isPacketSupported(OACPacket packet) {
|
||||
public final boolean isPacketSupported(OACPacket packet) {
|
||||
return isVersionSupported(packet.getProtocolVersion());
|
||||
}
|
||||
|
||||
public boolean isClassicSupported() {
|
||||
public final boolean isClassicSupported() {
|
||||
boolean yes = false;
|
||||
for (ProtocolVersion compatibleVersion : protocolVersion.getCompatibleVersions()) {
|
||||
yes = compatibleVersion.getProtocolType() == ProtocolVersion.ProtocolType.CLASSIC;
|
||||
@@ -140,20 +144,47 @@ public class ProtocolBridge {
|
||||
return protocolVersion.getProtocolType() == ProtocolVersion.ProtocolType.CLASSIC || yes;
|
||||
}
|
||||
|
||||
public boolean isRunningAsServer() {
|
||||
return protocolServer != null;
|
||||
public final boolean isProtocolSupported(ProtocolVersion.Protocol protocol) {
|
||||
boolean yes = false;
|
||||
for (ProtocolVersion compatibleVersion : protocolVersion.getCompatibleVersions()) {
|
||||
yes = compatibleVersion.getSupportedProtocols().contains(protocol);
|
||||
if (yes) break;
|
||||
}
|
||||
|
||||
return protocolVersion.getSupportedProtocols().contains(protocol) || yes;
|
||||
}
|
||||
|
||||
public boolean isRunningAsClient() {
|
||||
public final boolean isRunningAsDNSServer() {
|
||||
return protocolDNSServer != null;
|
||||
}
|
||||
|
||||
public final boolean isRunningAsClient() {
|
||||
return protocolClient != null;
|
||||
}
|
||||
|
||||
private boolean validateProtocolSide() {
|
||||
return (isRunningAsServer() && protocolVersion.getProtocolSide() != ProtocolVersion.ProtocolSide.CLIENT) ||
|
||||
(isRunningAsClient() && protocolVersion.getProtocolSide() != ProtocolVersion.ProtocolSide.SERVER);
|
||||
public final boolean isRunningAsWebServer() {
|
||||
return protocolWebServer != null;
|
||||
}
|
||||
|
||||
public boolean isVersionSupported(ProtocolVersion targetVersion) {
|
||||
private boolean validateProtocolSide() {
|
||||
return
|
||||
(isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT) ||
|
||||
(isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_WEB) ||
|
||||
(isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_DNS) ||
|
||||
(isRunningAsClient() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL) ||
|
||||
|
||||
(isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB) ||
|
||||
(isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_WEB) ||
|
||||
(isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB_DNS) ||
|
||||
(isRunningAsWebServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL) ||
|
||||
|
||||
(isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.DNS) ||
|
||||
(isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.WEB_DNS) ||
|
||||
(isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.CLIENT_DNS) ||
|
||||
(isRunningAsDNSServer() && protocolVersion.getProtocolSide() == ProtocolVersion.ProtocolSide.ALL);
|
||||
}
|
||||
|
||||
public final boolean isVersionSupported(ProtocolVersion targetVersion) {
|
||||
return protocolVersion == targetVersion || protocolVersion.getCompatibleVersions().contains(targetVersion);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user