From 423ce958240fb285435d0160ff6cd9f8918bca17 Mon Sep 17 00:00:00 2001
From: Nicolas Paschoud <nicolas.paschoud@etu.hesge.ch>
Date: Wed, 18 Dec 2019 23:05:49 +0100
Subject: [PATCH] Half of the doc

---
 documentation/Hyperdrive.md  | 745 +++++++++++++++++++++++++++++++++++
 documentation/hyperdrive.png | Bin 0 -> 39086 bytes
 2 files changed, 745 insertions(+)
 create mode 100644 documentation/Hyperdrive.md
 create mode 100644 documentation/hyperdrive.png

diff --git a/documentation/Hyperdrive.md b/documentation/Hyperdrive.md
new file mode 100644
index 0000000..4f09df7
--- /dev/null
+++ b/documentation/Hyperdrive.md
@@ -0,0 +1,745 @@
+# Hyperdrive
+
+## Une introduction
+
+Dans le cadre du cours de Développement Web Avancé, nous avons du réaliser un projet web. Durant ce projet, nous avons du créer une API REST afin d'offrir un accès aux données. Ce projet a été réalisé en Javascript en utilisant Node JS.
+
+## L'application
+
+Le projet que nous avons choisi de réaliser est un drive. Pour des besoins personnels, nous avons jugé ce projet pertinent et l'avons donc réalisé. Le but est donc de permettre à un utilisateur de s'enregistrer et de stocker des fichiers sur la plateforme. Il a aussi la possibilité de les organiser en créant des dossiers. Il a aussi la possibilité de les partager avec d'autre utilisateurs du service. Nous avons créer une interface simple découpée en quatre partie :
+
+- Une zone de menu pour se connecter, se déconnecter et créer des dossiers / importer des fichiers.
+- La zone de contenu du drive ou sont affichés tous les dossiers et fichiers de l'utilisateur.
+- Une zone d'information sur le fichier (nom, son propriétaire, la date d'upload, l'adresse d'upload)
+- Une zone de contenu affichants tous les fichiers que les autres utilisateurs partagent avec lui.
+
+L'utilisateur a la possibilité de s'inscrire ainsi que de se connecter au service. Lors de sa connexion, il reçoit un token lui permettant d'accéder à l'API. Lors de sa déconnexion, le token est détruit. Pour créer un dossier, il lui suffit de se mettre à un endroit spécifique et de cliquer sur le bouton "New File" après avoir renseigné le nom du dossier à créer.
+
+Pour permettre la géolocalisation des fichiers, nous avons utilisé 2 API publiques qui sont :
+
+- https://ip-api.com/ Cette API nous permet de récupérer les informations de localisation d'une adresse IP. Nous pouvons grâce à celle-ci, récupérer les latitude et longitude que nous stockons dans la base de données.
+- http://bot.whatismyipaddress.com Cette API permet de récupérer l'adresse ip de l'ordinateur courant. Nous l'utilisons exclusivement pour la raisons suivantes. Nous travaillons en local, et n'avons pas déployé de serveur public. Nous ne pouvons donc pas récupérer l'adresse du client qui fait une requête sur l'API car il s'agit d'une adresse privée. Il est cependant facile de modifier cette partie du code pour utiliser l'adresse du client au cas ou nous voudrions rendre notre API public.
+
+## Installation
+
+Avant de faire fonctionner le site, assurez vous d'avoir la plateforme Node JS d'installée. Installer ensuite les packages nécessaire au fonctionnement du site en vous rendant à la racine du projet et en executant la commande suivante : *npm install*
+
+Pour démarrer le site il faut réaliser ces 2 étapes :
+
+- Se rendre dans le dossier *db* se trouvant dans la hiérarchie du projet et taper la commande *docker-compose up -d*. Assurez-vous que le port 3306 est libre pour permettre au service MySQL de démarrer correctement.
+- Se rendre dans le projet ou se trouve le fichier *hyperdrive-rest*.js et taper la commande *node hyperdrive-rest.js*. après vous être assurer que le port 8080 n'est pas utilisé par un autre service. Le site est accessible à l'adress de votre ordinateur sur le port 8080.
+
+## Répartition
+
+Fleury Noé :
+
+- Upload / Download des fichiers
+  - Localisation de ceux-ci à l'upload
+- JWT
+- Partage des fichiers
+
+Paschoud Nicolas :
+
+- Base de donnée
+  - Requêtes SQL (sql-request.js)
+- Affichage de l'arborescence dans le drive
+- Affichage des informations du fichier
+
+## Architecture
+
+Notre architecture se présente sous cette forme.
+
+![hyperdrive](/Users/klaus/Documents/Web/Back/2019_tp2/documentation/hyperdrive.png)
+
+- Le bloc Client fais des appels à l'API hyperdrive qui lui réponds avec les données que le client souhaite. Le client les traites et les affiches à sa guise.
+- L'API Hyperdrive réponds à des requêtes des clients. Il ne fait appel qu'en cas de besoin aux API *whatismyipaddress* et *ip-api*.
+- L'API *ip-api* est appelée par hyperdrive seulement lorsque le client upload un fichier. Cet appel permet de retourner l'addresse de la personne en fonction de son IP. Les latitudes et longitudes sont stockée par l'hyperdrive dans le bloc SQL
+- Le bloc whatismyipaddress n'est util que dans le cadre du développement. Cette API nous sert à récupérer notre IP pour ensuite faire un appel à *ip-api*.
+
+## Technologies
+
+Pour la réalisation de ce projet, nous avons utilisé la plateform Node JS pour la réalisation de notre API REST. Nous avons aussi réaliser une base de données relationnelle MySQL qui se trouve dans un container. Tout notre projet a été réaliser en Javascript en utilisant les modules Node JS suivant : 
+
+- Express
+- MySQL
+- Crypto-js
+- http
+
+ \- Une représentation graphique de l’architecture
+ \- Les informations sur les technologies utilisées
+ \- Documentation des routes de l’API (adresse, méthode, paramètre, retours, etc.) - Toute informations utile à la compréhension de votre projet et au travail réalisé
+
+## Routes
+
+"use strict";
+
+const CryptoJS = require("crypto-js");
+
+const http = require("http");
+
+
+
+const express = require('express');
+
+const app = express();
+
+const port = 8080;
+
+const sql = require('./sql-request');
+
+
+
+
+
+///// JWT part /////
+
+
+
+var valid_tokens = [];
+
+
+
+String.prototype.hashCode = function() {
+
+​    var hash = 0, i, chr;
+
+​    if (this.length === 0) return hash;
+
+​    for (i = 0; i < this.length; i++) {
+
+​        chr   = this.charCodeAt(i);
+
+​        hash  = ((hash << 5) - hash) + chr;
+
+​        hash |= 0; // Convert to 32bit integer
+
+​    }
+
+​    return hash;
+
+};
+
+
+
+function tob64(elem){
+
+​    return Buffer.from(elem.toString()).toString('base64').slice(0, -2);
+
+}
+
+
+
+function Header(typ, alg){
+
+​    this.typ = typ;
+
+​    this.alg = alg;
+
+
+
+​    this.toString = function(){ return "{" + this.typ + "," + this.alg + "}"};
+
+}
+
+
+
+function Payload(user, pass_enc){
+
+​    this.user = user;
+
+​    this.pass_enc = pass_enc;
+
+
+
+​    this.toString = function(){ return "{" + this.user + "," + this.pass_enc + "}"};
+
+
+
+}
+
+
+
+function Signature(token){
+
+​    const secret = "our super hyperdrive secret" + new Date();
+
+​    return CryptoJS.HmacSHA512(token, secret);
+
+}
+
+
+
+function JWT(pl_user, pl_pass){
+
+​    this.header = new Header("jwt", "HS512");
+
+​    this.payload = new Payload(pl_user, pl_pass.hashCode());
+
+​    let token = tob64(this.header) + "." + tob64(this.payload);
+
+​    let signature = new Signature("token");
+
+​    this.signedToken = token + "." + signature;
+
+}
+
+
+
+
+
+function add_token(token, user) {
+
+
+
+​    for (let i = 0; i < valid_tokens.length; i++) {
+
+​        if(Object.keys(valid_tokens[i])[0] == token){
+
+​            valid_tokens.splice(i, 1);
+
+​            console.log("Unable to add token. (token already present)");
+
+​            break;
+
+​        }
+
+​    }
+
+​    let obj = {}; obj[token.toString()] = user;
+
+​    valid_tokens.push(obj);
+
+​    console.log(valid_tokens)
+
+
+
+​    console.log("Successfully added token.");
+
+
+
+​    
+
+}
+
+
+
+function remove_token(token) {
+
+
+
+​    for (let i = 0; i < valid_tokens.length; i++) {
+
+​        if(Object.keys(valid_tokens[i])[0] == token){
+
+​            valid_tokens.splice(i, 1);
+
+​            console.log("Successfully removed token from valid_tokens.");
+
+​            return true;
+
+​        }
+
+​    }
+
+
+
+​    console.log("Unable to remove token from valid_tokens. (Token not present)");
+
+
+
+
+
+}
+
+
+
+// verify the token
+
+// return : user if exist
+
+function verify_token(token) {
+
+​    for (let i = 0; i < valid_tokens.length; i++) {
+
+​        if(Object.keys(valid_tokens[i])[0] == token)
+
+​            return valid_tokens[i][token];
+
+​    }
+
+​    return false;
+
+}
+
+
+
+
+
+///// End JWT part /////
+
+
+
+
+
+app.get('/', (req, res) => {
+
+​    res.sendFile(__dirname + '/front/index.html');
+
+});
+
+
+
+/* Login
+
+ \* param : pseudo
+
+ \* param : password
+
+ */
+
+// resCode : [ 0: User now logged in, 1: False password, 2: Invalid username, 3: Empty user or pass ]
+
+app.get('/login', (req, res) => {
+
+
+
+​    const user = req.query['user'];
+
+​    const pass = req.query['pass'];
+
+​    sql.userExist(user, pass, (element) => {
+
+​        if (element)
+
+​            check_login(user, pass, element, res);
+
+​    });
+
+
+
+});
+
+
+
+function check_login(user, pass, userObject, res) {
+
+​    if (!user || !pass) {
+
+​        res.send({
+
+​            "route": "/login",
+
+​            "resCode": 4,
+
+​            "comment": "Please enter a username and a password."
+
+​        })
+
+​    }
+
+​    else{
+
+​        if (userObject){
+
+​            if (userObject.passwd == pass.hashCode()) {
+
+​                let jwt = new JWT(user, pass);
+
+
+
+​                res.send({
+
+​                    "route": "/login",
+
+​                    "resCode": 0,
+
+​                    "signedToken": jwt.signedToken,
+
+​                    "comment": `Password for user '${ user }' true.`
+
+​                })
+
+
+
+​                add_token(jwt.signedToken, user);
+
+
+
+​            }
+
+​            else {
+
+​                res.send({
+
+​                    "route": "/login",
+
+​                    "resCode": 1,
+
+​                    "comment": `Password for user '${ user }' false.`
+
+​                })
+
+​            }
+
+​        }
+
+​        else {
+
+​            res.send({
+
+​                "route": "/login",
+
+​                "resCode": 2,
+
+​                "comment": `Username '${ user }' don't exist.`
+
+​            })
+
+​        }
+
+​    }
+
+}
+
+
+
+// resCode : [ 0: Token is valid, 1: Token is not valid, 3: Empty token ]
+
+app.get('/testmytoken', (req, res) => {
+
+
+
+​    let token = req.query['token'];
+
+
+
+​    if (!token) {
+
+​        res.send({
+
+​            "resCode": 3,
+
+​            "comment": "Please enter a token."
+
+​        })
+
+​    }
+
+​    
+
+​    if (verify_token(token)){
+
+​        res.send({
+
+​            "resCode": 0,
+
+​            "comment": "Your token is valid."
+
+​        })
+
+​    }
+
+​    else {
+
+​        res.send({
+
+​            "resCode": 1,
+
+​            "comment": "Your token is not valid."
+
+​        })
+
+​    }
+
+
+
+})
+
+
+
+// resCode : [ 0: Logout ok, 1: Already logged out, 3: Empty token ]
+
+app.get('/logout/', (req, res) => {
+
+
+
+​    let token = req.query['token'];
+
+
+
+​    if (!token) {
+
+​        res.send({
+
+​            "resCode": 3,
+
+​            "comment": "Please enter a token."
+
+​        })
+
+​    }
+
+
+
+​    else {
+
+​        if (verify_token(token)){
+
+​            remove_token(token);
+
+​            res.send({
+
+​                "resCode": 0,
+
+​                "comment": "Your are now logged out."
+
+​            })
+
+​        }
+
+​        else {
+
+​            res.send({
+
+​                "resCode": 1,
+
+​                "comment": "Your are already logged out."
+
+​            })
+
+​        }
+
+​    }
+
+​    
+
+
+
+})
+
+
+
+/**
+
+ \* Request register
+
+ \* param : pseudo
+
+ \* param : password
+
+ */
+
+app.get('/register/', (req, res) => {
+
+​    sql.addUser(req.query['login'], req.query['pass']);
+
+​    res.send(`Request for a register (${req.query['login']}, ${req.query['pass']})`);
+
+})
+
+
+
+/**
+
+ \* Request to share a file with a user
+
+ \* param : file_id
+
+ \* param : user1
+
+ \* param : user2
+
+ \* user1 share a file_id with user2
+
+ */
+
+app.get('/share/:file_id/:to_user', (req, res) => {
+
+
+
+​    let token = req.query["token"]
+
+​    let user = verify_token(token);
+
+​    console.log("user : " + user)
+
+
+
+​    if (req.params['to_user'] && req.params['file_id']){
+
+​        let to_user = req.params['to_user'];
+
+​        let file_id = req.params['file_id'];
+
+​        sql.addSharing(user, to_user, file_id).then(function (r) {
+
+​            res.send(r);
+
+​        })
+
+​    }
+
+​    else{
+
+​        res.send("Unable to share. Please provide a user to share with and a file_id.");
+
+​    }
+
+})
+
+
+
+/**
+
+ \* Request to upload a file
+
+ */
+
+app.get('/upload/', (req, res) => {
+
+​    let d = new Date();
+
+​    let date_upload = d.getTime();
+
+​    // "abcd", "un", "/a", 46.2054, 6.1459, date_upload
+
+
+
+​    http.get('http://bot.whatismyipaddress.com', (res) => {
+
+​        res.setEncoding('utf8');
+
+​        res.on('data', function(chunk){
+
+​            console.log(chunk);
+
+​            let ip = chunk;
+
+​            http.get('http://ip-api.com/json/' + ip, (resp) => {
+
+​                let data = '';
+
+​                resp.on('data', (chunk) => {
+
+​                    data += chunk;
+
+​                });
+
+
+
+​                resp.on('end', () => {
+
+​                    console.log(JSON.parse(data));
+
+​                });
+
+​            });
+
+​        });
+
+​    });
+
+
+
+​    res.send(`Request for an upload (${req.query['file']})`)
+
+});
+
+
+
+app.get('/download/:file_id', (req, res) => {
+
+​    let token = req.query["token"]
+
+​    let file_id = req.params["file_id"]
+
+
+
+​    let user = verify_token(token);
+
+​    if (user){
+
+​        sql.verifyFileID(user, file_id, (filename) => {
+
+​            console.log(filename)
+
+​            if (filename){
+
+​                res.download("files/" + file_id, filename);
+
+​            }
+
+​            else{
+
+​                res.send("Can't download (not your file).")
+
+​            }
+
+​        })
+
+​    }
+
+​    else{
+
+​        res.send("Can't download (please be connected).")
+
+​    }
+
+})
+
+
+
+/**
+
+ \* This function return the content of a new path
+
+ \* param 
+
+ */
+
+app.get('/change-path*', (req, res) => {
+
+​    let path = req.params['0'].split("/");
+
+​    path.pop();
+
+​    path = path.join("/");
+
+​    let tok = req.params['0'].split("/").pop();
+
+​    let name = verify_token(tok);
+
+​    if (name) {
+
+​        let content = sql.changeDirectory(name, path,
+
+​        (content) => {
+
+​            res.send(content);
+
+​        });
+
+​    }
+
+})
+
+
+
+app.get('/create-path*', (req, res) => 
+
+### /get-info
+
+La route get-info nous permet de récupérer les informations d'un fichier
+
+Paramètres : 
+
+- file_id : Id du fichier dont on souhaite avoir les informations
+- token : Il s'agit du token d'authentification
+
+### /show-shared-file
+
+
+
+
+
+\- Une conclusion
\ No newline at end of file
diff --git a/documentation/hyperdrive.png b/documentation/hyperdrive.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5dbfc582bf08530d910720444fae54da2cc6b62
GIT binary patch
literal 39086
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
B8MFWZ

literal 0
HcmV?d00001

-- 
GitLab