From 1de6e76123287de2b86f9481c8c9ce22ab92ffaa Mon Sep 17 00:00:00 2001
From: Roland Bernard <rolbernard@unibz.it>
Date: Tue, 18 May 2021 10:28:53 +0200
Subject: [PATCH] Fixed more issues encountered with deployment

---
 server/.gitignore                           |  3 ++
 server/package.json                         |  3 +-
 server/src/config.ts                        |  6 ++--
 server/src/index.ts                         |  2 +-
 server/src/keys.ts                          | 29 +++++++++++------
 server/src/knexconfig.ts                    | 25 ++++++++------
 server/{ => src}/migrations/0000_initial.ts |  0
 server/yarn.lock                            | 36 ++-------------------
 8 files changed, 45 insertions(+), 59 deletions(-)
 rename server/{ => src}/migrations/0000_initial.ts (100%)

diff --git a/server/.gitignore b/server/.gitignore
index 004eb80..9f6ae97 100644
--- a/server/.gitignore
+++ b/server/.gitignore
@@ -14,3 +14,6 @@
 *.db
 *.sqlite3
 
+# keys
+/keys
+
diff --git a/server/package.json b/server/package.json
index ebb6e48..d8737d4 100644
--- a/server/package.json
+++ b/server/package.json
@@ -38,9 +38,8 @@
         "jest": "^26.6.3",
         "nodemon": "^2.0.7",
         "sqlite3": "^5.0.2",
-        "tsc": "^2.0.3",
         "ts-jest": "^26.5.4",
-        "ts-node": "^9.1.1",
+        "tsc": "^2.0.3",
         "typescript": "^4.2.4"
     }
 }
diff --git a/server/src/config.ts b/server/src/config.ts
index a5274f9..26fd98f 100644
--- a/server/src/config.ts
+++ b/server/src/config.ts
@@ -4,13 +4,13 @@ import { env } from 'process';
 export const port = env.PORT ?? 8000;
 
 export const keys = {
-    private: '/etc/ssl/localcerts/cert.key',
-    public: '/etc/ssl/localcerts/cert.pem',
+    private: './keys/cert.key',
+    public: './keys/cert.pem',
 };
 
 export const allowedOrigins = [ "*" ];
 
 export const environment = (env.NODE_ENV ?? 'development') as ('development' | 'staging' | 'production');
 
-export const web_serve = '../client/build/'
+export const web_serve = '../client/build/';
 
diff --git a/server/src/index.ts b/server/src/index.ts
index 4d91eab..eade34b 100644
--- a/server/src/index.ts
+++ b/server/src/index.ts
@@ -3,7 +3,7 @@ import express, { Request, Response, NextFunction } from 'express';
 import { json as bodyJson } from 'body-parser';
 import fileupload from 'express-fileupload';
 
-import { port, environment, web_serve } from './config';
+import { port, web_serve } from './config';
 import { addDefaultHeaders } from './headers';
 import v1 from './v1';
 
diff --git a/server/src/keys.ts b/server/src/keys.ts
index 8b42a1b..96e0edf 100644
--- a/server/src/keys.ts
+++ b/server/src/keys.ts
@@ -1,22 +1,31 @@
 
 import { readFileBuffer } from './util';
+import { env } from 'process';
 import { keys } from './config';
 
-let privateKey: Buffer;
+let privateKey: string;
 
