{"id":20527452,"url":"https://github.com/ddugovic/capablanca","last_synced_at":"2025-04-14T04:22:05.225Z","repository":{"id":9637926,"uuid":"11569870","full_name":"ddugovic/capablanca","owner":"ddugovic","description":"An Internet Chess Server supporting Chess variants (based on Lasker-2.2.3)","archived":false,"fork":false,"pushed_at":"2021-10-29T02:49:32.000Z","size":1313,"stargazers_count":12,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-27T18:13:35.384Z","etag":null,"topics":["chess","server"],"latest_commit_sha":null,"homepage":"http://hgm.nubati.net/cgi-bin/gitweb.cgi?p=capablanca.git;a=summary","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ddugovic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-22T00:16:31.000Z","updated_at":"2023-12-14T20:59:52.000Z","dependencies_parsed_at":"2022-09-22T18:03:33.949Z","dependency_job_id":null,"html_url":"https://github.com/ddugovic/capablanca","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddugovic%2Fcapablanca","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddugovic%2Fcapablanca/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddugovic%2Fcapablanca/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddugovic%2Fcapablanca/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddugovic","download_url":"https://codeload.github.com/ddugovic/capablanca/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248819698,"owners_count":21166527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chess","server"],"created_at":"2024-11-15T23:18:57.073Z","updated_at":"2025-04-14T04:22:05.179Z","avatar_url":"https://github.com/ddugovic.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/ddugovic/capablanca.svg?branch=master)](https://travis-ci.org/ddugovic/capablanca)\n\nIntroduction\n------------\n\nThis is a version of the internet chess server which supports a wider\nvariety of variants, allowing other board sizes than 8x8 and more pieces\nthan the 6 orthodox piece types. I renamed it 'capablanca', in remembrance\nof Jose Capablanca, who rediscovered and popularized Chess on a 10x8 board.\n(Which is one of the better known variants now supported, next to Xiangqi\nand Shogi.) It was derived from 'lasker', of which the original README is\nshown below.\n\nIt also fixes some bugs that remained in the original code.\n\nH.G. Muller\n\n---------------------------------------------------------------------\n\nThis is an enhanced version of the 'lasker' internet chess server. I\nstarted to enhance Lasker when I needed a working chess server for a\nlocal school. You can download the original 'lasker' release from\nhttp://chessd.sourceforge.net/ and my enhanced version from\nhttp://chess.samba.org/\n\nHere is a list of some of the new features in this version:\n\n     - lots and lots of bugs fixed\n     - timeseal support added (see timeseal/README for details)\n     - server configuration via 'aconfig' command instead of config.h\n     - added multi-part command parsing (commands separated by ';')\n     - enhanced aliases\n     - build/install process fixed (32-bit binary on 64-bit architecture)\n     - fixed help system\n     - transparent server reload (upgrade without disturbing connections or games)\n\n\nInstallation\n------------\n\nFirst you need to configure and compile the chessd server. Do\nsomething like the following:\n\n\t  cd src\n\t  ./configure --host=i686-linux-gnu \"CFLAGS=-m32\" \"CXXFLAGS=-m32\" \"LDFLAGS=-m32\" \"LTCC=gcc -m32\" --prefix=/usr/local\n\t  make\n\nThen to install the server run \"make install\". That will install a\nbasic skeleton installation in /usr/local/chessd. \n\nSetting up\n----------\n\nNext you will want to launch your chess server using the command:\n     bin/chessd -p 5000\nwhile in the chessd/ directory. This will launch the chess server\nusing the skeleton data you installed above.\n\nI highly recommend creating a separate account on your machine to run\nthe chess daemon. This user should own all files in the chessd\ndirectory.\n\nAfter you launch chessd for the first time you will need to login as\nthe special user 'admin'. That username will be recognised as the\nserver administrator and you will be logged in with the rather unusual\ncombination of a head administrator who is also an unregistered\nplayer.\n\nThe first thing you will want to do as the admin user is create a\nproper 'admin' account with a password. Use the command 'addplayer'\nwhile logged in as the admin user to create the admin account. You\nwill be told the password. Then you should immediately logout and log\nback in using the admin password you have just been given. You will\nprobably want to change this password using the 'asetpass' command. \n\nYou may also find the following commands useful:\n    ahelp addplayer\n    ahelp asetpass\n    ahelp commands\n\n\nSecuring your server\n--------------------\n\nThe source code for this chess server has been hacked on by dozens of\npeople over the years. It almost certainly has exploitable buffer\noverruns or other security holes. If you are like me then you won't\nlike the idea of running an insecure program like that on your server.\n\nTo make it a lot more secure you can choose to run the chess server in\na chroot jail. This makes it much harder for an attacker to gain a\nfoothold on your server. It won't prevent them from crashing the\nchessd process but it will prevent them from gaining access to other\nparts of the system.\n\nTo run chessd in a chroot jail you need to do the following:\n\n   1) chessd needs to be setuid root. I know this sounds bizarre, but\n      it needs root privileges to use the chroot() system\n      call. Immediately after the chroot chessd will permanently lose\n      its root privileges and instead become the user that launched\n      chessd. To make chessd setuid root do this as root:\n\t      chown root chessd\n\t      chmod u+s chessd\n\n   2) pass the command line option -R to tell chessd that it should\n      chroot to the current directory. So to launch chessd you can use\n      this:\n\t\tchessd -p 5000 -T /usr/local/bin/timeseal_decoder -R /usr/local/chessd\n\n      You may also like to look at the start_chessd script in the\n      scripts directory. This is the script I use to keep chessd\n      always running on my machine.\n\nIf you do use the -R option then I also recommend that you don't place\nany of the chess server binaries (or any other binaries or libraries)\ninside the chessd directory. That will increase the security of your\nserver a little.\n\n\nEmail spool\n-----------\n\nThis chess server does not send emails directly, instead it puts\noutgoing emails in the spool/ directory and waits for some external\nprogram or script to deliver them. I designed it this way as it makes\nit possible to send email from a chess server in a chroot jail, and\noffers more flexibility in how email is handled (as that tends to vary\na lot between systems).\n\nIf you run sendmail then the sample script in scripts/spool_sendmail\nmight be good enough. Just run this script at startup and it will send\nall spooled mail every minute.\n\n\nServer reload\n-------------\n\nThis version of chessd supports reloading the server code without\nhaving to shutdown the server or disturb any games that are in\nprogress. This allows for on the fly upgrades, hopefully without the\nusers even noticing that the system is being upgraded.\n\nIn order to support this functionality I had to make the source code\nrather more Linux specific than it was previously, but I think that is\nworth it for the functionality. It would be possible to port the code\nto many other platforms, but I have not yet done so.\n\nTo reload the server use the command 'areload'. You must be at the\nADMIN_GOD admin level to issue this command.\n\nLicense\n-------\n\nThis chess server release is under the GNU General Public License,\nwhich is the license used by the original chess server written by\nRichard Nash. Various parts of the server are under different\nlicenses, depending on who wrote what part, but I believe that all of\nthe licenses are compatible with the GPL.\n\nThe reason I chose the GPL for this release is that I don't want this\ncode to become proprietary again. This has happened at least 3 times\nin the past with this source code and while I'm sure there were very\ngood reasons at the time, it does mean that the freely available chess\nservers have not benefited from the considerable development that has\nhappened over the past seven years. \n\nI also chose the GPL because it allows me to incorporate source code\nfrom other GPLd projects. This saved me quite a lot of time, and is\nsure to be useful again.\n\n\n--------------------------------\nAndrew Tridgell\ntridge@chess.samba.org June 2002\n--------------------------------\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddugovic%2Fcapablanca","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddugovic%2Fcapablanca","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddugovic%2Fcapablanca/lists"}