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'); const sendemail = require('./sendemail'); 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/project'); require('./models/user'); require('./models/subscribers'); require('./models/cfgserver'); require('./models/booking'); const mysql_func = require('./mysql/mysql_func'); const index_router = require('./router/index_router'); const push_router = require('./router/push_router'); const newsletter_router = require('./router/newsletter_router'); const booking_router = require('./router/booking_router'); const myevent_router = require('./router/myevent_router'); const subscribe_router = require('./router/subscribe_router'); const email_router = require('./router/email_router'); const todos_router = require('./router/todos_router'); const projects_router = require('./router/projects_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('views')); // 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('/signup_news', newsletter_router); app.use('/booking', booking_router); app.use('/event', myevent_router); app.use('/email', email_router); app.use('/todos', todos_router); app.use('/projects', projects_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 // }); }); } // *** DB CONNECTIONS *** // mysql_func.mySqlConn_Shen.connect((err) => { // if (!err) // console.log('DB connection to Shen Database succeded.'); // else // console.log('DB connection to Shen Database FAILED \n Error: ' + JSON.stringify(err, undefined, 2)); // }); 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(); testemail(); } // ----------------- MAILCHIMP ----- const querystring = require('querystring'); const mailchimpClientId = 'xxxxxxxxxxxxxxxx'; app.get('/mailchimp/auth/authorize', function(req, res) { res.redirect('https://login.mailchimp.com/oauth2/authorize?' + querystring.stringify({ 'response_type': 'code', 'client_id': mailchimpClientId, 'redirect_uri': 'http://127.0.0.1:3000/mailchimp/auth/callback' })); }); // ----------------- startserv(); function populateDBadmin() { const cfgserv = [{ _id: new ObjectID(), chiave: 'vers', userId: 'ALL', valore: '0.0.50' }]; 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 testemail() { /*const user = { username: 'paoloar77', name: 'Paolo', surname: 'Arena', email: "paolo.arena77@gmail.com", };*/ const user = { username: 'cricri_test', name: 'Cristina', surname: 'Barattoni', email: "Info@cristinabarattoni.it", }; // sendemail.sendEmail_Registration("it", user.email, user, '2', "http://link_solo_di_prova.com"); } function testmsgwebpush() { var { User } = require('./models/user'); // console.log('nomeapp 1: ' , tools.getNomeAppByIdApp(1)); // console.log('nomeapp 2: ' , tools.getNomeAppByIdApp(2)); 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 };