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: Difference between revisions

From BZFlagWiki
Jump to navigation Jump to search
Deliot (talk | contribs)
No edit summary
Deliot (talk | contribs)
No edit summary
Line 38: Line 38:
  `user_tokenip` varchar(40) COLLATE utf8_bin NOT NULL DEFAULT '',  
  `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.
*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 config file -publiclist option for the [[BZFS]] server to include a link to '''bzfls.php'''.  For Example:
*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 <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
  -publiclist <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
*Edit the '''config.cfg''' file on the BZFlag game client computer to include the Private List Server or edit the command line that starts the BZFlag game client:
*Edit the [[BZFS]] config file and create the text files necessary to use the '''-userdb''' and '''-groupdb''' options.  See the [[Sample conf]] 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 <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
  set list <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
or for the command line:
or for the command line:
  C:\BZFlag\bzflag.exe -list <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki> -configdir c:\bzflag\config\
  C:\BZFlag\bzflag.exe -list <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki> -configdir c:\bzflag\config\
*At this point, testing should begin.  Restart your Apache server, restart your [[BZFLS]] server.
 
*Have one or more test users register on the PHPBB3.
=Testing=
*Visit the development interface for your private bzfls.php in a web browser.  For Example:
 
*Restart your the [[BZFS]] server.
*Have one or more test users register with the PHPBB3 board you created.
*Visit the development interface for your private '''bzfls.php''' in a web browser.  For Example:
  <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
  <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
*Compare data obtained by visiting the official List Server development interface found here:
*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
  http://stats.bzflag.org/bzfls.php
*Attempt to authenticate with the private [[List Server]] by entering:
*Attempt to authenticate with the private [[List Server]] by entering:
  action:GETTOKEN - get a player token:
  action: GETTOKEN - get a player token
  callsign: PHPBB3 username
  callsign: username (PHPBB3)
  password: PHPBB3 password
  password: password (PHPBB3)
*Successful GETTOKEN with the private [[List Server]] should display something like:
TOKEN: 0123456789
*Once you have a token, enter into the CHECKTOKENS box something like the following:
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:
*Attempt to see if your server is listed with the private [[List Server]] by selecting:
  LIST - list servers
  LIST - list servers

Revision as of 05:13, 2 November 2010

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 that a working BZFS server is already in place and has been tested.
  • This article assumes that the server administrator has access to web hosting with MySQL and PHP.
  • This article assumes that the server administrator understand how to download and install PHPBB3.
  • This article assumes that the private list server will use the same database as PHPBB3.
  • This article assumes that the server administrator 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.

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 , 
-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 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.
  • Have one or more test users register with 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 (PHPBB3)
password: password (PHPBB3)
  • Successful GETTOKEN with the private List Server should display something like:
TOKEN: 0123456789
  • Once you have a token, enter into the CHECKTOKENS box something like the following:
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




Acknowledgments

This process would not have been successful without the help of Blast/Blast007.