Submission server/infrastructure for the SRS challenge at FIC https://fic.srs.epita.fr/
Go to file
nemunaire 2259c78730 dashboard: came back online 2018-12-08 20:35:36 +01:00
admin Handle justified MCQ in admin and sync part 2018-12-08 20:35:36 +01:00
backend backend: save the checksum of each try, to be able to detect duplicates after 2018-12-08 20:35:36 +01:00
configs Retrieve time through X-FIC-Time header instead of time.json 2018-12-08 03:23:08 +01:00
dashboard dashboard: came back online 2018-12-08 20:35:36 +01:00
frontend Add issue field for exercice, to be able to communicate about problem with exercice 2018-12-08 20:35:36 +01:00
libfic Handle justified MCQ in admin and sync part 2018-12-08 20:35:36 +01:00
password_paper password_paper: fix handling of ^ 2018-05-11 15:03:10 +02:00
settings settings: add VideosLink parameter 2018-12-08 03:23:08 +01:00
.gitignore Add configuration for prod 2018-05-11 05:27:51 +02:00
Dockerfile-admin [Core] Updated the README for docker env build. 2018-05-17 17:01:07 +02:00
Dockerfile-backend Add Dockerfiles and docker-compose 2018-05-11 15:03:10 +02:00
Dockerfile-frontend Add Dockerfiles and docker-compose 2018-05-11 15:03:10 +02:00
LICENSE Add LICENSE: chose MIT 2018-05-11 15:03:11 +02:00
README.md [Core] Updated the README for docker env build. 2018-05-17 17:01:07 +02:00
docker-compose.yml [Docker] Pass FICCA env var to admin container to remove the WARNING about emptiness 2018-05-17 17:02:25 +02:00
fickit-backend.yml Add configuration for prod 2018-05-11 05:27:51 +02:00
fickit-frontend.yml Add configuration for prod 2018-05-11 05:27:51 +02:00
htdocs-admin admin: can give the static dir location 2017-11-25 15:01:01 +01:00
htdocs-dashboard dashboard: came back online 2018-12-08 20:35:36 +01:00
htdocs-frontend frontend: add link to frontend htdocs, like admin static pages 2017-11-25 15:01:01 +01:00

README.md

FIC Forensic CTF Platform

This is a CTF server for distributing and validating challenges. It is design to be robust, so it uses some uncommon technics like client certificate for authentication, lots of state of the art cryptographic methods and aims to be deployed in a DMZ network architecture.

Local developer setup

The importance of clone location

This is a monorepo, primarly intended for Go programming. If you want to be able to do programming stuff, you should take care of the path where you clone this repository, as it should be located inside your GOPATH:

git clone https://git.nemunai.re/fic/server.git $GOPATH/src/srs.epita.fr/fic-server

Using Docker

Use docker-compose build, then docker-compose up to launch the infrastructure.

After booting, you'll be able to reach the main interface at: http://localhost:8042/ and the admin one at: http://localhost:8081/.

Import folder

Local import folder

The following changes is only required if your are trying to change the local import folder ~/fic location.

Make the following changes inside this file docker-compose.yml:

23    volumes:
24 -     - ~/fic:/mnt/fic:ro
24 +     - <custom-path-to-import-folder>/fic:/mnt/fic:ro
Owncloud import folder

If your are trying to use the folder available with the Owncloud service, make the following changes inside this file docker-compose.yml:

29 -    command: --baseurl /admin/ -localimport /mnt/fic -localimportsymlink
29 +    command: --baseurl /admin/ -clouddav=https://owncloud.srs.epita.fr/remote.php/webdav/FIC%202019/ -clouduser <login_x> -cloudpass '<passwd>'

Manual builds

Running this project requires a web server (configuration is given for nginx), a database (currently supporting only MySQL), a go compiler for the revision 1.6 at least and a inotify-aware system.

  1. First, you'll need to retrieve the dependencies:

     go get -d srs.epita.fr/fic-server/admin
     go get -d srs.epita.fr/fic-server/backend
     go get -d srs.epita.fr/fic-server/frontend
    
  2. Then, build the three Go projects:

     go build -o $GOPATH/src/srs.epita.fr/fic-server/fic-admin srs.epita.fr/fic-server/admin
     go build -o $GOPATH/src/srs.epita.fr/fic-server/fic-backend srs.epita.fr/fic-server/backend
     go build -o $GOPATH/src/srs.epita.fr/fic-server/fic-frontend srs.epita.fr/fic-server/frontend
    
  3. Before launching anything, you need to create a database:

     mysql -u root -p <<EOF
     CREATE DATABASE fic;
     CREATE USER fic@localhost IDENTIFIED BY 'fic';
     GRANT ALL ON fic.* TO fic@localhost;
     EOF
    

    By default, expected credentials for development purpose is fic, for both username, password and database name. If you want to use other credentials, define the corresponding environment variable: MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD and MYSQL_DATABASE. Those variables are the one used by the mysql docker image, so just link them together if you use containers.

  4. Launch it!

     ./fic-admin &
    

    After initializing the database, the server will listen on http://localhost:8081/: this is the administration part.

     ./fic-backend &
    

    This daemon generates static and team related files and then waits for new submissions (expected in submissions directory). It only watchs modifications on the file system, it has no web interface.

     ./fic-frontend &
    

    This last server exposes an API that gives time synchronization to clients and handle submission reception (but without treating them).

For the moment, a web server is mandatory to serve static files, look at the samples given in the configs/ directory.