Skip to content

zibonbadi/liquidms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LiquidMS logo

LiquidMS

SUMMARY

LiquidMS is a clean room implementation of the Sonic Robo Blast 2 HTTP Master Server API. It can mirror netgame data from any API Compatible master server, and due to the ability to synchronize with other instances of itself, it is capable of being operated as a node within a distributed master server network.

The project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3, which is also accessible via the included LICENSE.md file or the HTTP endpoint /liquidms/license.

Special thanks to GoldenTails whose reverse engineered HTTP master server served as a reference to this project.

INDEX

This documentation follows the Diataxis model, being divided into 4 categories:

Tutorials

  1. Configuring MariaDB
  2. Troubleshooting MariaDB
  3. Troubleshooting Docker
  4. Snitching

How-To guides

  1. Installing & hosting LiquidMS
  2. Connecting to LiquidMS
  3. Setting up ODBC
  4. Banning netgames
  5. Forwarding ports

Teardown

  1. LiquidMS hosting model
  2. Fetching
  3. Snitching
  4. Fast server browser
  5. Fancy server browser

Reference

  1. Endpoints
  2. Configuration files
  3. Snitch API
  4. Netgame Configuration (external)

FREQUENTLY ASKED QUESTIONS (FAQ)

So... I can host my own Master Server now?

Yes you can and much, much more.

Do I need Docker (Compose) to run LiquidMS?

No. The Docker integration has been included to provide an easy way to host an exemplary multi-node setup. All you need to host LiquidMS is a web server, a MySQL/MariaDB database and a sufficiently configured PHP environment. See INSTALLATION for more details.

Do I need to forward ports/buy a server?

Yes and no. If you simply want to snitch, all you need is an HTTP-capable internet connection and a PHP environment to run fetch.php or liquidanacron.php. If you decide to run a dedicated LiquidMS node however, you will need to provide access to your server. Port forwarding, registering domains and such will naturally be necessary.

My node is running but no one can connect to it!

In order for your server to be accessible from the outside, you need to forward some ports though your network (usually your router). LiquidMS requires the following ports:

  • 80: HTTP
  • 443: HTTPS (SSL encrypted)

My world rooms aren't acessible in-game! Help!

The original V1 API used by SRB2 interprets the definition of rooms using the following schema. Take care to make your room names, descriptions and MOTD match this closely:

[START OF ROOM]
<room number>
<room name>

<description with max 1 consecutive blank line>


[END OF ROOM]

Why do you keep insisting to fetch-from-snitch?

The original API was never designed with indirection or mirroring in mind. As such LiquidMS can only supply tags to inform users of non-world data. Should a node fetch from another node's v1 API, all information about netgames' origins are substituted for the fetched v1 server, accumulating tagged data in the mirrored database.

External sources