wiki:

FATE

/

Fateserver


Version 2 (modified by Timothy_Gu, 5 years ago) (diff)

Add guide

fateserver is the server software used to power http://fate.ffmpeg.org. It is written by FFmpeg in 2011, in Perl CGI. The main repo for fateserver is located at git://git.ffmpeg.org/fateserver, with a GitHub mirror.

Instructions on Testing fateserver

When you make a change in fateserver, it is always a good idea to test whether everything work on your own work PC.

  1. Get Apache httpd. On Debian derivatives do
    sudo apt-get install apache2
    
  2. Get fateserver (from now on I'll assume fateserver is located under /var/www/fateserver).
    cd /var/www
    git clone git://git.ffmpeg.org/fateserver
    
  1. Make /var/www/fateserver the root of the server. This is OS-dependant, but on Ubuntu you have to modify /etc/apache2/sites-available/000-default.conf: From
    DocumentRoot /var/www
    
    to
    DocumentRoot /var/www/fateserver
    
  1. Allow CGI to be executed in Apache, add this to /etc/apache2/apache2.conf:
    LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
    <Directory /var/www/fateserver>
            Options +ExecCGI
            AddHandler cgi-script .cgi .pl
    </Directory>
    
  1. Create an user for people to report using ssh with.
    sudo adduser fate
    
  1. In that user's .ssh/authorized_keys, add one entry for each submitter with the following:
    command="FATEDIR=/var/www/fateweb FATE_USER=<some identifier of your choice for that submitter> /var/www/fateweb/fate-recv.sh" <submitter's public key>
    

This makes sure they get identified for fateweb and they can only run that one command, so they don't get a shell.

  1. Edit FATE.pm, set the $fatedir variable to the fateweb path
    our $fatedir = "/var/www/fateweb";
    

Note: fateserver can't be on a sub-dir. So it must be something like fate.ffmpeg.org, but can't be ffmpeg.org/fate. Otherwise the links are wrong and it won't load the CSS. Some tools are also needed on the server, like xz.

Thanks to Ramiro Polla for writing this guide. Major update by Timothy Gu.