From fd0c062aede9ae461686cacc1a3ccd567e39a2cd Mon Sep 17 00:00:00 2001 From: Finn Date: Mon, 3 Nov 2025 18:33:59 +0100 Subject: [PATCH] Initial commit --- .gitignore | 38 ++++++++++ .idea/.gitignore | 3 + .idea/copilot.data.migration.agent.xml | 6 ++ .idea/copilot.data.migration.ask.xml | 6 ++ .idea/copilot.data.migration.ask2agent.xml | 6 ++ .idea/copilot.data.migration.edit.xml | 6 ++ .idea/discord.xml | 7 ++ .idea/encodings.xml | 7 ++ .idea/misc.xml | 14 ++++ .idea/vcs.xml | 6 ++ LICENSE | 68 +++++++++++++++++ README.MD | 51 +++++++++++++ pom.xml | 76 +++++++++++++++++++ .../private/ca/ca_dns_89.1.219.73.key | 52 +++++++++++++ .../private/server/cert_dns_89.1.219.73.key | 28 +++++++ .../public/ca/ca_dns_89.1.219.73.pem | 31 ++++++++ .../public/ca/ca_dns_89.1.219.73.srl | 1 + .../public/server/cert_dns_89.1.219.73.crt | 26 +++++++ run/config.properties | 3 + .../dns/ClassicHandler.java | 31 ++++++++ .../dns/Listener.java | 21 +++++ .../openautonomousconnection/dns/Main.java | 35 +++++++++ .../openautonomousconnection/dns/Server.java | 64 ++++++++++++++++ 23 files changed, 586 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/copilot.data.migration.agent.xml create mode 100644 .idea/copilot.data.migration.ask.xml create mode 100644 .idea/copilot.data.migration.ask2agent.xml create mode 100644 .idea/copilot.data.migration.edit.xml create mode 100644 .idea/discord.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 LICENSE create mode 100644 README.MD create mode 100644 pom.xml create mode 100644 run/certificates/private/ca/ca_dns_89.1.219.73.key create mode 100644 run/certificates/private/server/cert_dns_89.1.219.73.key create mode 100644 run/certificates/public/ca/ca_dns_89.1.219.73.pem create mode 100644 run/certificates/public/ca/ca_dns_89.1.219.73.srl create mode 100644 run/certificates/public/server/cert_dns_89.1.219.73.crt create mode 100644 run/config.properties create mode 100644 src/main/java/org/openautonomousconnection/dns/ClassicHandler.java create mode 100644 src/main/java/org/openautonomousconnection/dns/Listener.java create mode 100644 src/main/java/org/openautonomousconnection/dns/Main.java create mode 100644 src/main/java/org/openautonomousconnection/dns/Server.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/.gitignore @@ -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 \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/copilot.data.migration.agent.xml b/.idea/copilot.data.migration.agent.xml new file mode 100644 index 0000000..4ea72a9 --- /dev/null +++ b/.idea/copilot.data.migration.agent.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/copilot.data.migration.ask.xml b/.idea/copilot.data.migration.ask.xml new file mode 100644 index 0000000..7ef04e2 --- /dev/null +++ b/.idea/copilot.data.migration.ask.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/copilot.data.migration.ask2agent.xml b/.idea/copilot.data.migration.ask2agent.xml new file mode 100644 index 0000000..1f2ea11 --- /dev/null +++ b/.idea/copilot.data.migration.ask2agent.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/copilot.data.migration.edit.xml b/.idea/copilot.data.migration.edit.xml new file mode 100644 index 0000000..8648f94 --- /dev/null +++ b/.idea/copilot.data.migration.edit.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..d8e9561 --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..001e756 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8f68c93 --- /dev/null +++ b/LICENSE @@ -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. \ No newline at end of file diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..f1f0d9f --- /dev/null +++ b/README.MD @@ -0,0 +1,51 @@ +# 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)](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 \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5047260 --- /dev/null +++ b/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + org.openautonomousconnection + DNSServer + 1.0-SNAPSHOT + + Open Autonomous Connection + https://open-autonomous-connection.org/ + + https://open-autonomous-connection.org/ + The default DNS-Server + + + 23 + 23 + UTF-8 + + + + + UnlegitDqrk + Open Autonomous Connection + https://open-autonomous-connection.org/ + https://unlegitdqrk.dev/ + + Owner + Head Developer + + + + Maple + Open Autonomous Connection + https://open-autonomous-connection.org/ + https://niumaple.carrd.co/ + + Owner + Head Developer + + + + + + Issue Tracker + https://repo.open-autonomous-connection.org/open-autonomous-connection/DNSServer/issues + + + + + Open Autonomous Public License + https://repo.open-autonomous-connection.org/Open-Autonomous-Connection/OAPL/ + repo + + + + + + oac + https://repo.open-autonomous-connection.org/api/packages/open-autonomous-connection/maven + + true + + + + + + + org.openautonomousconnection + protocol + 1.0.0-BETA.7 + + + \ No newline at end of file diff --git a/run/certificates/private/ca/ca_dns_89.1.219.73.key b/run/certificates/private/ca/ca_dns_89.1.219.73.key new file mode 100644 index 0000000..197784e --- /dev/null +++ b/run/certificates/private/ca/ca_dns_89.1.219.73.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +c5RF/V4VtgM7jggSLlUUgO0L2/Hw5bM= +-----END PRIVATE KEY----- diff --git a/run/certificates/private/server/cert_dns_89.1.219.73.key b/run/certificates/private/server/cert_dns_89.1.219.73.key new file mode 100644 index 0000000..144cadf --- /dev/null +++ b/run/certificates/private/server/cert_dns_89.1.219.73.key @@ -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----- diff --git a/run/certificates/public/ca/ca_dns_89.1.219.73.pem b/run/certificates/public/ca/ca_dns_89.1.219.73.pem new file mode 100644 index 0000000..bf6ae1b --- /dev/null +++ b/run/certificates/public/ca/ca_dns_89.1.219.73.pem @@ -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----- diff --git a/run/certificates/public/ca/ca_dns_89.1.219.73.srl b/run/certificates/public/ca/ca_dns_89.1.219.73.srl new file mode 100644 index 0000000..c10dfa6 --- /dev/null +++ b/run/certificates/public/ca/ca_dns_89.1.219.73.srl @@ -0,0 +1 @@ +5FB2F5A2CA8357D37C84CC406B5F81617348EB58 diff --git a/run/certificates/public/server/cert_dns_89.1.219.73.crt b/run/certificates/public/server/cert_dns_89.1.219.73.crt new file mode 100644 index 0000000..75d1018 --- /dev/null +++ b/run/certificates/public/server/cert_dns_89.1.219.73.crt @@ -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----- diff --git a/run/config.properties b/run/config.properties new file mode 100644 index 0000000..6cc7bee --- /dev/null +++ b/run/config.properties @@ -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 diff --git a/src/main/java/org/openautonomousconnection/dns/ClassicHandler.java b/src/main/java/org/openautonomousconnection/dns/ClassicHandler.java new file mode 100644 index 0000000..ac65573 --- /dev/null +++ b/src/main/java/org/openautonomousconnection/dns/ClassicHandler.java @@ -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) { + + } +} diff --git a/src/main/java/org/openautonomousconnection/dns/Listener.java b/src/main/java/org/openautonomousconnection/dns/Listener.java new file mode 100644 index 0000000..825f007 --- /dev/null +++ b/src/main/java/org/openautonomousconnection/dns/Listener.java @@ -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!"); + } +} diff --git a/src/main/java/org/openautonomousconnection/dns/Main.java b/src/main/java/org/openautonomousconnection/dns/Main.java new file mode 100644 index 0000000..aed2689 --- /dev/null +++ b/src/main/java/org/openautonomousconnection/dns/Main.java @@ -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); + } + + } +} \ No newline at end of file diff --git a/src/main/java/org/openautonomousconnection/dns/Server.java b/src/main/java/org/openautonomousconnection/dns/Server.java new file mode 100644 index 0000000..47a20f5 --- /dev/null +++ b/src/main/java/org/openautonomousconnection/dns/Server.java @@ -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 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); + } +}