Initial commit

This commit is contained in:
Finn
2025-11-03 18:33:59 +01:00
commit fd0c062aed
23 changed files with 586 additions and 0 deletions

38
.gitignore vendored Normal file
View File

@@ -0,0 +1,38 @@
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

3
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

6
.idea/copilot.data.migration.agent.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AgentMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

6
.idea/copilot.data.migration.ask.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AskMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Ask2AgentMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

6
.idea/copilot.data.migration.edit.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EditMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

7
.idea/discord.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

7
.idea/encodings.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

14
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="23" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

68
LICENSE Normal file
View File

@@ -0,0 +1,68 @@
Open Autonomous Public License (OAPL) v1.0
Copyright (C) 2024-2025 Open Autonomous Connection (OAC)
Projekt-URL: https://open-autonomous-connection.org/
---
1. Nutzungsrechte
Diese Software darf sowohl für private als auch kommerzielle Zwecke genutzt werden. Die Nutzung ist unter den Bedingungen dieser Lizenz gestattet.
---
2. Verkaufsverbot
Es ist nicht gestattet, diese Software oder abgeleitete Werke davon zu verkaufen oder kommerziell zu vertreiben.
Dies umfasst auch jede Form der direkten oder indirekten Monetarisierung der Software selbst.
Es ist gestattet, die Software im Rahmen von Dienstleistungen kommerziell zu nutzen, solange der Quellcode und die Originaldateien kostenlos verfügbar bleiben und nicht gegen Entgelt verkauft oder monetarisiert werden.
Jede Form der Monetarisierung der Software selbst, wie der Verkauf oder die Lizenzierung der Software, ist untersagt.
---
3. Offenlegung des Quellcodes
Die Software ist dauerhaft quelloffen. Der vollständige Quellcode muss bei jeder Verbreitung, auch in geänderter Form, mitgeliefert oder öffentlich zugänglich gemacht werden.
Jede Version, auch veränderte, muss einen klar sichtbaren Verweis auf das Originalprojekt enthalten:
→ https://github.com/Open-Autonomous-Connection/
---
4. Weitergabe & Lizenzvererbung
Die Software darf frei kopiert, verteilt und verändert werden, unter folgenden Bedingungen:
- Die Original-Lizenz (OAPL v1.0) muss vollständig und unverändert mitgeliefert werden.
- Alle Änderungen am Quellcode müssen klar kenntlich gemacht werden (z.B. durch Kommentare oder Änderungsprotokolle).
- Abgeleitete Werke müssen unter derselben Lizenz (OAPL v1.0) veröffentlicht werden, es sei denn, die Lizenzierung erfolgt in einem Kontext,
in dem dies durch geltendes Recht oder technische Einschränkungen nicht möglich ist. In diesem Fall muss der Quellcode der Änderungen weiterhin offen und zugänglich gemacht werden.
- Es dürfen keine zusätzlichen Einschränkungen oder Bedingungen auferlegt werden, die den Bedingungen dieser Lizenz widersprechen.
---
5. Keine proprietäre Nutzung
Die Software oder ihre abgeleiteten Werke dürfen nicht in proprietäre Software integriert oder unter einer Lizenz weitergegeben werden, die die Bedingungen dieser Lizenz einschränkt oder die Offenlegung des Quellcodes unterlässt.
---
6. Keine Veränderung dieser Lizenz
Diese Lizenz darf nicht verändert oder durch andere Lizenzen ersetzt werden. Eine Modifikation oder Re-Lizenzierung ist ausdrücklich untersagt.
---
7. Haftungsausschluss ("as-is")
DIE SOFTWARE WIRD 'WIE BESEHEN' BEREITGESTELLT, OHNE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIEN, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF GARANTIEN DER MARKTGÄNGIGKEIT,
DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER. SOWEIT ES GESCHÄFTSRECHTLICH ZULÄSSIG IST,
WIRD DIE HAFTUNG DER AUTOREN FÜR SCHÄDEN ODER VERLUSTE AUFGRUND DER NUTZUNG DER SOFTWARE AUSGESCHLOSSEN.
---
8. Salvatorische Klausel
Sollte eine Bestimmung dieser Lizenz als unwirksam, undurchsetzbar oder nicht durchsetzbar erklärt werden,
bleibt die Gültigkeit der übrigen Bestimmungen davon unberührt. In diesem Fall wird die unwirksame Klausel durch eine wirksame und durchsetzbare Bestimmung ersetzt,
die dem ursprünglichen wirtschaftlichen Zweck der unwirksamen Bestimmung am nächsten kommt.
---
Ende der Lizenzbedingungen.
Additional Notice regarding UnlegitLibrary:
UnlegitLibrary is primarily distributed under the GNU GPLv3.
For the purposes of the Open Autonomous Connection (OAC) project,
the author has also licensed UnlegitLibrary under the Open Autonomous Public License (OAPL).
Within OAC, the OAPL terms apply to UnlegitLibrary.

