nOOb3167 f5bddaaef5 Fix locking
Calls to save() in purgeOld() and update() were in race condition.
Race condition was eliminated by extending the lock scope within purgeOld().
Calls to load() were in race condition with themselves.
While current use of load() (called only during construction of class ServerList()) does not manifest the bug, any future change introducing concurrent use of load() would.
Race condition potential was eliminated by extending the lock scope within load().
2018-03-18 14:07:59 +01:00
2014-09-17 14:45:44 -04:00
2017-06-14 13:37:45 +02:00
2016-01-24 00:26:11 -05:00
2018-03-18 14:07:59 +01:00

Minetest server list

Setting up the webpage

You will have to install node.js, doT.js and their dependencies to compile the server list webpage template.

First install node.js, e.g.:

# apt-get install nodejs
# # OR:
# pacman -S nodejs
# # OR:
# emerge nodejs

Then install doT.js and its dependencies:

$ cd ~
$ npm install dot commander mkdirp

And finally compile the template:

$ cd static
$ ~/node_modules/dot/bin/dot-packer -s . -d .

You can now serve the webpage by copying the files in static/ to your web root, or by starting the master server.

Embedding the server list in a page

<head>
	...
	<script>
		var master = {
			root: 'http://servers.minetest.net/',
			limit: 10,
			clients_min: 1,
			no_flags: 1,
			no_ping: 1,
			no_uptime: 1
		};
	</script>
	...
</head>
<body>
	...
	<div id="server_list"></div>
	...
</body>
<script src="list.js"></script>

Setting up the server

  1. Install Python 3 and pip:
pacman -S python python-pip
# OR:
apt-get install python3 python3-pip
  1. Install required Python packages:
# You might have to use pip3 if your system defaults to Python 2
pip install -r requirements.txt
  1. If using in production, install uwsgi and it's python plugin:
pacman -S uwsgi uwsgi-plugin-python
# OR:
apt-get install uwsgi uwsgi-plugin-python
# OR:
pip install uwsgi
  1. Configure the server by adding options to config.py. See config-example.py for defaults.

  2. Start the server:

$ ./server.py
$ # Or for production:
$ uwsgi -s /tmp/minetest-master.sock --plugin python -w server:app --enable-threads
$ # Then configure according to http://flask.pocoo.org/docs/deploying/uwsgi/
  1. (optional) Configure the proxy server, if any. You should make the server load static files directly from the static directory. Also, /list should be served from list.json. Example for nginx:
root /path/to/server/static;
rewrite ^/list$ /list.json;
try_files $uri @uwsgi;
location @uwsgi {
	uwsgi_pass ...;
}

License

The Minetest master server is licensed under the GNU Lesser General Public License version 2.1 or later (LGPLv2.1+). A LICENSE.txt file should have been supplied with your copy of this software containing a copy of the license.

Description
The global Luanti (Minetest) server list server
Readme 229 KiB
Languages
Python 70.7%
JavaScript 13.1%
EJS 9.5%
CSS 4.1%
HTML 2.6%