diff --git a/livrables/DOCKER-SOLUTION.md b/livrables/DOCKER-SOLUTION.md index baeea34..23dc81b 100644 --- a/livrables/DOCKER-SOLUTION.md +++ b/livrables/DOCKER-SOLUTION.md @@ -1,14 +1,13 @@ # Rendu de l'exercice Docker -**Auteur: [prénom] [nom] (`prénom.nom@heig-vd.ch`)** +**Auteur: Robin Demarta (`robin.demarta@heig-vd.ch`)** ## Compte rendu -Expliquez ici quelle stratégie vous avez utilisée pour vous connecter au service exécuté dans le container, en décrivant les étapes suivies: - -* xxx -* xxx -* ... +- Lorsqu'on lance un serveur, nous sommes accueillis avec un message contenant le port utilisé: **2020** +- Pour communiquer avec le serveur, j'ai d'abord voulu lancer un container oliechti/faq avec `docker run -i oliechti/faq /bin/bash`. +- Pour trouver l'adresse IP du serveur: `docker inspect `. Mais il n'y avait pas netcat. +- J'ai donc relancé le serveur avec le paramètre `-p 2020:2020` et `-p 2021:2020` pour le deuxième, afin de pouvoir communiquer via netcat depuis ma machine (`-p 2120:2020` afin de ne pas entrer en colision avec le premier serveur, le port 2020 du 2ème est bindé avec le 2021 de ma machine). ## Capture d'écran @@ -16,5 +15,4 @@ Assurez-vous que vous avez placé la capture d'écran dans un fichier nommé `CA ## Remarques -Si vous avez des choses à partager au sujet de l'exercice, utilisez cette dernière section. - +Aucune. \ No newline at end of file diff --git a/livrables/JOCC-SPEC.md b/livrables/JOCC-SPEC.md index bf80f2b..067d6c1 100644 --- a/livrables/JOCC-SPEC.md +++ b/livrables/JOCC-SPEC.md @@ -1,15 +1,61 @@ +# Calculator Protocol # Protocole JOCC 0.9 -**Auteur: [prénom] [nom] (`prénom.nom@heig-vd.ch`)** +**Auteur: Robin Demarta (`robin.demarta@heig-vd.ch`)** ## Introduction -A vous de jouer. +Dans ce document nous allons spécifier le protocole de communation client-serveur pour JOCC (Jokes give hOpe during the Covid Confinement period). Un serveur aura le rôle de stocker les jokes leur note, l'auteur, les catégories et toute autres données relatives à JOCC. Un client, lui, pourra envoyer des requêtes aux serveurs pour lire ou envoyer des jokes. -## XXX +## Choix -A vous de structurer ce document, en utilisant plusieurs sections. Une de ces sections doit être consacrée à la gestion de l'état, où vous nous expliquez si votre protocole est avec ou sans état, et pourquoi. +- L'échelle des notes d'évaluation des jokes est fixée de 1 à 10 afin d'assurer une homogénéité pour tous les servers. Le client ne sera donc pas perturbé s'il change souvent de serveur. +- Les catégories ne seront formées que de cararactères alphanumériques minuscules afin d'éviter la redondance. +- Le choix du nombre de jokes les plus récentes, les mieux évaluées ou les classement utilisateurs à afficher est laissé libre aux servers. +- Pour des raisons de respect de la vie privée, l'identification des utilisateurs ne se fera pas en stockant leur adresse IP mais en leur laissant choisir un pseudonyme au début de la communication. + +## Spécifications techniques + +- Port: 12000 +- Encodage: UTF-8 +- Initie et termine la communication: le client +- La commande d'initialisation `HI ` requiert directement le nom d'utilisateur afin d'éviter un envoie-réponse de plus. + +### Etat + +Le protocole est avec état: afin d'identifier les utilisateurs, ces derniers doivent choisir un pseudonyme (au début de la communation) qui sera stocké pendant la durée du dialogue. Ceci permet une bonne extensibilité en cas d'ajout de fonctionnalités nécessitant une authentification. Ce pseudonyme pourra être stocké à long terme si l'utilisateur insère une nouvelle joke, par exemple. + +### Commandes client + +**Notation des paramètres:** `` signifie que X est obligatoire et `[Y]` que Y est facultatif. + +- `HI `, initie la connection avec le serveur en spécifiant le pseudo avec lequel l'utilisateur faire ses actions. +- `SND [catégorie]`, envoie une nouvelle joke au serveur avec une éventuelle catégorie. +- `GET [catégorie]`, demande x jokes au server, provenant d'une éventuelle catégorie. +- `GET BST [catégorie]`, demande les meilleures jokes, avec une éventuelle catégorie. +- `GET RCT`, demande les jokes les plus récentes. +- `EVL `, permet d'évaluer (de 1 à 10) la joke ayant l'identifiant `id`. +- `SCR EVL`, affiche les utilisateur avec les jokes les mieux notées. +- `SCR CNT`, affiche les utilisateur ayant posté le plus de jokes. +- `BYE`, termine la connexion. + +### Commandes serveur +- `READY `, confirme au client ayant annoncé `HI ` que la connection est établie, le pseudo stocké (ce dernier est retourné à l'utilisateur pour confirmation), et que le serveur est prêt à recevoir des requêtes. +- ` - `, format d'une joke envoyée à l'utilisateur (une joke par ligne). +- ` - `, format d'affichage des utilisateurs dans un classement, où x est la position dans le classement et y le nombre lié au classement (e.g. le nombre de jokes postées ou l'id de la joke la mieux notée) + +### Exemple +- Client: `HI robin` +- Serveur: `READY robin` +- Client: `GET 3` +- Serveur: +``` +1 - Super joke 1 +3 - Funny thing +49 - Nice joke +``` +- Client: `BYE` ## Remarques -Si vous avez des choses à partager au sujet de l'exercice, utilisez cette dernière section. +Aucune. \ No newline at end of file diff --git a/livrables/captureDocker.png b/livrables/captureDocker.png new file mode 100644 index 0000000..0961c36 Binary files /dev/null and b/livrables/captureDocker.png differ