51
README.MD Normal file
View File

@@ -0,0 +1,51 @@
# Open Autonomous Connection Protocol
This is the Protocol for our Open Autonomous Connection project.<br />
You can easily implement this Protocol via Maven.<br />
Feel free to join our Discord.
<br />
## License Notice
This project (OAC) is licensed under the [Open Autonomous Public License (OAPL)](https://repo.open-autonomous-connection.org/open-autonomous-connection/OAPL/).
**Third-party components:**
- *UnlegitLibrary* is authored by the same copyright holder and is used here under a special agreement:
While [UnlegitLibrary](https://repo.unlegitdqrk.dev/UnlegitDqrk/unlegitlibrary/) is generally distributed under the [GNU GPLv3](https://repo.unlegitdqrk.dev/UnlegitDqrk/unlegitlibrary/src/branch/master/LICENSE),
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
## Certificate generation for NetworkSystem
### Creating Root-CA:
````
openssl genrsa -out myCA.key 4096
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 3650 -out myCA.pem
myCA.key = private Key for CA (keep secret)
myCA.pem = public Root-Certificate for signing server and client certificates
````
### Creating (DNS-/Web-)Server Certificate based on Root-CA:
````
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out server.crt -days 825 -sha256
server.key = private Key for Server
server.crt = Server-Certificate signed by Root-CA
````
### Optional: Creating Client Certificate based on Root-CA:
````
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr
openssl x509 -req -in client.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out client.crt -days 825 -sha256
client.key = private Key for Client
client.crt = Client-Certificate signed by Root-CA
````
> [!NOTE]
> All certificate registrars require the Root CA to issue a server/client certificate

76
pom.xml Normal file
View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.openautonomousconnection</groupId>
<artifactId>DNSServer</artifactId>
<version>1.0-SNAPSHOT</version>
<organization>
<name>Open Autonomous Connection</name>
<url>https://open-autonomous-connection.org/</url>
</organization>
<url>https://open-autonomous-connection.org/</url>
<description>The default DNS-Server</description>
<properties>
<maven.compiler.source>23</maven.compiler.source>
<maven.compiler.target>23</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<developers>
<developer>
<name>UnlegitDqrk</name>
<organization>Open Autonomous Connection</organization>
<organizationUrl>https://open-autonomous-connection.org/</organizationUrl>
<url>https://unlegitdqrk.dev/</url>
<roles>
<role>Owner</role>
<role>Head Developer</role>
</roles>
</developer>
<developer>
<name>Maple</name>
<organization>Open Autonomous Connection</organization>
<organizationUrl>https://open-autonomous-connection.org/</organizationUrl>
<url>https://niumaple.carrd.co/</url>
<roles>
<role>Owner</role>
<role>Head Developer</role>
</roles>
</developer>
</developers>
<issueManagement>
<system>Issue Tracker</system>
<url>https://repo.open-autonomous-connection.org/open-autonomous-connection/DNSServer/issues</url>
</issueManagement>
<licenses>
<license>
<name>Open Autonomous Public License</name>
<url>https://repo.open-autonomous-connection.org/Open-Autonomous-Connection/OAPL/</url>
<distribution>repo</distribution>
</license>
</licenses>
<repositories>
<repository>
<id>oac</id>
<url>https://repo.open-autonomous-connection.org/api/packages/open-autonomous-connection/maven</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.openautonomousconnection</groupId>
<artifactId>protocol</artifactId>
<version>1.0.0-BETA.7</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
c5RF/V4VtgM7jggSLlUUgO0L2/Hw5bM=
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCGKkc5obUKeeX8
gDZff4YUoKIoWHMkdxNxpt2UjR7I0TcFVXbOdpEFG1jBLrlcPvTs1LaJ7exQ9657
wma9OMzhn6Lmtp6ecahKGMpnMHSUjFUe45nRtNur6g5i5T5rYcnzaxJBaSxzcV/r
hI/KXRIbxEh+w7/X39wN3ze6EKdQWgHkv7Wsw9R5aGQBtWOQLnj+5wnveJDl3te+
B4oQ60fokW6Dt4RRe4u/YRyu+2VvG8x3RF/OQpDz4qFZHO6hGcS+hbNRyiIkhvdB
a8Qqu1bbDyVc80bkiiPDTO/FQVCxalDMTF7N00ng80OelLs4T+cwR/KQO9NWwgzM
6gJ38aplAgMBAAECggEAEQE5ztWunxnNKyBLA/ajVWj4tJllWqlXBxApxILQdI6D
5UKsUMXZYqbRLIcSCl2WaJAbZMcJrUd/T4NXx0L0QOKdYJWj7BwmwuF6gfKzzAIv
Zb9eRySftR3w3dsFetHFqXsYML82WZl0mWLPYMxEF83cjGieH6vpdb6ljwk+U6It
4WkyxUPojBsTdhmc+T1wI8NpegeRvNy/7euXZXaoo//Rf/fBUFRfSvVfDSMcKDIq
H4dcMAFc2ZHVE2wUuwqLbNbI8L/yuBgP5CHxnHSqG5nZQNMX3hg5winnAyp/iwnR
VA072TeuxqLx68qHEMhhZqO6Te63VtgBpYPapGT4UQKBgQC6Hwq9vXeL7JWsiZqX
Suh8kj/puy/CSeuWBopJVBJkGjyP3DDKtoJqEeOeMajL8rSW3RaCUdv4FvilGfc4
9zTuJBSZTMpoUaCpuX1k6jYOtwcMe17KdJB7Sr1bjKef3VdOpSA+pG3lElz1sH7t
sG6hdIx3mhJB/HpYKGN4A4h8GQKBgQC4iX/E1mvdDVnXcE4cFN/exSYQFmtNDBYe
o6QbLsjEqISAOxipLRTZhQjvePzSD4Y4F7jKqNcvK6LZnQiE43C6VImMT8UT7C2a
ht96l3/bDEGEls1HrzqVVepCWQGnKltkOU69HDRYXJCGJwZ5hfx66UtsXR0ICSNH
EHBoZE3qLQKBgAx4Xfjeg+79F/4qbhAq9a67ActAPm/vEfjIUWWeW2kXlO0ynJZI
ai5/KlgEDcI0bcMZ5xMuNuXFbD1rovPPJF28TyECUyFwLqqQggVL5/lObAt7DJvV
+YQ5OryyjNyaMOpVB/cKf050z4OqoqZ8Rr1MmMi+qvB+4RedBSUaX3+pAoGACwbM
R6q4T0EY+TKQuETXC6ykFZoBV109hR8qEyW8gWPAZxkg5Br5f/XfDtAf6z1aO8fP
Fuz3zq3A0Vf8xlQAzGF4xpWNpR8bqnwcpmqfDSuyToXkRkBGM94qXUSMQLzbMSXr
eolQ52bAjAOQ83n6GC4Qf60gqvZA0WI+FT7JGRECgYAi54HhK7HFogAlX58EX77h
YHL5KHBlG+l8v4amIKvD0JclYylwyLhYkmIM+T4mh8I+T1nabcNeNWit+CYoLwQ8
A3P0ij67TkEV3Ud7KKOtYty+getkM9/hwm14LlMzfLZKay9HCsbb5E2TgmShF68F
VtECuunYyfN4wJSE0aWRPg==
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIUQ67NCnk5KBqDD7fHdzKVi+AfRR8wDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTA5MjExMTU2NTlaFw0zNTA5
MTkxMTU2NTlaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQC9Uu9/sNevUGr1k6LI5jdI/HAbsgaS2eFat0mdPKhD
0IrDMozhZ1zDh6w/4iOhNC6ypwy0+1l/r6cT6xL2s3x+DxoaeskMpRD4kd97cE7Y
rvxXMSwFj5exVnyps03QXFQigZryW5z26xyFJw3i6XiHkhpz1fwMKBXynkUROy5I
uZu5oTsNko+dcjZWtOI9Tnf0HqmEW8JrhpjwJnZX8HBs0Ydd+gr7/nITLF6Eq0Gd
1uRupsAOSsZfdXofqgxfVy5CsAyfK/163cnLBZ5ynKMzqyhxS/9wLQfBLq6499e8
w5+5/WHPIZLFeVOfdunudEFmE5aQwjnNBESIEyaaYlhXQdKhTnAU2JYEg4pnp43D
XMxsPeDY/OXDoQAJbuj1ip6jFwIyt8cj6uGvdiFrY1Nqa1Ua2YrN0xRvZ6WioYyr
NO7TOkgCC90aop7gxps/ZgYTl2VsTzAtDZXYmKjc+ZNx5F+h5gLhJMNTbzQ2KweE
/7/5ghjHEwc2Z28gh5wOkmK7knuyv1mv4s5ZUfOXs+Xv0sI4fZiNKyaESoyh4zoH
PfUpTMhYPjzpa5g6PDaxs2ewq7Zr0Lvjk12p+vM6xUeO70RQAK8tftoHmTxZDfh7
NxMCnViD1q/2qRLOlSmOyxmH+hmy/4eNkROjMn8pyDHPEC3kg0ZuvS/Zutnm+WkX
uQIDAQABo1MwUTAdBgNVHQ4EFgQUEZqY1o2roD7YNKIYE7V/odSz1uwwHwYDVR0j
BBgwFoAUEZqY1o2roD7YNKIYE7V/odSz1uwwDwYDVR0TAQH/BAUwAwEB/zANBgkq
hkiG9w0BAQsFAAOCAgEAAV1Mafun3XwC2cs4Xgq1vzJw69I24y8dXm45qFdLl5Vv
hkIecwDm2+Ongg82sPPmR1TwsRgdUytywal5nsa1aH/v70MJ7Ic5pBIXdv54kZ8v
qgaItmHF+twb+aqFz/NY0BMv7nNc2MyYEyDwbJUIGwGt+yOlQfHUIwNc+PvVL6Sn
mkm7//EIfiU3HxmusCnbYC+9kmLbeds10qDzTNIHP4ffNAFgnMgauNID8X9RoPBT
TVqLjD5WDHridLMF8n0m18cp2MqV33gXbg4pT/rYvh40p9jJuGDJbcrn5WtKvbMn
lm27oI6bcwKF2i+VHRBxW/c/DZaG0QKo4PaDCd/kF2ix1ymkFG4MtvHmu0Q3SLXi
p7fTL4WZSEUPXe/E7fUuPwof54auXLYNhSR9HJo0ZS2R0S9pursBkBEXTXyiG8T+
iUq4VtBny1Ylr2rJ8Qr1TiaB5ud/IeEv70uDgA9XyUhikfs7t5bYrqdXjANtCvZY
j322+I3wyDdosu2Z1Lrn2w95ZyJhc/rluftc1lKnxgYwKndEJfBlhn8tpHlk2J9T
rPqAezvNhSXH1W6G7WZAvHfdfJahLDhfJ15YQcqqPK+DXEaJeOnUompV+/MEaEOE
3LwN4B78mTgVOcabMeo1NN/2nGObaOm/62t+3B9NwcUi9q1LT/oifLVBh8bEFug=
-----END CERTIFICATE-----

View File

@@ -0,0 +1 @@
5FB2F5A2CA8357D37C84CC406B5F81617348EB58

View File

@@ -0,0 +1,26 @@
-----BEGIN CERTIFICATE-----
MIIEWjCCAkKgAwIBAgIUX7L1osqDV9N8hMxAa1+BYXNI61gwDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTA5MjExMTU3MzFaFw0yNzEy
MjUxMTU3MzFaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCGKkc5obUKeeX8gDZff4YUoKIoWHMkdxNxpt2UjR7I
0TcFVXbOdpEFG1jBLrlcPvTs1LaJ7exQ9657wma9OMzhn6Lmtp6ecahKGMpnMHSU
jFUe45nRtNur6g5i5T5rYcnzaxJBaSxzcV/rhI/KXRIbxEh+w7/X39wN3ze6EKdQ
WgHkv7Wsw9R5aGQBtWOQLnj+5wnveJDl3te+B4oQ60fokW6Dt4RRe4u/YRyu+2Vv
G8x3RF/OQpDz4qFZHO6hGcS+hbNRyiIkhvdBa8Qqu1bbDyVc80bkiiPDTO/FQVCx
alDMTF7N00ng80OelLs4T+cwR/KQO9NWwgzM6gJ38aplAgMBAAGjQjBAMB0GA1Ud
DgQWBBTW7Nng9W84V+q0TknoTempPZo2KjAfBgNVHSMEGDAWgBQRmpjWjaugPtg0
ohgTtX+h1LPW7DANBgkqhkiG9w0BAQsFAAOCAgEAguDRKxW8QFV7fJlzAgzjwsBu
97Bk5IsmcIU7sOlmOFYZAG0hwqfuvzU/Tv48tuXOvGQsJtdNSfe4qybd5HnkxmTs
ZmqzCsIh9P4PL/KrKTCykEP935468wg/X9QkykBOJx2zOgBEllxo33BNG4ie6R3H
tYy/1y/hsGfi4Ma2jqBaPfblI86t9VoKiPqqKqFgGk32F4NqIJ2hMKxSypznHIC7
IPikKx9Gt8EpwT+ytJKOnd/A7nBEiaDw5ubcR1s6pmlcGLAE1+A9TX2ncRUcvMI4
w2M5i7X/Vz2zQiPEWmQliYDG1ZFeD1dth973muM6H6NvFyXvEzzRZl5K5DwAcgqA
uMvEKDiDPwKROBTzjq3WIHBe49fz96Fpxld5JxH3RhC2PzIYjUquU2P8Ah6SN6SZ
+Mf/61QxNInnEcxNjknGhcfiyhoqu2B+1/N5cfpXyBfgTQfVzV3HiUvAHzcza9yp
mnPrrxRodkXwncMJNJYTr36yTyZPxC0TZUycvOPwEfBQ1vESAeiJ7+QgFGFu0lgQ
1XAJVpCfHpDrkT184/pszyHHzydWvP7GcrPgJVNlXbMvpenhm2QTCaft5TUDj9+m
8quLjm+bj0OQq1Fmv/OlWvycC5fxnYA0JlRDz56QPHkEL7aZ/+apZhB6Eb77/etv
A5go7PJCZ9vnblPW/HE=
-----END CERTIFICATE-----

3
run/config.properties Normal file
View File

@@ -0,0 +1,3 @@
#Sat Oct 04 01:25:22 CEST 2025
server.site.info=DNS-SERVER INFO SITE IP
server.site.register=SERVER IP TO DNS-FRONTENT WEBSITE

View File

@@ -0,0 +1,31 @@
package org.openautonomousconnection.dns;
import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient;
import org.openautonomousconnection.protocol.versions.v1_0_0.classic.handlers.ClassicHandlerDNSServer;
import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_Domain;
import org.openautonomousconnection.protocol.versions.v1_0_0.classic.objects.Classic_RequestDomain;
import org.openautonomousconnection.protocol.versions.v1_0_0.classic.utils.Classic_ProtocolVersion;
import java.sql.SQLException;
public class ClassicHandler extends ClassicHandlerDNSServer {
@Override
public void handleMessage(ConnectedProtocolClient client, String message, Classic_ProtocolVersion protocolVersion) {
}
@Override
public Classic_Domain getDomain(Classic_RequestDomain requestDomain) throws SQLException {
return null;
}
@Override
public Classic_Domain ping(Classic_RequestDomain requestDomain) throws SQLException {
return null;
}
@Override
public void unsupportedClassicPacket(String className, Object[] content, ConnectedProtocolClient client) {
}
}

View File

@@ -0,0 +1,21 @@
package org.openautonomousconnection.dns;
import dev.unlegitdqrk.unlegitlibrary.command.events.CommandExecutorMissingPermissionEvent;
import dev.unlegitdqrk.unlegitlibrary.command.events.CommandNotFoundEvent;
import dev.unlegitdqrk.unlegitlibrary.event.EventListener;
import org.openautonomousconnection.protocol.ProtocolBridge;
public class Listener extends EventListener {
@dev.unlegitdqrk.unlegitlibrary.event.Listener
public void onCommandNotFound(CommandNotFoundEvent event) {
StringBuilder argsBuilder = new StringBuilder();
for (String arg : event.getArgs()) argsBuilder.append(arg).append(" ");
ProtocolBridge.getInstance().getLogger().error("Command '" + event.getName() + argsBuilder.toString() + "' not found!");
}
@dev.unlegitdqrk.unlegitlibrary.event.Listener
public void onMissingCommandPermission(CommandExecutorMissingPermissionEvent event) {
ProtocolBridge.getInstance().getLogger().error("You do not have enough permissions to execute this command!");
}
}

View File

@@ -0,0 +1,35 @@
package org.openautonomousconnection.dns;
import dev.unlegitdqrk.unlegitlibrary.command.CommandExecutor;
import dev.unlegitdqrk.unlegitlibrary.command.CommandManager;
import dev.unlegitdqrk.unlegitlibrary.command.CommandPermission;
import dev.unlegitdqrk.unlegitlibrary.utils.Logger;
import org.openautonomousconnection.protocol.ProtocolBridge;
import org.openautonomousconnection.protocol.ProtocolSettings;
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
import java.io.File;
import java.io.IOException;
import java.security.cert.CertificateException;
import java.util.Scanner;
public class Main {
private static final CommandPermission PERMISSION_ALL = new CommandPermission("all", 1);
private static final CommandExecutor commandExecutor = new CommandExecutor("DNS", PERMISSION_ALL) {};
private static CommandManager commandManager;
public static void main(String[] args) throws Exception {
ProtocolSettings settings = new ProtocolSettings();
new ProtocolBridge(new Server(), settings, ProtocolVersion.PV_1_0_0_BETA, new File("logs"));
ProtocolBridge.getInstance().setClassicHandlerDNSServer(new ClassicHandler());
commandManager = new CommandManager(ProtocolBridge.getInstance().getProtocolSettings().eventManager);
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println(commandExecutor.getName() + "> ");
String line = scanner.nextLine();
commandManager.execute(commandExecutor, line);
}
}
}

View File

@@ -0,0 +1,64 @@
package org.openautonomousconnection.dns;
import org.openautonomousconnection.protocol.ProtocolBridge;
import org.openautonomousconnection.protocol.side.dns.ConnectedProtocolClient;
import org.openautonomousconnection.protocol.side.dns.ProtocolDNSServer;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.DNSResponseCode;
import org.openautonomousconnection.protocol.versions.v1_0_0.beta.Domain;
import java.io.File;
import java.io.IOException;
import java.security.cert.CertificateException;
import java.util.List;
public class Server extends ProtocolDNSServer {
/**
* Constructs a ProtocolDNSServer with the specified configuration file.
*
* @throws IOException If an I/O error occurs.
* @throws CertificateException If a certificate error occurs.
*/
public Server() throws IOException, CertificateException {
super(new File("config.properties"));
}
@Override
public List<Domain> getDomains() {
return List.of();
}
@Override
public String getDomainDestination(Domain domain) {
return "";
}
@Override
public String getSubnameDestination(Domain domain, String subname) {
return "";
}
@Override
public String getTLNInfoSite(String topLevelName) {
return "";
}
@Override
public DNSResponseCode validateDomain(Domain requestedDomain) {
if (!requestedDomain.getProtocol().equalsIgnoreCase("oac")) return DNSResponseCode.RESPONSE_INVALID_REQUEST;
return DNSResponseCode.RESPONSE_DOMAIN_FULLY_NOT_EXIST;
}
@Override
public void validationPacketSendFailed(Domain domain, ConnectedProtocolClient client, Exception exception) {
ProtocolBridge.getInstance().getLogger().exception("Failed to send ValidationPacket. (" +
"Domain: " + domain.getProtocol() + "." + (domain.hasSubname() ? domain.getSubname() : "") + "." + domain.getTopLevelName() + "/" + domain.getPath() + "?" + domain.getQuery() + "#" + domain.getFragment() + ";" +
";Client: " + client.getConnectionHandler().getClientID() + ")", exception);
}
@Override
public void domainDestinationPacketFailedSend(ConnectedProtocolClient client, Domain domain, DNSResponseCode validationResponse, Exception exception) {
ProtocolBridge.getInstance().getLogger().exception("Failed to send DomainDestinationPacket. (" +
"Domain: " + domain.getProtocol() + "." + (domain.hasSubname() ? domain.getSubname() : "") + "." + domain.getTopLevelName() + "/" + domain.getPath() + "?" + domain.getQuery() + "#" + domain.getFragment() + ";" +
"Validation response: " + validationResponse + ";Client: " + client.getConnectionHandler().getClientID() + ")", exception);
}
}