FFDN voting tool

Arnaud Delcasse 60cbdb2b48 Fix error during merge il y a 12 ans
static 9a0891ac3f Many improvment in votes il y a 13 ans
templates e82173a1eb Add vote deletion (only hides it in the DB : can be recovered manually from SQL by updating the row) il y a 12 ans
README.md 4997294d75 Add README file with instructions for development and production installation il y a 12 ans
main.py 60cbdb2b48 Fix error during merge il y a 12 ans
schema.sql 4036f1d5d9 Add OpenID authentication in parallel with casual one il y a 12 ans
schema_0.1.X_to_0.2.X.sql e82173a1eb Add vote deletion (only hides it in the DB : can be recovered manually from SQL by updating the row) il y a 12 ans
settings.py.example 90a7047aad change version number il y a 12 ans

README.md

Système de vote pour associations

Développé pour et par des membres de la Fédération FDN (http://ffdn.org)

Installation (développement)

Dépendances :

  • python (testé avec python 2.7
  • python-openid
  • sqlite3
  • Flask
  • Flask-OpenID

Récupérer la dernière version de développement : $ git clone git@git.ndn.cx:cavote.git

Installation de la base de données : `$ sqlite3 /path/to/cavote.db

.read schema.sql`

Modifiez les paramètres de settings.py pour qu'ils correspondent à votre installation

Lancez le serveur en mode développement : $ python main.py

Dans un navigateur, vous pourrez à cavote à l'adresse http://localhost:5000/.

L'utilisateur par défaut peut être activé à l'adresse http://localhost:5000/login/1/victory. Modifiez en les identifiants de connection lors du premier accès.

Installation (production)

Les étapes pour l'installation en mode production sont les mêmes qu'en mode développement, jusqu'à l'étape de lancement du serveur.

NDN a choisi d'utiliser gunicorn pour mettre en production son instance de cavote.

Pour celà, installez gunicorn (dépendant de votre distribution).

Dans le répertoire de cavote, tappez : gunicorn -w 4 -b 192.168.122.104:8000 main:app -D

  • -w 4 signifie que gunicorn lancera 4 "workers", ce qui devrait amplement suffir
  • remplacez l'adresse IP et le port par votre configuration. L'adresse IP doit correspondre à qu'appellera votre serveur web en frontend (nous utiliserons nginx dans l'exemple). Si ce frontend est situé sur la même machine que cavote, l'adresse IP sera 127.0.0.1.
  • De même, changez de port si vous souhaitez en utiliser un autre
  • -D signifie que gunicorn sera lancé en daemon.
    • Enlever vous permettrait de tester et pouvoir fermer le serveur en tappant Ctrl+C
    • En mode daemon, un pkill gunicorn killera vos workers gunicorn

Configurez nginx (/etc/nginx/sites-enabled ou /etc/nginx/nginx.conf ou autre selon votre système)

    server {
      listen       <votre-ip>:80;
      server_name  <votre-url-cavote>;
      rewrite      ^(.*) https://<votre-url-cavote>$1 permanent;
    }

    #
    # FIXME: specify correct value(s) for `server_name` directive and
    #        `ssl_certificate` + `ssl_certificate_key` directives below
    #
    server {
      listen       <votre-ip>:443;
      server_name  <votre-url-cavote>;
      ## make sure you change location if you did clone into /usr/local/app

      ssl on;
      ssl_certificate      /path/to/<votre_certificat_ssl>.crt;
      ssl_certificate_key  /path/to/<votre_certificat_ssl>.key;
      # enable better ssl security if you like to mitigate BEAST and other exploits
      #ssl_session_cache       shared:SSL:10m;
      #ssl_session_timeout     5m;
      ssl_protocols           SSLv3 TLSv1;
      ssl_ciphers             ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM;
      ssl_prefer_server_ciphers on;
      #add_header              Strict-Transport-Security max-age=500;
      #ssl_ecdh_curve          secp521r1;


    #
    # FIXME: modify the `rewrite` directive below to point to proper S3 bucket
    #        and path or comment out if you will store images on local file system
    #
    location / {
      proxy_pass        http://192.168.122.104:8000;
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Proto https;
      proxy_redirect off;
      client_max_body_size 4M;
      client_body_buffer_size 128K;
    }

      error_page 500 502 503 504 /50x.html;
      location = /50x.html {
      root html;
      }
    }

Modifiez les valeurs correspondant a la configuration de votre installation. Dans l'exemple ci dessus, cavote sera disponible automatiquement et uniquement en HTTPS.

Licence

La licence appliquée est la GNU/AGPLv3

Contributeurs

  • Julien Rabier
  • Guillaume Subiron
  • Arnaud Delcasse
  • Pierre 'Rogdham' Pavlidès