Skip to content

gbtami/FatICS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction
------------
This is an Internet chess server inteded to be a free software equivalant
for the server that currently runs at freechess.org.

Contact: Wil Mahan <wmahan+fatics@gmail.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

System requirements
-------------------
* Linux (it might work on other OSes, but I haven't tried)
* GCC, make and zlib1g-dev for compiling timeseal (any recent version
  should work)
* Python 2.6 or 2.7
* Twisted 8.2 or later
* MySQL 5.0 or later
* The MySQLdb Python module
* The python-bcrypt module
* The netaddr module
* The pytz module
* The python-openssl (pyOpenSSL) module
* GNU gettext
* (optional) The pexpect module, for timeseal/zipseal tests
* (optional) sockjs-twisted (aka txsockjs), for html5 web clients.
  http://sockjs.org/
* (optional) Mercurial, if you want to check out the latest versions
  from Bitbucket

On a Debian-based system,

apt-get install mercurial python-twisted mysql-server python-mysqldb python-tz python-openssl python-netaddr gettext zlib1g-dev python-dev python-pip
pip install bcrypt
pip install txsockjs

should be sufficient to install the above dependencies. (The python-bcrypt
package was removed from Debian, hence the need to install and run pip.)

Installation
------------

* Timeseal and zipseal *
The timeseal and zipseal programs can be compiled by changing to the
timeseal/ directory and typing "make".  That should build both the client
programs (named openseal and zipseal) and the decoders that
the server needs (openseal_decoder, zipseal_decoder, and zipseal_encoder).

The source code for Win32 version of zipseal is in timeseal/win32/, but it
doesn't have a proper build instructions, because I don't have Windows.
I currently compile it with an unholy mix of wine and a Microsoft
compiler.

* Gettext messages *
The gettext messages need to be compiled into machine-readable (.mo)
format.  Assuming you have GNU gettext, you can do this by executing
scripts/compile-messages from the top of the source tree.

* Running the server *
First you'll need to create a MySQL database and user.  I assume you
know how to do this.

The server uses localhost as the server and the username "chess" by default;
these can be changed by editing src/config.py.  The server looks in
~/.my.cnf for the password to use; for example:

# start .my.cnf
[client]
user = chess
password = your_password_here
# end .my.cnf

Next, you need to set up the database. You can do this with the command
"./chessd firstrun" (warning: this will wipe out any existing FatICS
database previously installed). The scripts will handle the following tasks:

* Creating the necessary database tables
* Loading ECO codes
* Setting up the first account (follow the prompts to create
a user with head admin powers).

If there are no errors, you're ready to try to run the server.
You can use one of the following commands:

  "./chessd run"     -- run in the foreground; log to the console
  "./chessd start"   -- run as a daemon; log to chessd.log
  "./chessd profile" -- run in profiling mode

After the server is started, you can use these commands:

  "./chessd test"    -- run the test suite
  "./chessd stop"    -- shut down the server

For information about running the tests, see README.tests