Private List Server

From BZFlagWiki
Jump to: navigation, search

This article discusses how to create a PRIVATE List Server and have players authenticate via this server. This is generally not necessary, since BZFlag clients perform Global Registration via the official bzflag.org List Server. However, if a BZFS server is created within a private LAN network, it may be desirable/necessary to authenticate players locally.

Assumptions[edit]

  • This article assumes a working BZFS server is already in place and has been tested.
  • This article assumes the server admin understands how to set up a BZFS groups file (see Sample Group File)
  • This article assumes the server admin has access to web hosting with MySQL and PHP.
  • This article assumes the server admin understands how to download and install PHPBB3.
  • This article assumes the private List Server will use the same database as PHPBB3.
  • This article assumes the server admin understands how to perform basic editing of PHP code.
  • This article was written using Linux for the BZFS server.
  • This article was written using Windows clients to access both the game server and the private List Server.

Difficulty[edit]

While no particular step in this process is overly difficult, there are many steps, and many interactions between steps. There are multiple points of failure during this process.

Directions[edit]

  • Install and test your BZFS server. Make sure clients can connect and play the game.
  • Install PHPBB3 on a web server, configure settings, test that users can REGISTER to the PHPBB3 board.
  • In the "main" PHPBB3 folder, (ex: /usr/share/phpbb3/www/), place the following THREE files found in the SVN DB Repository (https://bzflag.svn.sourceforge.net/svnroot/bzflag/trunk/db/):
bzfls.php
serversettings.php.tmpl (rename to serversettings.php)
banfunctions.php
  • Edit serversettings.php such that it can connect to your PHPBB3 MySQL database. Note that this example assumes that the same database used by bzfls.php is also used by the PHPBB3 installation:
$dbhost  = "localhost";
$dbname  = "phpbb3";
$dbuname = "phpbb3";
$dbpass  = "********";
$bbdbname = 'phpbb3';


  • There are many places in the bzfls.php file that are customized to the MySQL tables names used in the official BZFlag Global Registration Server. These MySQL table names may conflict with YOUR table names. To find them, search bzfls.php for "bzbb3_" (as seen in the code sample below). Edit/Replace them as necessary to match the table prefix you used for YOUR phpbb3 MySQL tables:
     (before)    
     $result = sqlQuery ("
     SELECT g.group_id FROM bzbb3_user_group ug, bzbb3_groups g
     WHERE g.group_id=ug.group_id AND ug.user_pending=0 AND ug.user_id = $playerid");
     (after)
     $result = sqlQuery ("
     SELECT g.group_id FROM phpbb_user_group ug, phpbb_groups g
     WHERE g.group_id=ug.group_id AND ug.user_pending=0 AND ug.user_id = $playerid");


  • For ease of setup, bzfls.php was edited to house files in the "main" PHPBB3 folder (ex: /usr/share/phpbb3/www/). The following lines were changed to accomplish this (linux example):
$phpbb_root_path = '/usr/share/phpbb3/www/';
include($phpbb_root_path.'includes/functions.'.$phpEx);
include($phpbb_root_path.'includes/utf/utf_tools.'.$phpEx);
include($phpbb_root_path.'includes/utf/utf_normalizer.'.$phpEx);
include($phpbb_root_path.'serversettings.'.$phpEx);
include($phpbb_root_path.'banfunctions.'.$phpEx);
  • The PHPBB3 phpbb_user MySQL table must have additional fields created to track the BZFLAG players. The fields are user_token, user_tokendate, and user_tokenip:
`user_token` int(10) unsigned NOT NULL DEFAULT '0',
`user_tokendate` int(10) unsigned NOT NULL DEFAULT '0',
`user_tokenip` varchar(40) COLLATE utf8_bin NOT NULL DEFAULT , 
-public "My LAN BZFlag Server"
-publicaddr 10.14.101.15:5154
-p 5154
#-q
-publiclist http://10.14.101.15/phpbb/bzfls.php
#groupdb stores group to permission mappings.
-groupdb /path/to/groups.txt
  • Edit the config.cfg file on the BZFlag game client(s) to include the Private List Server address or edit the command line that starts the BZFlag game client(s). In config.cfg:
set list http://10.14.101.15/phpbb/bzfls.php

or for the client command line (Windows example):

C:\BZFlag\bzflag.exe -list http://10.14.101.15/phpbb/bzfls.php -configdir c:\bzflag\config\

Testing[edit]

  • Restart the BZFS server.
  • Register one or more test users on the PHPBB3 board you created.
  • Visit the development interface for your private bzfls.php in a web browser. This web page should appear without error from within the PHPBB3 "main" folder. For example:
http://10.14.101.15/phpbb/bzfls.php
  • Compare data from your private List Server with that obtained by visiting the official List Server development interface found at:
http://stats.bzflag.org/bzfls.php
  • Attempt to authenticate with the private List Server by entering information for a PHPBB3 user:
action: GETTOKEN - get a player token
callsign: username
password: password
  • A successful GETTOKEN with the private List Server should display something like:
TOKEN: 0123456789
  • Once you have a valid token, visit bzfls.php again in your web browser for a CHECKTOKENS test:
action: CHECKTOKENS - verify player token from game server

in the checktokens textarea enter the username and token info:

USER=0123456789

and get back:

MSG: checktoken callsign=USER, ip=, token=0123456789  group=Group0 group=Group1
TOKGOOD: USER
BZID: 12345 USER
  • Attempt to see if your server is listed with the private List Server by selecting:
LIST - list servers

and get back:

server.ip.address:5154 BZFS0026 007b0003000100000000000000003c0000000c000c000c000c020c 000.000.000.000 Server ID String
  • If all previous tests are successful, start your BZFS server and attempt to have registered PHPBB3 clients authenticate!!

Acknowledgments[edit]