- MultiDominio: api.riso.app, api.gruppomacro.app
This commit is contained in:
@@ -12,18 +12,23 @@ const cors = require('cors');
|
||||
// console.log(" 2) fs");
|
||||
const fs = require('fs');
|
||||
|
||||
var https = require('https');
|
||||
var http = require('http');
|
||||
|
||||
const NUOVO_METODO_TEST = true;
|
||||
|
||||
const METODO_MULTI_CORS = false;
|
||||
|
||||
const server_constants = require('./tools/server_constants');
|
||||
|
||||
//const throttle = require('express-throttle-bandwidth');
|
||||
// app.use(throttle(1024 * 128)) // throttling bandwidth
|
||||
|
||||
const port = process.env.PORT;
|
||||
|
||||
// var cookieParser = require('cookie-parser')
|
||||
// var csrf = require('csurf')
|
||||
const express = require('express');
|
||||
const vhost = require('vhost');
|
||||
|
||||
const bodyParser = require('body-parser');
|
||||
const path = require('path');
|
||||
|
||||
@@ -246,79 +251,14 @@ myLoad().then(ris => {
|
||||
|
||||
if ((process.env.NODE_ENV === 'production') ||
|
||||
(process.env.NODE_ENV === 'test')) {
|
||||
|
||||
const keyStream = path.resolve(`./${process.env.PATH_CERT_KEY}`);
|
||||
const certificateStream = path.resolve(`./${process.env.PATH_SERVER_CRT}`);
|
||||
|
||||
const privateKey = fs.readFileSync(keyStream, "utf8");
|
||||
const certificate = fs.readFileSync(certificateStream, "utf8");
|
||||
|
||||
|
||||
if (NUOVO_METODO_TEST) {
|
||||
credentials = {
|
||||
key: privateKey,
|
||||
cert: certificate,
|
||||
};
|
||||
} else {
|
||||
// NON USATO !
|
||||
credentials = {
|
||||
key: privateKey,
|
||||
cert: certificate,
|
||||
ca: [
|
||||
fs.readFileSync(process.env.PATH_SSL_ROOT_PEM, 'utf8'),
|
||||
fs.readFileSync(process.env.PATH_SSL_CHAIN_PEM, 'utf8'),
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
var https = require('https');
|
||||
} else {
|
||||
if (process.env.HTTPS_LOCALHOST === "true") {
|
||||
var privateKey = fs.readFileSync(process.env.PATH_CERT_KEY, 'utf8');
|
||||
var certificate = fs.readFileSync(process.env.PATH_SERVER_CRT, 'utf8');
|
||||
credentials = {
|
||||
key: privateKey,
|
||||
cert: certificate,
|
||||
ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
|
||||
honorCipherOrder: true,
|
||||
secureProtocol: 'TLSv1_2_method',
|
||||
};
|
||||
var https = require('https');
|
||||
|
||||
} else {
|
||||
var http = require('http');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((process.env.NODE_ENV === 'production') ||
|
||||
(process.env.NODE_ENV === 'test') || process.env.HTTPS_LOCALHOST === "true") {
|
||||
|
||||
if (false) {
|
||||
/*pem.createCertificate({ days: 1, selfSigned: true }, (err, keys) => {
|
||||
if (err) {
|
||||
throw err
|
||||
}
|
||||
const httpsServer = https.createServer({ key: keys.clientKey, cert: keys.certificate }, (req, res) => {
|
||||
res.end('o hai!')
|
||||
}).listen(port)
|
||||
}) */
|
||||
} else {
|
||||
const httpsServer = https.createServer(credentials, app);
|
||||
|
||||
console.log('httpsServer: port ', port);
|
||||
httpsServer.listen(port);
|
||||
}
|
||||
} else {
|
||||
console.log('httpServer: port ', port);
|
||||
const httpServer = http.createServer(app);
|
||||
httpServer.listen(port);
|
||||
}
|
||||
startServer(app, process.env.PORT);
|
||||
|
||||
mystart();
|
||||
|
||||
});
|
||||
|
||||
|
||||
// app.use(throttle(1024 * 128)); // throttling bandwidth
|
||||
|
||||
// app.use((req, res, next) => {
|
||||
@@ -769,5 +709,104 @@ async function faitest() {
|
||||
}
|
||||
}
|
||||
|
||||
/*const domains = [
|
||||
{ hostname: 'piuchebuono.app', port: 3000 },
|
||||
{ hostname: 'gruppomacro.app', port: 3010 },
|
||||
];*/
|
||||
|
||||
function getCredentials(hostname) {
|
||||
|
||||
if (NUOVO_METODO_TEST) {
|
||||
if (METODO_MULTI_CORS) {
|
||||
const fileprivkey = `/etc/letsencrypt/live/${hostname}/privkey.pem`;
|
||||
const filecert = `/etc/letsencrypt/live/${hostname}/cert.pem`;
|
||||
|
||||
console.log('fileprivkey: ', fileprivkey, ' filecert: ', filecert);
|
||||
|
||||
/* return {
|
||||
|
||||
SNICallback: function (hostname, callback) {
|
||||
console.log('hostname: ', hostname);
|
||||
if (domains.includes(hostname)) {
|
||||
const fileprivkey = `/etc/letsencrypt/live/${hostname}/privkey.pem`;
|
||||
const filecert = `/etc/letsencrypt/live/${hostname}/fullchain.pem`;
|
||||
|
||||
// console.log('fileprivkey: ', fileprivkey, ' filecert: ', filecert);
|
||||
|
||||
const domainCert = {
|
||||
key: fs.readFileSync(fileprivkey, "utf8"),
|
||||
cert: fs.readFileSync(filecert, "utf8"),
|
||||
};
|
||||
callback(null, domainCert);
|
||||
} else {
|
||||
callback(null, { key: privateKey, cert: certificate });
|
||||
}
|
||||
}
|
||||
|
||||
};*/
|
||||
|
||||
return {
|
||||
key: fs.readFileSync(fileprivkey, "utf8"),
|
||||
cert: fs.readFileSync(filecert, "utf8")
|
||||
};
|
||||
|
||||
} else {
|
||||
const keyStream = path.resolve(`./${process.env.PATH_CERT_KEY}`);
|
||||
const certificateStream = path.resolve(`./${process.env.PATH_SERVER_CRT}`);
|
||||
|
||||
const privateKey = fs.readFileSync(keyStream, "utf8");
|
||||
const certificate = fs.readFileSync(certificateStream, "utf8");
|
||||
|
||||
return { key: privateKey, cert: certificate };
|
||||
}
|
||||
} else if (process.env.HTTPS_LOCALHOST === "true") {
|
||||
try {
|
||||
return {
|
||||
key: fs.readFileSync(process.env.PATH_CERT_KEY, 'utf8'),
|
||||
cert: fs.readFileSync(process.env.PATH_SERVER_CRT, 'utf8'),
|
||||
ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
|
||||
honorCipherOrder: true,
|
||||
secureProtocol: 'TLSv1_2_method'
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Errore durante la lettura dei file di certificazione, error:', error.message);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
// Caso di default non specificato, potrebbe essere necessario aggiungere una gestione degli errori qui
|
||||
}
|
||||
|
||||
function startServer(app, port) {
|
||||
try {
|
||||
const isProduction = ['production', 'test'].includes(process.env.NODE_ENV);
|
||||
|
||||
let domains = [];
|
||||
|
||||
try {
|
||||
domains = JSON.parse(process.env.DOMAINS);
|
||||
} catch (error) {
|
||||
console.error("Errore durante la conversione della stringa DOMAINS:", error);
|
||||
}
|
||||
|
||||
console.log('domains', domains);
|
||||
|
||||
if (isProduction) {
|
||||
for (let i = 0; i < domains.length; i++) {
|
||||
const credentials = getCredentials(domains[i].hostname);
|
||||
// console.log('credentials: ', credentials);
|
||||
const httpsServer = https.createServer(credentials, app);
|
||||
console.log('⭐️⭐️⭐️⭐️⭐️ HTTPS server: ' + domains[i].hostname + ' Port:', domains[i].port);
|
||||
httpsServer.listen(domains[i].port);
|
||||
}
|
||||
} else {
|
||||
const httpServer = http.createServer(app);
|
||||
console.log('⭐️⭐️⭐️ HTTP server IN LOCALE : port', port);
|
||||
httpServer.listen(port);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('error ' + e);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { app };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user