FCI - Folding@Home Client Info
Subversion Repository

The fci-client runs on Linux, FreeBSD, OpenBSD, Mac OS X and Windows,
the fci-server runs on Linux, and on FreeBSD & OpenBSD using Linux emulation.

The fci-client sends data from a client to the fci-server, among which are the
output of Dick Howells qd, Operating System and Hardware information and the
most interesting files in the Folding@Home client directory.

The server does almost all processing, and uses various tools to do it.

The tools uses by the FCI server are:
- xyz2pdb
- rasmol
- convert  (from ImageMagick)
- htpasswd (from Apache)

convert and htpasswd should be installed before FCI is.

xyz2pdb is shipped with FCI, just like Dick Howells qd is. xyz2pdb is used to
convert the current.xyz to a .pdb which is fed to rasmol.

A 32 bit Linux binary of rasmol is also shipped, but many Linux distros and
FreeBSD have native packages of rasmol. Rasmol is used to generate an image
and/or animation of the projects in the current.xyz which the clients upload.

convert is part of ImageMagick, it's used to compile animations out of multiple
rasmol generated images.

Installing on Windows

The installation process described in this document assume that you're running
an Windows XP Pro system.

The fci-client has very few dependencies, the fci-server has a bit more but 
cannot be run on Windows. 

Perl is not installed by default on Windows, but ActiveState has a freely 
available Perl distribution for Windows:

I assume that ActivePerl is used in this installation manual, but if you use
a different perl you have to install the required modules as appropriate.

After you have installed ActivePerl, use can use its Perl Package Manager to 
install the required modules.

  Perl Module           | Package     
Installer:              |                      
- XML::Simple           | XML-Simple        (ActivePerl)
- Getopt::Mixed         | Getopt-Mixed 
- Date::Calc            | Date-Calc         (ActivePerl)    
Client:                 |                     
- LWP::UserAgent        | libwww-perl     
- HTTP::Request::Common | libwww-perl     
- Date::Calc            | Date-Calc         (ActivePerl)    
- XML::Simple           | XML-Simple        (ActivePerl)
- Getopt::Mixed         | Getopt-Mixed    
- POSIX                 | ActivePerl
- Win32                 | Win32             (ActivePerl)
- Win32::OLE            | Win32-OLE         (ActivePerl)
- Win32::TieRegistry    | Win32-TieRegistry (ActivePerl)

Using the Perl Package Manager, as Administrator, on Windows you can install
the required modules by clicking the 'View all packages' button, typing the
package name in the filter field and selecting the 
'Install <Package-Name Version> +' option in the right click menu. Once all
packages have been marked for install, click the 'Run marked actions' button.

After you have installed the required modules, run the installer in a cmd.exe
prompt as Admininstrator:
install.pl --client --verbose

On Windows Vista you cannot write to C:\Program Files anymore, so you'll have
to specify a different location to install FCI to using the --bin-dir argument:
install.pl --client --verbose --bin-dir C:\FCI

The installer does require Administrator privileges, and has several options 
which you can use to customize the installation, overriding the built-in 

./install.pl --help
 Folding@Home Client Info Installer v1.0

 Usage: install.pl [--client|--server] [OPTIONS]

 -c, --client           Install the client component
 -s, --server           Install the server component

 -b, --bin-dir <PATH>   Path of executable files          (C:\Program Files\FCI)

 -f, --force            Install files & directories even if they already exist
 -v, --verbose          Enable verbose output
 -h, --help             Print this usage information

Installing the FCI client using ./install --client comes down to the following:
 copy client\qd            -> C:\Program Files\FCI\qd
 copy client\qdinfo.dat    -> C:\Program Files\FCI\qdinfo.dat
 copy client\fci-client.pl -> C:\Program Files\FCI\fci-client.pl

It installs the fci-client Perl script, and a copy of qd and its data file
qdinfo.dat for inital use by fci-client.pl. The FCI client will automatically
download the latest qdinfo.dat from the FCI server before every upload. A more
recent revision of the qd binary is only downloaded if the client is run with
--update-qd. New revisions of qd may contain bugfixes or new features you may
want to have available to your FCI client, but automatic download of the most
recent qd binary from the FCI server might overwrite a custom compiled binary,
which is not desirable.

The FCI client should now be ready to perform uploads to the server. It is
recommended to use the --verbose argument to fci-client.pl the first time the
FCI client command is tested for use. By default fci-client.pl doesn't display
any output unless it encounters an error, but the verbose output contains all
the information you need to verify its correct operation.

The fci-client.pl script needs to be scheduled to run periodically. To spread
the load on the server, it's recommended to use slightly different times for
the client uploads if there are many clients on a single server and/or the
server doesn't have many resources in terms of bandwidth, RAM or CPU power.

Add a Scheduled Task using Schtasks.exe like the one below in the a cmd.exe

### Scheduled Tasks command for FCI client ###
schtasks.exe /create /tn "FCI Client" /tr "C:\Perl\bin\wperl.exe C:\Progra~1\FCI\fci-client.pl --dir C:\FAH --url http://example.com/fci/index.pl" /sc HOURLY /st 00:10:00
### Scheduled Tasks command for FCI client ###

On Windows Vista you'll need to modify the Scheduled Task using Task Scheduler.
Select the 'FCI Client' tasks properties and select 'Run whether user is logged
on or not'.