Loquicom 5 gadi atpakaļ
vecāks
revīzija
990be16c49
6 mainītis faili ar 65 papildinājumiem un 6 dzēšanām
  1. 2 1
      node/config.json
  2. 21 0
      node/data/cert.pem
  3. 28 0
      node/data/key.pem
  4. 4 2
      node/main.js
  5. 4 0
      node/src/config.js
  6. 6 3
      node/src/server.js

+ 2 - 1
node/config.json

@@ -3,5 +3,6 @@
   "auth": true,
   "findPort": true,
   "basePort": 8000,
-  "highestPort": 65535
+  "highestPort": 65535,
+  "https": false
 }

+ 21 - 0
node/data/cert.pem

@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDgzCCAmugAwIBAgIUS1+lFq/2nEM0ONYlVlP8IyXArDgwDQYJKoZIhvcNAQEL
+BQAwUTELMAkGA1UEBhMCRlIxDzANBgNVBAgMBkZyYW5jZTEOMAwGA1UEBwwFTGls
+bGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0xOTA5Mjgw
+NzI5NTBaFw0xOTEwMjgwNzI5NTBaMFExCzAJBgNVBAYTAkZSMQ8wDQYDVQQIDAZG
+cmFuY2UxDjAMBgNVBAcMBUxpbGxlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRz
+IFB0eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDIylaEtnI
+5lyPnoDYwu5LMQCn7AFw67dT74SQlXis3YglqAhhKGGvlKQKn9prydHBTx6Z46RN
+8Wu4GfaHY4Ph8GsGcdeC5gClG2WavBCJ79sPpboppI7e5gGGcfcsKr2kM9N+ibyJ
+VBuu0zqqZGU+wNJ05F2co7wqJOM4ut1dKCHoSnSgLrid6NyODRnUKV8lH9OcK7SE
+LAVbb1IcWk7pqlJhEMpr44Nu+zLOVnlz0EunVx2gEL233nzrOZup/j+WE0M3MkTz
+JFjR6dy2WwkafDtt9hil3StkV26al5P5gnKZfQIQvNSpkhHy+f7YHUHQOXNhNM6Q
+0BXQZNQj1S3VAgMBAAGjUzBRMB0GA1UdDgQWBBQJfC+dsXp9LgQzSG4UGaRwkZlO
+3zAfBgNVHSMEGDAWgBQJfC+dsXp9LgQzSG4UGaRwkZlO3zAPBgNVHRMBAf8EBTAD
+AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQC7HwFPgH67Cqgi4MYyI40bzp3bj3ehkzX0
+CBB0nq9Za3O4oBysHOq2Hkql2Q2GZoYFgP9V3y4zfqi/vfw+2DV1ct5MmZZmmfzf
+ulpGhGuQsv22qYYsaf+DX3FXMu4THbvj/f9VUxVUBLbg1Iyb4+SQmztJ2kEKOsva
+PU0doE6kl8iPaN8ovFq5rQqlmHnWNRS/LXdFR3ojUhh5wGyDFsVi/TNb7yMJuoIA
+p66/CEhdFIhLeQpWf7+f+m+4p++Lt5u1ivksoVUSCGEdCUgaygFVirpLS10YKck2
+XAU9TkTpZhI0Szh38j2yUlIGht4kzBVgp6p1wVzTgyPPpHYZVs+n
+-----END CERTIFICATE-----

+ 28 - 0
node/data/key.pem

