/echessd

echessd - is lightweight, minimalistic and free Internet chess server implementation written on Erlang programming language.

Primary LanguageErlangBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Echessd - Internet Chess Server

Contents

  1. Summary
  2. Goals
  3. Features
  4. License
  5. Build
  6. Configure
  7. Run
  8. Play
  9. Server administration
  10. Security
  11. Reporting bugs

1. Summary

Echessd - is lightweight, minimalistic and free Internet Chess Server written with the Erlang programming language.

2. Goals

Goals of the project:

  • no usage limitations;
  • no email address collecting;
  • no social networking;
  • less network traffic:
    • no images;
    • no ads;
  • no extra software dependencies;
  • just playing chess with other people. Anytime, everywhere with any type of a browser - even like lynx or w3m.

3. Features

  • cross platform (all you need to run is Erlang installed);
  • easy configuration. Functional even with empty configuration file;
  • multi language support (as for now: English, Russian, Ukrainian);
  • switchable styles;
  • notifications with XMPP (Jabber);
  • logging to a file;
  • reconfiguration on-the-fly;
  • database backing up and restore using text file;
  • multithreaded request processing;
  • user's password encryption.

4. License

Echessd uses a FreeBSD License. You can obtain the license online or in the file LICENSE on the top of Echessd source tree.

5. Build

Erlang must be installed to build and run the Echessd. You always can obtain the latest Erlang version here or use the one provided by your software repository.

Echessd is developed and tested with Erlang R15B01 but probably will work with older Erlang versions.

$ make

To build developer HTML documentation type:

$ make html

6. Configure

You can use an echessd.conf file as example of configuration for the Echessd. It contains reasonable* (see Security section) defaults and configuration parameter explanations.

7. Run

$ ./echessd /path/to/echessd.conf

The server will start as a foreground process.

8. Play

  1. Send the browser to http://localhost:8888/;
  2. Register a new user;
  3. Choose an opponent in user list and hit the button 'Create new game';
  4. Wait while the opponent confirms the game (you will need to refresh the web page unless you're set 'Auto Refresh' to ON on the account settings page).

9. Server administration

A compiled binary of the Echessd take some command line options. As mentioned above, to start the server, type:

$ ./echessd /path/to/echessd.conf

To tell the running server to reread configuration file and reopen a log file:

$ ./echessd --hup /path/to/echessd.conf

To check if the server is alive or not:

$ ./echessd --ping /path/to/echessd.conf

To tell the running server to terminate:

$ ./echessd --stop /path/to/echessd.conf

To make a copy of an Echessd database to a file:

$ ./echessd --dump /path/to/file.dump /path/to/echessd.conf

To load the dump from the file to the database of the running Echessd (all previous data from the database will be destroyed):

$ ./echessd --load /path/to/file.dump /path/to/echessd.conf

To initialize the database (all data will be destroyed):

$ ./echessd --init /path/to/echessd.conf

Important note: the server must be stopped while database initialisation.

10. Security

  1. Do not run the Echessd with superuser privileges;
  2. Do not allow normal users to read your echessd.conf file because it contains 'cookie' string. With the string any local user can connect to the running Echessd instance and execute ANY code with privileges of Echessd Server process;
  3. As issue of the 2, you should change the 'cookie' string to something long and random which will be hard to guess.

11. Reporting bugs

Echessd is a young project and I'm sure there is a lot of bugs and inconsistencies. On the other hand, Echessd is not such big project to support mailing list or bug tracker. So, in the case of bug you can:

  • submit an email to me with subject "echessd: ....";
  • if you're GitHub user, create an issue on a project's page;
  • fork, patch and create a pull request.

Aleksey Morarash aleksey.morarash@gmail.com, 2013