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)
Process for setting up a private list server on a LAN for BZFlag client authentication.
 
Deliot (talk | contribs)
No edit summary
 
(42 intermediate revisions by 4 users not shown)
Line 1: Line 1:
=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.
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==
Pro
*This article assumes a working [[BZFS]] server is already in place and has been tested.
=Assumptions=
*This article assumes the server admin understands how to set up a BZFS groups file (see [[Sample Group File]])
*This article assumes that a working [[BZFS]] server is already in place.
*This article assumes the server admin has access to web hosting with MySQL and PHP.
*This article assumes that the server administrator has access to a web hosting account with MySQL and PHP.
*This article assumes the server admin understands how to download and install PHPBB3.
*This article assumes that the server administrator understand how to install PHPBB3.
*This article assumes 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 assumes the server admin understands how to perform basic editing of PHP code.
*This article was written using Ubuntu Desktop 10.04 as the base system. Windows and Mac installations will be different.
*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 used by '''bzfls.php''' is also used by the PHPBB3 installation:
$dbhost  = "localhost";
$dbname  = "phpbb3";
$dbuname = "phpbb3";
$dbpass  = "********";
$bbdbname = 'phpbb3';


=Directions=


Examples:
*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:


blah
      '''(before)'''   
blah
      $result = sqlQuery ("
blah
      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");




=Acknowledgements=
*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):
This process would not have been successful without the help of Blast/Blast007.
$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 '',
*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 '''##List Server Connection##''' section to include something like the following.  See the [[Sample conf]] for more info.  In particular, it is important that '''-publicaddr''' and '''-publiclist''' are ON and set.  The BZFS server isn't "public" in the traditional sense but it is "public" according to our new "private" LAN list server, so the public settings must be ON, and the private '''-q''' setting must be OFF.
-public "My LAN BZFlag Server"
-publicaddr 10.14.101.15:5154
-p 5154
#-q
-publiclist <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
*Edit the [[BZFS]] config file and create any text files necessary to use the '''-groupdb''' option.  See the [[Sample conf]] and [[Sample Group File]] for more info:
#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 <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
or for the client command line (Windows example):
C:\BZFlag\bzflag.exe -list <nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki> -configdir c:\bzflag\config\
 
==Testing==
 
*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:
<nowiki>http://10.14.101.15/phpbb/bzfls.php</nowiki>
*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==
*This guide would not have been possible without the help and guidance of BZFLAG player/admin "Blast".
*This guide is based on a message board discussion found http://my.bzflag.org/bb/viewtopic.php?f=30&t=16653
*This guide was inspired by an older message board discussion found http://my.bzflag.org/bb/viewtopic.php?f=93&t=16238
 
[[Category:Server]]

Latest revision as of 17:30, 24 October 2011

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 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

  • 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