-export async function getPrivateKey(): Promise<Buffer> {
-    if (!privateKey) {
-        privateKey = await readFileBuffer(keys.private);
+export async function getPrivateKey(): Promise<string> {
+    if (env.JWT_PRIVATE_KEY) {
+        return env.JWT_PRIVATE_KEY;
+    } else {
+        if (!privateKey) {
+            privateKey = (await readFileBuffer(keys.private)).toString();
+        }
+        return privateKey;
     }
-    return privateKey;
 }
 
-let publicKey: Buffer;
+let publicKey: string;
 
-export async function getPublicKey(): Promise<Buffer> {
-    if (!publicKey) {
-        publicKey = await readFileBuffer(keys.public);
+export async function getPublicKey(): Promise<string> {
+    if (env.JWT_PUBLIC_KEY) {
+        return env.JWT_PUBLIC_KEY;
+    } else {
+        if (!publicKey) {
+            publicKey = (await readFileBuffer(keys.public)).toString();
+        }
+        return publicKey;
     }
-    return publicKey;
 }
 
diff --git a/server/src/knexconfig.ts b/server/src/knexconfig.ts
index 0d2eb3a..7f5a503 100644
--- a/server/src/knexconfig.ts
+++ b/server/src/knexconfig.ts
@@ -1,5 +1,6 @@
 
 import { env } from 'process';
+import { join } from 'path';
 import { parse } from 'pg-connection-string';
 
 const pgconfig: any = parse(env.DATABASE_URL ?? '');
@@ -8,35 +9,41 @@ export default {
     development: {
         client: "sqlite3",
         connection: {
-            filename: "./dev.sqlite3"
-        }
+            filename: "./dev.sqlite3",
+        },
+        migrations: {
+            tableName: "knex_migrations",
+            directory: join(__dirname, 'migrations'),
+        },
     },
     staging: {
         client: "postgresql",
         connection: pgconfig,
         pool: {
             min: 2,
-            max: 10
+            max: 10,
         },
         migrations: {
-            tableName: "knex_migrations"
-        }
+            tableName: "knex_migrations",
+            directory: join(__dirname, 'migrations'),
+        },
     },
     production: {
         client: "postgresql",
         connection: {
             ...pgconfig,
             ssl: {
-                rejectUnauthorized: false
+                rejectUnauthorized: false,
             }
         },
         pool: {
             min: 2,
-            max: 10
+            max: 10,
         },
         migrations: {
-            tableName: "knex_migrations"
-        }
+            tableName: "knex_migrations",
+            directory: join(__dirname, 'migrations'),
+        },
     }
 };
 
diff --git a/server/migrations/0000_initial.ts b/server/src/migrations/0000_initial.ts
similarity index 100%
rename from server/migrations/0000_initial.ts
rename to server/src/migrations/0000_initial.ts
diff --git a/server/yarn.lock b/server/yarn.lock
index ae7177f..522520e 100644
--- a/server/yarn.lock
+++ b/server/yarn.lock
@@ -855,11 +855,6 @@ are-we-there-yet@~1.1.2:
     delegates "^1.0.0"
     readable-stream "^2.0.6"
 
-arg@^4.1.0:
-  version "4.1.3"
-  resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
-  integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
-
 argparse@^1.0.7:
   version "1.0.10"
   resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -1490,11 +1485,6 @@ cors@^2.8.5:
     object-assign "^4"
     vary "^1"
 
-create-require@^1.1.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
-  integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
-
 cross-spawn@^6.0.0:
   version "6.0.5"
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -1687,11 +1677,6 @@ diff-sequences@^26.6.2:
   resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
   integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==
 
-diff@^4.0.1:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
-  integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-
 domexception@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
@@ -3401,7 +3386,7 @@ make-dir@^3.0.0, make-dir@^3.1.0:
   dependencies:
     semver "^6.0.0"
 
-make-error@1.x, make-error@^1.1.1:
+make-error@1.x:
   version "1.3.6"
   resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
   integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
@@ -4720,7 +4705,7 @@ source-map-resolve@^0.5.0:
     source-map-url "^0.4.0"
     urix "^0.1.0"
 
-source-map-support@^0.5.17, source-map-support@^0.5.6:
+source-map-support@^0.5.6:
   version "0.5.19"
   resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
   integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
@@ -5171,18 +5156,6 @@ ts-jest@^26.5.4:
     semver "7.x"
     yargs-parser "20.x"
 
-ts-node@^9.1.1:
-  version "9.1.1"
-  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
-  integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
-  dependencies:
-    arg "^4.1.0"
-    create-require "^1.1.0"
-    diff "^4.0.1"
-    make-error "^1.1.1"
-    source-map-support "^0.5.17"
-    yn "3.1.1"
-
 tsc@^2.0.3:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/tsc/-/tsc-2.0.3.tgz#037fe579e3bd67a5cbdaa604b43c6c1991b04bef"
@@ -5566,8 +5539,3 @@ yargs@^15.4.1:
     which-module "^2.0.0"
     y18n "^4.0.0"
     yargs-parser "^18.1.2"
-
-yn@3.1.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
-  integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
-- 
GitLab