0ad/source/tools/XpartaMuPP
elexis 41d4649c6d Remove unused, deprecated SendGetGameList from the lobby.
Differential Revision: https://code.wildfiregames.com/D389
Reviewed By: scythetwirler
Refs D207

This was SVN commit r19467.
2017-04-28 23:22:41 +00:00
..
EcheLOn.py Fix the lobby bot following the entity class rename in ad17e320be 2017-04-25 16:53:42 +00:00
ELO.py Add the limit back to provisionality in the rating system. 2014-04-27 23:42:56 +00:00
LobbyRanking.py Fix the lobby bot following the entity class rename in ad17e320be 2017-04-25 16:53:42 +00:00
Makefile Multiplayer lobby based on the XmPP protocol. Special thanks to Philip, alpha123, scythetwirler, and anyone else who has helped build, debug or test the lobby. 2013-11-07 20:07:24 +00:00
mod_ipstamp.erl Use ACLs in the ipstamp module to support multiple lobby bots. 2013-12-31 00:25:33 +00:00
README Update Lobby Bot README. 2017-03-02 19:19:45 +00:00
XpartaMuPP.py Remove unused, deprecated SendGetGameList from the lobby. 2017-04-28 23:22:41 +00:00

Introduction
============
Some commands assume some apt-get based distribution. `lobby.wildfiregames.com` should be replaced by your own domain name (or localhost) in all commands below.


Install ejabberd and the erlang compiler
========================================
    # apt-get install ejabberd erlang-dev make

Configure it:
    # dpkg-reconfigure ejabberd 
Set the domain name (e.g. localhost if you installed it on your development computer) and add an admin user.

You should now be able to connect to this XMPP server using a normal XMPP client.

Installation of the custom XMPP module
======================================
Go to its source directory
    $ cd source/tools/XpartaMuPP

Edit `mod_ipstamp.erl` to set the domain (e.g. localhost) on which the ejabberd server is run.
    # -define (Domain, <server domain>).

Build and install it
    $ make
    # make install

We want ejabberd to load the module, so add the following to the `modules` section in`/etc/ejabberd/ejabberd.cfg`:
    {mod_ipstamp, []}

Restart ejabberd
    # service ejabberd restart

If something goes wrong, read `/var/log/ejabberd/ejabberd.log`

Ejabberd configuration
======================
A web administration inteface is avaliable at http://localhost:5280/admin. Use the admin user credentials (full JID (user@domain)) to log in. Changing settings there is also possible, but some of those might not persist on restart.

The rest of this section should be done by editing `/etc/ejabberd/ejabberd.cfg`.

We want to allow users to create accounts using the game so allow in-band registration:
    {access, register, [{allow, all}]}.

You can see the list of registered using:
    # ejabberdctl registered_users lobby.wildfiregames.com

XpartaMuPP needs a user to function, so create one using:
    # ejabberdctl register wfgbot lobby.wildfiregames.com hunter2

The bot also needs to be able to get the IPs of users hosting a match, which is what the ipstamp module does.
Create an ACL for the bot (or bots):
    {acl, bots, {user, "wfgbot", "lobby.wildfiregames.com"}}.

Add an access rule (name it `ipbots` since that is what the module expects):
    {access, ipbots, [{allow, bots}]}.

Due to the amount of traffic the bot may process, give the group containing bots either unlimited or a very high traffic shaper.
    {access, c2s_shaper, [{none, admin},
                      {none, bots},
                      {normal, all}]}.


MUC room setup
==============
To enable the bot to send the game list to players it needs the JIDs of the players, so the room should be configured as such. In case that you want to host multiple lobby rooms adding an ACL for MUC admins to which the bots are added, which is used for `access_admin` in the `mod_muc` configuration would be advisable.

Run XpartaMuPP - XMPP Multiplayer Game Manager
==============================================
You need to have python 3 and SleekXmpp installed (tested for 1.3.1, not compatible with 1.0-beta5). You will most likely need to use pip to install 1.3.1, as it is not in most default repositories.
    $ sudo apt-get install python3

If you would like to run the leaderboard database,
    $ sudo apt-get install python3-sqlalchemy

Then execute the following command to setup the database.
    $ python3 LobbyRanking.py

Execute the following command to run the bot with default options:
    $ python3 XpartaMuPP.py
or rather a similar command to run a properly configured program:
    $ python3 XpartaMuPP.py --domain localhost --login wfgbot --password XXXXXX --nickname WFGbot --room arena
or if you want to run XpartaMuPP with the corresponding rating bot detailed in the next section:
    $ python3 XpartaMuPP.py --domain localhost --login wfgbot --password XXXXXX --nickname WFGbot --room arena --elo echelonBot

Run `python3 XpartaMuPP.py --help` for the full list of options

If everything is fine you should see something along these lines in your console
    INFO     Negotiating TLS
    INFO     Using SSL version: 3
    INFO     Node set to: wfgbot@lobby.wildfiregames.com/CC
    INFO     XpartaMuPP started

Congratulations, you are running XpartaMuPP - the 0ad Multiplayer Game Manager.

Run EcheLOn - XMPP Rating Bot
==========
This bot can be thought of as a module of XpartaMuPP in that IQs stanzas sent to XpartaMuPP are forwarded onto EcheLOn if its corresponding EcheLOn is online and ignored otherwise. This is by no means necessary for the operation of a lobby in terms of creating/joining/listing games.
EcheLOn handles all aspects of operation related to ELO.

To run EcheLOn:
    $ python3 EcheLOn.py --domain localhost --login echelon --password XXXXXX --nickname Ratings --room arena