Courriel
est un projet pour le cours de
Technologies Internet, 2016.
Il s'agit d'un système de messagerie pair-à-pair,
c.-à-d., sans serveur centrale.
Le developpement du courriel
est séparé en deux parties:
-
Projet 1: Interface graphique pour le
courriel
(code enhtml/css/js
à executê par un navigateur). -
Projet 2: Un mini-serveur permettant le partage (distribution) des courriels (messages) entre plusieurs utilisateurs.
On se donne une représentation de l'état du système par une structure de données suivante:
etat = {
"inbox": [
{
"from": "AF22111212232211122",
"date": "2015 12 28 20:15:42",
"msg": "Un court message ...." },
{
"from": "AF22111212232211122",
"date": "2016 01 03 10:15:31",
"msg": "Un autre message ...." } ],
"outbox": [
{
"to": "AF22111212232211122",
"date": "2016 01 12 20:15:42",
"msg": "Bla bla bla ...." } ],
"yp": {
"AF22111212232211122": {"name": "Jean Fanchon"},
"90221F212A4200001AA": {"name": "Bob"} }
}
L'interface web devrait pouvoir:
-
Visualiser l'état: lecture des messages dans
etat.inbox
etetat.outbox
, et des adresses dansetat.yp
. -
Composer un nouveau message en l'ajoutant dans la liste
etat.outbox
. -
Modifier la liste d'adresse
etat.yp
Chaque groupe (de 4 à 6 personnes) devrait produire un document
courriel.html
accompagné par des documents *.css
et *.js
. L'état
initial (la valeur de la variable etat
) devrait se trouver dans votre
code javascript.
Le rôle de mini-serveur
est:
-
d'initialiser, de maintenir, et de servir à l'interface graphique la valeur de l'
etat
; -
d'échanger avec les pairs les messages de
etat.outbox
; -
de chiffrer et déchiffrer les messages en utilisant la cryptographie asymétrique (RSA), pour garantir la confidentialité.
L'application se trouve dans src/
.
├── client/index.js - code pour navigateur (via `browserify` -> `public/js/courriel.js`)
├── index.js - code pour le serveur
├── peers.js - communication/synchronisation entre pairs
├── node_modules/...
├── package.json - description de dépendances de l'application
├── public - les fichiers dans `public/*` sont accessible aux clients "as is"
│ ├── css/...
│ ├── images/...
│ └── js/...
└── views/courriel.jade - code `jade` pour la page `html` de l'application
Faire:
> git clone https://github.com/inf4533-2016/courriel.git
> cd courriel/src
> npm install
> npm run build
> npm start
Le URL du serveur est: http://localhost:8888/