If you keep an eye on my GitHub repo, you’ll have noticed that CWSRestart and CWSWeb, that I just finished the basic player identification for CWSWeb and CWSRestart. This was the next big feature for the project, that I wanted to get out of the door. Now the MITM server is finally integrated into CWSRestart and CWSWeb.
The new version of CWSRestart will allow you to import presets. This can help you to deploy settings to a larger number of PCs. Another case where presets are useful are custom servers. Presets can be imported via the CWSProtocol. Or you can copy a preset into the preset subfolder, to load it automatically.
Presets are simple XML files. A sample preset would look like this:
<?xml version="1.0" encoding="utf-8" ?> <!-- This is a sample preset file that can be used to set settings in CWSRestart --> <Preset Name="CubeWorldMITM"> <Server Port="12345" Location="C:\Test\Server.exe" Process="Server" DoNotRedirectOutput="false" BypassSendQuit="false"> <Checks> <Check Name="Internet" Enabled="True" /> <Check Name="LAN" Enabled="false" /> <Check Name="Loopback" Enabled="True" /> </Checks> </Server> <AdditionalProcesses> <Process Process="Notepad" /> <Process Process="Calc" /> </AdditionalProcesses> </Preset>
As you can see, the structure is pretty self explaining. The only required element is the root element
Preset with the
Name attribute. Everything else is purely optional. The upcoming...
The MITM was pretty much a tool on its own until now. So let’s discuss the future plans of the MITM server. The main goal was to identify CubeWorld player names. And currently I think it does that pretty well and pretty stable. As a byproduct of the name resolving, we also retreive the level so you can restrict server access to players within a certain level. I don’t really go much further command wise. Theoretically the server can parse any package - we could even manipulate the players position, health,… - but I don’t think that this functionality is needed by the MITM users.
If you ever looked at the CWSRestart code, you might have noticed that every settings class had a fairly good amount of copy-and-pasted Spaghetti code. So I took the time to abstract the config loading into its own class, that can either be inherited or instantiated, to save and load configuration files. Let's take a look on how to create such a class.
As you might have noticed, things on this website have changed a little bit. I decided to move to a static blog system, called Jekyll. Hand in hand with the transfer to Jekyll, I decided it was time to clean up the page a little bit. I created a new template using the CSS framework Foundation. It doesn’t look really unique, but I think it is sufficient for now. Jekyll allows me, to manage content more easily. The page itself is still hosted via the awesome GitHub Pages, and as a result, you can view the whole page structure on it’s own GitHub branch.