Files
freeplanet_serverside/server/server.js

177 lines
4.0 KiB
JavaScript

require('./config/config');
const _ = require('lodash');
const cors = require('cors');
var fs = require('fs');
const port = process.env.PORT;
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
i18n = require("i18n");
if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')) {
var privateKey = fs.readFileSync(process.env.PATH_CERT_KEY, 'utf8');
var certificate = fs.readFileSync(process.env.PATH_SERVER_CRT, 'utf8');
var credentials = { key: privateKey, cert: certificate };
var https = require('https');
} else {
var http = require('http');
}
require('./models/todo');
require('./models/user');
require('./models/subscribers');
require('./models/cfgserver');
const index_router = require('./router/index_router');
const push_router = require('./router/push_router');
const subscribe_router = require('./router/subscribe_router');
const email_router = require('./router/email_router');
const todos_router = require('./router/todos_router');
const users_router = require('./router/users_router');
const admin_router = require('./router/admin_router');
require('./db/mongoose');
console.log("DB: " + process.env.DATABASE);
console.log("PORT: " + port);
console.log("MONGODB_URI: " + process.env.MONGODB_URI);
var app = express();
const tools = require('./tools/general');
var mongoose = require('mongoose');
const cfgserver = mongoose.model('cfgserver');
const { ObjectID } = require('mongodb');
// app.use(express.static(path.join(__dirname, 'client')));
app.use(bodyParser.json());
// app.set('view engine', 'pug');
// Set static folder
// app.use(express.static(path.join(__dirname, 'public')));
i18n.configure({
locales: ['it', 'en', 'es'],
directory: __dirname + '/locales'
});
app.use(cors({
exposedHeaders: ['x-auth'],
}));
app.use(bodyParser.json());
app.use(i18n.init);
// Use Routes
app.use('/', index_router);
app.use('/subscribe', subscribe_router);
app.use('/push', push_router);
app.use('/email', email_router);
app.use('/todos', todos_router);
app.use('/users', users_router);
app.use('/admin', admin_router);
// catch 404 and forward to error handler
// app.use(function (req, res, next) {
// var err = new Error('Not Found');
// err.status = 404;
// next(err);
// });
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'pug');
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function (err, req, res, next) {
console.log('Error: ', err.message);
// console.trace();
res.status(err.status || 500).send({ error: err.message });
// res.render('error', {
// message: err.message,
// error: err
// });
});
}
if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')) {
var httpsServer = https.createServer(credentials, app);
console.log("httpsServer: port ", port);
httpsServer.listen(port);
} else {
console.log("httpServer: port ", port);
var httpServer = http.createServer(app);
httpServer.listen(port);
}
if (process.env.PROD !== 1) {
testmsgwebpush();
}
startserv();
function populateDBadmin() {
const cfgserv = [{
_id: new ObjectID(),
chiave: 'vers',
userId: 'ALL',
valore: '0.0.41'
}];
let cfg = new cfgserver(cfgserv[0]).save();
}
function startserv() {
// Check if is Empty (new Server Data)
cfgserver.count(function (err, count) {
if (!err && count === 0) {
populateDBadmin();
}
});
}
function testmsgwebpush() {
var { User } = require('./models/user');
// const tools = require('./tools/general');
User.findOne().then((user) => {
if (user !== null) {
tools.sendNotificationToUser(user._id, 'Titolo msg Test', 'Test Messaggio', '/', 'msg')
.then(ris => {
if (ris) {
} else {
// already sent the error on calling sendNotificationToUser
}
})
}
})
}
//app.listen(port, () => {
// console.log(`Server started at port ${port}`);
//});
module.exports = { app };