@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDIylaEtnI5lyP
+noDYwu5LMQCn7AFw67dT74SQlXis3YglqAhhKGGvlKQKn9prydHBTx6Z46RN8Wu4
+GfaHY4Ph8GsGcdeC5gClG2WavBCJ79sPpboppI7e5gGGcfcsKr2kM9N+ibyJVBuu
+0zqqZGU+wNJ05F2co7wqJOM4ut1dKCHoSnSgLrid6NyODRnUKV8lH9OcK7SELAVb
+b1IcWk7pqlJhEMpr44Nu+zLOVnlz0EunVx2gEL233nzrOZup/j+WE0M3MkTzJFjR
+6dy2WwkafDtt9hil3StkV26al5P5gnKZfQIQvNSpkhHy+f7YHUHQOXNhNM6Q0BXQ
+ZNQj1S3VAgMBAAECggEANHa7o2/2BcGJmUNwONcP4j9mgb8+E/IL9BEtfwHw0+kr
+tZQbzKNiwCYihIi93MUCFAsFmzJM9ne2EmVIltX2m0RcQftRiev0uG9JPfTaLXvD
+Vc2k45VOpDcKqe7yGXnUStV0Q00c1385giNgXndnkRueebb8RCTxbhNE0/fJlEXB
+i2/KNWP6BwWjkD0e4yuEvMX1pTjjulQpRX20Lwun37rDgxYSMfXFWpBtIy1JOU+G
+Jm95+w0kD4ilruRFUQDywtuSKKniCIvQMug7OkRUbcyPWiLyOqzXuWdljWR6MCM/
+Rf+dPe6Qj52zxIunyeWnk4f/9u/AnZoSTr6UTm6ggQKBgQDuGEBQy0GGJseOji9f
+zYzTjrPRq5FOxFaQAD+IZOWhg9uspzw65+J7ACI1JNxb5oBjQDvtbRwLwV0Z9JXb
+ZsftVrs5ULk01elPkuC0faHGXba+Mz7YGVmYxTWh98yFOs9EvzHX4LqjsZhGVhIU
+vR84zhOKhXbhQyKAJGDfhcWyWQKBgQDRz+drww2iWk88mHfcxlvOPf0WaJNLJMhU
+fyzbmvs7Jqe4h04BA+rXuiPKSx6xiQAuSZ4s2YdGq9/demr4CQFhl8Mhm61i1fQu
+oh3uee+eLkHXGGTlkvpxWMQ/hPNHoZ8FgJQ6NHx9IHMXiZ6vCYlgG1GA9nqxim2Z
+umpPq48P3QKBgE9LIFBIAOBuldMyIzDiwd3LDrPrUY9L8BAxJPeFsrwhr81GPNbZ
+VyHjn4DXb9PjZiqnv82Iouh/U0RLooTZLAgs9FlYOvYPr43iupchp/jqSOv7IRjT
+CHXKZ9wzLJfKSDD7A9yDaWUOxknWbFsfyQAgEX32iOroctr+QozufjKxAoGBAI2O
+wSviwTstxVIz6IMLTfubtTs+OUq0uXjRCTntmd2x2e1VVNq4guUkEGu3PTE5JucU
+AmVuKqgS5IqwwqUwpj7rPttZBqWthv9DoAA7QuEtgnyWV9TQ0qpQ4q+ciutkbz8u
+HlQa/3cIwr45uteMDqTKKbZiFivdIs9ah8nTDUX9AoGAIgFFu1DMd8b0dz30LblV
+/l1nIxiCpvgXFXnzk5WORx/ElMwKCVolg3wRDvL/xklaAnNloxFGWqO9HlxMIR4h
+pGu4sjXIt6eF8dHEJZI9dmXA1gpqXyaO4WaA2VQYsHGhXSNY6KZLm0ifFbw8GuII
+UySFb2X3avtiJC2S3/vnvvw=
+-----END PRIVATE KEY-----

+ 4 - 2
node/main.js

@@ -36,6 +36,7 @@ const argv = require('yargs')
 
 // Chargement fichier config
 const config = require('./src/config');
+const protocol = (config.https) ? 'https' : 'http';
 
 // Creation variable globale
 if (!config.auth) {
@@ -49,16 +50,17 @@ global.sqlVerbose = argv.sql >= 1;
 
 // Lancement du serveur
 const server = require('./src/server');
+server.https = config.https;
 server.route(require('./src/router'));
 server.start(argv.port).then((port) => {
-    console.info(`Server starting on port ${port} (http://localhost:${port})`);
+    console.info(`Server starting on port ${port} (${protocol}://localhost:${port})`);
 }).catch((err) => {
     // Si erreur port deja utilisé et option recherche de port ouvert activée
     if (err.toString().includes('Error: No open ports') && config.findPort) {
         console.info(`Port ${argv.port} not available, search for a new available port`);
         server.start(config.basePort, config.highestPort).then((port) => {
             console.info(`New available port found: ${port}`);
-            console.info(`Server starting on port ${port} (http://localhost:${port})`);
+            console.info(`Server starting on port ${port} (${protocol}://localhost:${port})`);
         }).catch((err) => {
             console.error(err.toString());
             console.info('Unable to start the server, end of execution');

+ 4 - 0
node/src/config.js

@@ -23,6 +23,8 @@ if (config.storage === undefined) {
     throw 'basePort undefined in the config file';
 } else if (config.highestPort === undefined) {
     throw 'highestPort undefined in the config file';
+} else if (config.https === undefined) {
+    throw 'https undefined in the config file';
 }
 
 //Verification valeur
@@ -36,6 +38,8 @@ if (config.storage !== 'database' && config.storage !== 'file') {
     throw 'Bad value for basePort: number between 0 and 65535 expected';
 } else if (config.highestPort < 0 || config.highestPort > 65535 || config.highestPort < config.basePort) {
     throw 'Bad value for highestPort: number between 0 and 65535 and higher than or equal basePort expected';
+} else if (typeof config.https !== 'boolean') {
+    throw 'Bad value for https: boolean expected';
 }
 
 module.exports = config;

+ 6 - 3
node/src/server.js

@@ -23,7 +23,7 @@ class Server {
             // Tentative de demarrage du serveur sur la plage de port definit
             portfinder.getPortPromise().then((serverPort) => {
                 if (this.https) {
-
+                    this.httpsServer(serverPort);
                 } else {
                     this.httpServer(serverPort);
                 }
@@ -38,8 +38,11 @@ class Server {
         this.app.listen(port);
     }
 
-    httpsServer() {
-
+    httpsServer(port) {
+        https.createServer({
+            key: fs.readFileSync('./data/key.pem'),
+            cert: fs.readFileSync('./data/cert.pem')
+        }, this.app).listen(port);
     }
 
 }