2025-09-20 21:51:02 +02:00
2025-09-20 19:55:44 +02:00
2025-09-20 09:10:37 +02:00
2025-09-19 20:20:51 +02:00
2025-09-20 21:51:02 +02:00
2025-09-20 21:14:12 +02:00

Open Autonomous Connection Protocol

This is the Protocol for our Open Autonomous Connection project.
You can easily implement this Protocol via Maven.
Feel free to join our Discord.

License Notice

This project (OAC) is licensed under the Open Autonomous Public License (OAPL).

Third-party components:

  • UnlegitLibrary is authored by the same copyright holder and is used here under a special agreement:
    While UnlegitLibrary is generally distributed under the GNU GPLv3,
    it is additionally licensed under OAPL exclusively for the OAC project.
    Therefore, within OAC, the OAPL terms apply to UnlegitLibrary as well.

Bugs/Problems

In progress

TODO

Maven

pom.xml

<dependency>
    <groupId>github.openautonomousconnection</groupId>
    <artifactId>protocol</artifactId>
    <version>VERSION</version>
</dependency>

Repository:

<repositories>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/open-autonomous-connection/protocol</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

Examples

Note: These examples are very basic

Server

import me.finn.unlegitlibrary.network.system.server.ConnectionHandler;
import me.openautonomousconnection.protocol.ProtocolBridge;
import me.openautonomousconnection.protocol.ProtocolSettings;
import me.openautonomousconnection.protocol.ProtocolVersion;
import me.openautonomousconnection.protocol.side.ProtocolServer;

public class Server extends ProtocolServer {

    public Server() throws IOException, InterruptedException {
        super(10);
    }

    public static void main(String[] args) {
        try {
            ProtocolBridge protocolBridge = new ProtocolBridge(ProtocolVersion.PV_1_0_0, new ProtocolSettings(), new Server());
            protocolBridge.getProtocolServer().setProtocolBridge(protocolBridge);
            protocolBridge.getProtocolServer().startServer();
        } catch (IOException | InterruptedException | InvocationTargetException | InstantiationException |
                 IllegalAccessException | NoSuchMethodException exception) {
            exception.printStackTrace();
        }
    }

    @Override
    public List<Domain> getDomains() throws SQLException {
        return List.of(); // Your method here to get all registered domains
    }

    @Override
    public void handleMessage(ConnectionHandler connectionHandler, String message) {
        System.out.println("Received message: " + message + " from client: " + connectionHandler.getClientID());
    }
}

Client

import me.openautonomousconnection.protocol.ProtocolBridge;
import me.openautonomousconnection.protocol.ProtocolSettings;
import me.openautonomousconnection.protocol.ProtocolVersion;
import me.openautonomousconnection.protocol.domain.Domain;
import me.openautonomousconnection.protocol.side.ProtocolClient;
import me.openautonomousconnection.protocol.utils.SiteType;

public class Client extends ProtocolClient {

    public static void main(String[] args) {
        try {
            ProtocolBridge protocolBridge = new ProtocolBridge(ProtocolVersion.PV_1_0_0, new ProtocolSettings(), new Client());
            protocolBridge.getProtocolClient().setProtocolBridge(protocolBridge);
            protocolBridge.getProtocolServer().startClient();
        } catch (IOException | InterruptedException | InvocationTargetException | InstantiationException |
                 IllegalAccessException | NoSuchMethodException exception) {
            exception.printStackTrace();
        }
    }

    @Override
    public void handleHTMLContent(SiteType siteType, Domain domain, String htmlContent) {
        System.out.println("Website html content received. This site is " + siteType.name);
        System.out.println(htmlContent); // Render content in a webview for example
    }

    @Override
    public void handleMessage(String message) {
        System.out.println("Received message: " + message);
    }
}
Description
The Protocol for Server and Client
Readme 541 KiB
Languages
Java 100%