From a307cd63a37213083e98d1fe39592fa97235f4cc Mon Sep 17 00:00:00 2001 From: Danielv123 Date: Sun, 14 Jan 2018 21:50:47 +0100 Subject: [PATCH] Auto generate ssl cert and download spritesheet on npm install --- lib/generateSSLcert.js | 5 ++--- lib/npmPostinstall.js | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/lib/generateSSLcert.js b/lib/generateSSLcert.js index fd65e9db..1a3288cf 100644 --- a/lib/generateSSLcert.js +++ b/lib/generateSSLcert.js @@ -7,13 +7,12 @@ var pki = forge.pki; var rsa = forge.pki.rsa; var startTime, endTime; -var doLogging = true; -if(!doLogging) console.log = function(){}; - module.exports = function({ bits = 2048, certificatePath = "database/certificate", + doLogging = false, } = {}){ + if(!doLogging) console.log = function(){}; console.log("Generating SSL certificate with "+bits+" bits at "+certificatePath); startTime = Date.now(); diff --git a/lib/npmPostinstall.js b/lib/npmPostinstall.js index c0e6beae..7ad32b06 100644 --- a/lib/npmPostinstall.js +++ b/lib/npmPostinstall.js @@ -1,4 +1,6 @@ var mkdirp = require("mkdirp"); +var http = require('http'); +var fs = require('fs'); var directories = [ "database/linvodb", @@ -15,4 +17,38 @@ directories.forEach(path => { console.log("mkdirp "+path); } }); -}) +}); + +function download(url, file){ + var writeStream = fs.createWriteStream(file); + var request = http.get(url, function(response) { + response.pipe(writeStream); + response.on("end", () => { + console.log("Downloaded "+file+" from "+url) + }); + }); +} + +let downloadList = [ + { + url: "http://fbpviewer.trakos.pl/images/spritesheet.json", + file: "static/pictures/spritesheet.json", + }, + { + url: "http://fbpviewer.trakos.pl/images/spritesheet.png", + file: "static/pictures/spritesheet.png", + }, +] +downloadList.forEach(item => { + download(item.url, item.file); +}); + +// generate SSL certificates if they are missing +if(!fs.existsSync("database/certificates") || !fs.existsSync("database/certificates/cert.crt") || !fs.existsSync("database/certificates/cert.key")){ + var generateSSLcert = require("./generateSSLcert.js"); + + generateSSLcert({ + certificatePath: "database/certificates", + doLogging: true, + }); +} \ No newline at end of file