This repository has been archived on 2021-02-16. You can view files and clone it, but cannot push or open issues or pull requests.
Nodezzarella/app.js

85 lines
2.6 KiB
JavaScript

const express = require('express'),
cors = require("cors"),
app = express(),
session = require('express-session'),
bodyParser = require('body-parser'),
cookieParser = require('cookie-parser'),
helmet = require('helmet'),
log = require("color-logs")(true, true, "Nodezzarella app"),
fs = require("fs"),
promise = require('promise');
log.info("Application started and now preparing");
var corsOptions = {
"origin": "*",
"Access-Control-Allow-Origin": "*",
"methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
"preflightContinue": false
};
global.config = require("./config.json");
class Nodezzarella {
constructor(rootPath){
this.getDBType().then((configDB) => {
if(!configDB.flatFile){
var db = require('./lib/db/'+config.db+'/db');
new db().connectDB(configDB).then((connexion) => {
global.dbConnexion = connexion;
global.dbConf = configDB;
this.run();
});
}
else{
this.run();
}
}).catch((err) => {
new Error("Nodezzarella can't initialize");
});
}
getDBType(){
return new Promise((resolve, reject) => {
fs.access("./lib/db/"+config.db+"/config.json", fs.constants.F_OK || fs.constants.R_OK, (error) => {
if(error){
reject(new Error("File not exist"));
}
else{
resolve(require("./lib/db/"+config.db+"/config.json"));
}
});
});
}
run(){
var routes = require("./lib/router");
log.info("HTTP server listening on port", config.appPort);
log.info("Application ready");
app.set('trust proxy', 1);
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(session({
secret: 'Nodezzarella',
resave: true,
saveUninitialized: true,
cookie: { secure: false, maxAge: 3600*24*31 }
}))
app.use(config.webroot || "/", routes);
app.use(function(req, res, next) {
res.status(404);
res.send("404 not found");
return;
});
/**
* Listen to http://0.0.0.0:port
*/
app.disable('x-powered-by');
app.listen(config.appPort || 8888);
}
}
new Nodezzarella("/");