summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2022-07-17 11:05:36 -0700
committerTrumeet <yuuta@yuuta.moe>2022-07-17 11:05:36 -0700
commit20d748e6a13e31bb5bae77651e02f039a6e061c5 (patch)
treec221763deac4b58c6f7d1e26a705fb6ba57272dd
parentcd0e56f122d34b4e3a83b190a2b027293011e6df (diff)
downloadwww-20d748e6a13e31bb5bae77651e02f039a6e061c5.tar
www-20d748e6a13e31bb5bae77651e02f039a6e061c5.tar.gz
www-20d748e6a13e31bb5bae77651e02f039a6e061c5.tar.bz2
www-20d748e6a13e31bb5bae77651e02f039a6e061c5.zip
Add Acron
-rw-r--r--acron/index.html53
-rw-r--r--index.html2
2 files changed, 55 insertions, 0 deletions
diff --git a/acron/index.html b/acron/index.html
new file mode 100644
index 0000000..81198bd
--- /dev/null
+++ b/acron/index.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Acron</title>
+ <link rel="stylesheet" href="/milligram.min.css">
+ </head>
+ <body>
+ <h1>Acron - Another rcon</h1>
+ <p>A rewrite of Minecraft rcon that uses WebSocket and JSON to manage the server.</p>
+ <p><b><a href="https://git.yuuta.moe/Minecraft/acron.git/about/">Learn more</a> or <a href="https://git.yuuta.moe/Minecraft/acron.git/">View source</a>.</b></p>
+ <h2>Problems with rcon</h2>
+ <ul>
+ <li>[Security] No authorization: All rcon clients are hardcoded with OP level 4 in the Minecraft source code. There are also no permission control, giving any faulty or even malicious client full control over the server.</li>
+ <li>[Security] Simple authentication: All clients are sharing the same secret, making the secret easy to leak and granting attackers unlimited access to the server.</li>
+ <li>[Efficiency] Rcon executes commands in a blocking manner. The server joins the main thread and waits for the command to complete before reading more from the client.</li>
+ <li>[Limit] Rcon does not support pushing server messages to the client. This includes player messages, death messages, server logs, etc. A lot of use cases need such information.</li>
+ <li>[Limit] Rcon has a fixed command length. Although it is not likely for a command to exceed this limit, it still restricts the use cases of rcon.</li>
+ <li>[Limit] Rcon commands are hard coded to run at the spawn point of Overworld. It is impossible to execute commands in other positions or dimensions if the command does not support so itself.</li>
+ <li>[Limit] No Unix domain socket support. Unix domain socket is a great way to do localhost IPC and controlling access using Unix user and groups. However, rcon is forced to listen on a TCP address and port.</li>
+ <li>[Performance] Minecraft creates a new thread per connection accepted, and it blocks for input. Using a thread pool or async IO is much more performant.</li>
+ <li>[Security] Rcon does not support TLS. It is just using plain TCP.</li>
+ </ul>
+ <h2>Problems Acron solved</h2>
+ <ul>
+ <li>[Security] Authentication and Authorization: With Acron, administrators are able to specify unique tokens for each client, and it is also possible to easily define the commands clients are permitted to execute using regex rules.</li>
+ <li>[Efficiency] Acron uses a command queue to schedule commands. Clients need to specify an ID, and Acron will return the result with the same ID once the command is done. In the meantime, clients can enqueue more commands.</li>
+ <li>[Limit] Server push: Acron will send player messages, death messages of living entities, player join / leave messages, and server lag warnings to the client. Acron also classifies the messages, so clients do not need to parse them manually.</li>
+ <li>[Limit] Command length: Acron does not limit command length.</li>
+ <li>[Limit] Locations and other configurations: Acron clients can specify the world, position, rotation, and name for each command they execute, or they can set a per-connection default.</li>
+ <li>[Limit] Unix domain socket: Sorry, currently Acron does not support Unix domain socket either. Unix domain sockets will be available in later versions.</li>
+ <li>[Performance] Acron uses Netty, which is built-in in Minecraft, to performance async IO using thread pools.</li>
+ <li>[Security] TLS: Although Acron does not support TLS itself, it is using WebSocket, which gives the choice of adding a reverse proxy with TLS support.</li>
+ </ul>
+ <h2>Technical Specification</h2>
+ <p>Acron is based on:</p>
+ <ul>
+ <li>WebSocket: Instead of designing a Layer 5 protocol, Acron chooses WebSocket to make the implementation of server and client easier. Moreover, WebSocket has a wide range of support compared to plain TCP sockets.</li>
+ <li>JSON: Although JSON is slow and schema-less, it comes with no addition dependencies as a Minecraft mod because Minecraft depends on GSON internally.</li>
+ <li>Netty: The WebSocket server is based on Netty because it is built-in in the Minecraft server.</li>
+ <li>GSON: Acron uses GSON to deserialize / serialize JSON since GSON is also a Minecraft dependency.</li>
+ </ul>
+ <h2>Learn More</h2>
+ <p><b>Get started by reading:</b></p>
+ <ul>
+ <li><a href="https://git.yuuta.moe/Minecraft/acron.git/about/">The complete documentation</a></li>
+ <li><a href="https://git.yuuta.moe/Minecraft/acron.git/about/#installation">How to install</a></li>
+ <li><a href="https://git.yuuta.moe/Minecraft/acron.git/">The source code</a></li>
+ </ul>
+ <p>Licensed under GPL v2.</p>
+ </body>
+</html>
+
diff --git a/index.html b/index.html
index 7e25e2e..80e0d5e 100644
--- a/index.html
+++ b/index.html
@@ -37,6 +37,7 @@
<a href="https://yuuta.network/">YuutaNet</a>
<p>Projects</p>
<a href="minecraft-pacman">Minecraft-Pacman</a>
+ <a href="acron">Acron</a>
<a href="projs">Others</a>
<p>Contact</p>
<a href="#"><code>eXV1dGFAeXV1dGEubW9lCg==</code></a>
@@ -62,6 +63,7 @@
<p>Or, you could checkout my highlighted products list:</p>
<ul>
<li><a href="minecraft-pacman/">Minecraft Pacman: Manage Minecraft and Fabric versions using pacman(1)!</a></li>
+ <li><a href="acron/">Acron: A WebSocket + JSON based replacement for Minecraft rcon.</a></li>
<li>I'm keep adding projects here. Some not distributable projects (e.g. internal services or servers) are not listed.</li>
</ul>
<h2 id="contact">Contact</h2>