This wiki was in read-only mode for many years, but can now be edited again. A lot of information will need to be updated.
Private List Server
Overview
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
- 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
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
- 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 is used for MySQL tables used by bzfls.php and by the PHPBB3 installation:
 
$dbhost = "localhost"; $dbname = "phpbb3"; $dbuname = "phpbb3"; $dbpass = "********"; $bbdbname = 'phpbb3';
- For ease of setup, bzfls.php was edited to access files from 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/'; $phpEx = 'php'; 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 table must have additional fields added to track the BZFLAG player user_token, user_tokendate, and user_tokenip. This is how the List Server authenticates each player, by sending an up to 10 digit token to the BZFLAG client:
 
`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 ,
- Next, a number of tables must be added to the PHPBB3 database to accommodate player tracking These tables can be found here: http://bzflag.svn.sourceforge.net/viewvc/bzflag/trunk/db/support/database_structure.sql?revision=20248&content-type=text/plain.
 - Edit the BZFS config file -publiclist option for the BZFS server to include a link to bzfls.php. See the Sample conf for more info. For Example:
 
-publiclist http://10.14.101.15/phpbb/bzfls.php
- Edit the BZFS config file and create the text files necessary to use the -userdb and -groupdb options. See the Sample conf and Sample Group File for more info:
 
#userdb stores user to group mappings. -userdb /path/to/users.txt #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):
 
set list http://10.14.101.15/phpbb/bzfls.php
or for the command line:
C:\BZFlag\bzflag.exe -list http://10.14.101.15/phpbb/bzfls.php -configdir c:\bzflag\config\
Testing
- Restart your 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. 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 here:
 
http://stats.bzflag.org/bzfls.php
- Attempt to authenticate with the private List Server by entering:
 
action: GETTOKEN - get a player token callsign: username (from PHPBB3) password: password (from PHPBB3)
- A successful GETTOKEN with the private List Server should display something like:
 
TOKEN: 0123456789
- Once you have a valid token, enter into bzfls.php box something like the following:
 
CHECKTOKENS - verify player token from game server checktokens box on the form: 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
Acknowledgments
This process would not have been successful without the help and guidance of Blast/Blast007.