509 lines
13 KiB
JavaScript
Executable File
509 lines
13 KiB
JavaScript
Executable File
require('./config/config');
|
|
|
|
// console.log(" lodash");
|
|
|
|
const _ = require('lodash');
|
|
// console.log(" cors");
|
|
const cors = require('cors');
|
|
|
|
// console.log(" 2) fs");
|
|
const fs = require('fs');
|
|
|
|
//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 bodyParser = require('body-parser');
|
|
const path = require('path');
|
|
|
|
const cron = require('node-cron');
|
|
|
|
require('./db/mongoose');
|
|
|
|
const {Settings} = require('./models/settings');
|
|
|
|
const i18n = require('i18n');
|
|
|
|
// OBTAIN
|
|
// https://www.psclistens.com/insight/blog/enabling-a-nodejs-ssl-webserver-using-let-s-encrypt-pem-certificates/
|
|
|
|
|
|
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,
|
|
ca: [
|
|
fs.readFileSync(process.env.PATH_SSL_ROOT_PEM, 'utf8'),
|
|
fs.readFileSync(process.env.PATH_SSL_CHAIN_PEM, 'utf8')
|
|
]
|
|
};
|
|
var https = require('https');
|
|
} else {
|
|
var http = require('http');
|
|
}
|
|
|
|
console.log('DB: ' + process.env.DATABASE);
|
|
// console.log("PORT: " + port);
|
|
// console.log("MONGODB_URI: " + process.env.MONGODB_URI);
|
|
|
|
var app = express();
|
|
|
|
let telegrambot = null;
|
|
|
|
const tools = require('./tools/general');
|
|
|
|
require('./models/cfgserver');
|
|
|
|
const shared_consts = require('./tools/shared_nodejs');
|
|
|
|
var mongoose = require('mongoose').set('debug', false);
|
|
|
|
mongoose.set('debug', process.env.DEBUG);
|
|
|
|
const cfgserver = mongoose.model('cfgserver');
|
|
const {ObjectID} = require('mongodb');
|
|
|
|
const populate = require('./populate/populate');
|
|
|
|
const printf = require('util').format;
|
|
|
|
myLoad().then(ris => {
|
|
|
|
const {User} = require('./models/user');
|
|
|
|
require('./models/todo');
|
|
require('./models/project');
|
|
require('./models/subscribers');
|
|
require('./models/booking');
|
|
require('./models/sendmsg');
|
|
require('./models/mailinglist');
|
|
require('./models/newstosent');
|
|
require('./models/mypage');
|
|
require('./models/bot');
|
|
require('./models/calzoom');
|
|
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 dashboard_router = require('./router/dashboard_router');
|
|
const myevent_router = require('./router/myevent_router');
|
|
const subscribe_router = require('./router/subscribe_router');
|
|
const sendmsg_router = require('./router/sendmsg_router');
|
|
const email_router = require('./router/email_router');
|
|
const todos_router = require('./router/todos_router');
|
|
const test_router = require('./router/test_router');
|
|
const projects_router = require('./router/projects_router');
|
|
const report_router = require('./router/report_router');
|
|
const users_router = require('./router/users_router');
|
|
const mygroups_router = require('./router/mygroups_router');
|
|
const iscrittiConacreis_router = require('./router/iscrittiConacreis_router');
|
|
const site_router = require('./router/site_router');
|
|
const admin_router = require('./router/admin_router');
|
|
const products_router = require('./router/products_router');
|
|
const cart_router = require('./router/cart_router');
|
|
const orders_router = require('./router/orders_router');
|
|
const myskills_router = require('./router/myskills_router');
|
|
const mygoods_router = require('./router/mygoods_router');
|
|
const mygen_router = require('./router/mygen_router');
|
|
|
|
const {MyEvent} = require('./models/myevent');
|
|
|
|
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', 'enUs', 'es', 'fr', 'pt', 'si'],
|
|
// cookie: 'cook',
|
|
directory: __dirname + '/locales',
|
|
});
|
|
|
|
app.use(cors({
|
|
exposedHeaders: ['x-auth'],
|
|
}));
|
|
|
|
app.use(bodyParser.json());
|
|
|
|
// app.use(express.cookieParser());
|
|
app.use(i18n.init);
|
|
|
|
// Use Routes
|
|
app.use('/', index_router);
|
|
app.use('/subscribe', subscribe_router);
|
|
app.use('/sendmsg', sendmsg_router);
|
|
app.use('/push', push_router);
|
|
app.use('/news', newsletter_router);
|
|
app.use('/booking', booking_router);
|
|
app.use('/dashboard', dashboard_router);
|
|
app.use('/event', myevent_router);
|
|
app.use('/email', email_router);
|
|
app.use('/todos', todos_router);
|
|
app.use('/test', test_router);
|
|
app.use('/projects', projects_router);
|
|
app.use('/users', users_router);
|
|
app.use('/mygroup', mygroups_router);
|
|
app.use('/iscritti_conacreis', iscrittiConacreis_router);
|
|
app.use('/report', report_router);
|
|
app.use('/site', site_router);
|
|
app.use('/admin', admin_router);
|
|
app.use('/products', products_router);
|
|
app.use('/cart', cart_router);
|
|
app.use('/orders', orders_router);
|
|
app.use('/myskills', myskills_router);
|
|
app.use('/mygoods', mygoods_router);
|
|
app.use('/mygen', mygen_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
|
|
// });
|
|
});
|
|
|
|
}
|
|
|
|
// require('./telegram/telegrambot');
|
|
|
|
// *** 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') {
|
|
console.log('*** PRODUCTION! ');
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
mystart();
|
|
|
|
});
|
|
|
|
// app.use(throttle(1024 * 128)); // throttling bandwidth
|
|
|
|
// app.use((req, res, next) => {
|
|
// res.header('Access-Control-Allow-Origin', '*')
|
|
// res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
|
|
// next()
|
|
// });
|
|
|
|
async function myLoad() {
|
|
|
|
return tools.loadApps();
|
|
}
|
|
|
|
async function mystart() {
|
|
|
|
if (process.env.PROD !== 1) {
|
|
|
|
testmsgwebpush();
|
|
|
|
// tools.sendNotifToAdmin('Riparti', 'Riparti');
|
|
|
|
let miapass = '';
|
|
|
|
if (miapass !== '') {
|
|
let crypt = tools.cryptdata(miapass);
|
|
let decrypt = tools.decryptdata(crypt);
|
|
|
|
console.log('crypted:', crypt);
|
|
console.log('decrypted:', decrypt);
|
|
}
|
|
|
|
if (!process.env.DEBUG) {
|
|
mycron();
|
|
}
|
|
}
|
|
|
|
telegrambot = require('./telegram/telegrambot');
|
|
|
|
await inizia();
|
|
|
|
await resetProcessingJob();
|
|
|
|
populate.popolaTabelleNuove();
|
|
|
|
faitest();
|
|
|
|
// ----------------- 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',
|
|
}));
|
|
});
|
|
|
|
}
|
|
|
|
// -----------------
|
|
|
|
function populateDBadmin() {
|
|
const cfgserv = [
|
|
{
|
|
_id: new ObjectID(),
|
|
idapp: '9',
|
|
chiave: 'vers',
|
|
userId: 'ALL',
|
|
valore: '0.1.2',
|
|
}];
|
|
|
|
let cfg = new cfgserver(cfgserv[0]).save();
|
|
}
|
|
|
|
function mycron() {
|
|
|
|
const sendemail = require('./sendemail');
|
|
|
|
for (const app of tools.getApps()) {
|
|
sendemail.checkifPendingNewsletter(app.idapp);
|
|
sendemail.checkifSentNewsletter(app.idapp);
|
|
|
|
}
|
|
}
|
|
|
|
async function mycron_30min() {
|
|
for (const app of tools.getApps()) {
|
|
let enablecrontab = false;
|
|
|
|
enablecrontab = await Settings.getValDbSettings(app.idapp,
|
|
tools.ENABLE_CRONTAB, false);
|
|
|
|
if (enablecrontab) {
|
|
// ...
|
|
}
|
|
}
|
|
}
|
|
|
|
function testmsgwebpush() {
|
|
const {User} = require('./models/user');
|
|
|
|
// console.log('nomeapp 1: ' , tools.getNomeAppByIdApp(1));
|
|
// console.log('nomeapp 2: ' , tools.getNomeAppByIdApp(2));
|
|
|
|
User.find({username: 'paoloar77', idapp: '1'}).then((arrusers) => {
|
|
if (arrusers !== null) {
|
|
for (const user of arrusers) {
|
|
tools.sendNotificationToUser(user._id, 'Server',
|
|
'Il Server è Ripartito', '/', '', 'server', []).then(ris => {
|
|
if (ris) {
|
|
|
|
} else {
|
|
// already sent the error on calling sendNotificationToUser
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
// Cron every X minutes
|
|
cron.schedule('*/2 * * * *', () => {
|
|
// console.log('Running Cron Job');
|
|
if (!process.env.DEBUG) {
|
|
mycron();
|
|
}
|
|
});
|
|
|
|
// Cron every X minutes
|
|
cron.schedule('*/60 * * * *', async () => {
|
|
if (!process.env.DEBUG) {
|
|
mycron_30min();
|
|
}
|
|
});
|
|
|
|
// mycron_30min();
|
|
|
|
// tools.writelogfile('test', 'prova.txt');
|
|
|
|
async function resetProcessingJob() {
|
|
|
|
const {Newstosent} = require('./models/newstosent');
|
|
|
|
arrrec = await Newstosent.find({});
|
|
|
|
for (const rec of arrrec) {
|
|
rec.processing_job = false;
|
|
await Newstosent.findOneAndUpdate({_id: rec.id}, {$set: rec}, {new: false}).
|
|
then((item) => {
|
|
|
|
});
|
|
}
|
|
}
|
|
|
|
//app.listen(port, () => {
|
|
// console.log(`Server started at port ${port}`);
|
|
//});
|
|
|
|
async function inizia() {
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
await telegrambot.sendMsgTelegram(tools.FREEPLANET,
|
|
telegrambot.ADMIN_USER_SERVER,
|
|
`Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}!`);
|
|
|
|
await telegrambot.sendMsgTelegramByIdTelegram(tools.FREEPLANET,
|
|
telegrambot.ADMIN_IDTELEGRAM_SERVER,
|
|
`Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}\n` +
|
|
`🔅 Il Server ${process.env.DATABASE} è appena ripartito!`);
|
|
|
|
} else {
|
|
|
|
// await telegrambot.sendMsgTelegram(tools.FREEPLANET, telegrambot.ADMIN_USER_SERVER, `Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}!`);
|
|
await telegrambot.sendMsgTelegramByIdTelegram(tools.FREEPLANET,
|
|
telegrambot.ADMIN_IDTELEGRAM_SERVER,
|
|
`Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}\n` +
|
|
`🔅 Il Server ${process.env.DATABASE} è appena ripartito!`);
|
|
}
|
|
|
|
}
|
|
|
|
//
|
|
|
|
// telegrambot.sendMsgTelegramToTheManagers('7', 'PROVAAA!');
|
|
|
|
// if (process.env.PROD !== 1) {
|
|
// const reg = require('./reg/registration');
|
|
// const link = reg.getlinkregByEmail('7', 'tomasihelen@dasdasgmail.comAAAA' , 'HelenTomasidasdasd');
|
|
// const link2 = reg.getlinkregByEmail('7', 'tomasihelen@gmail.com' , 'HelenTomasi');
|
|
// //const link2 = reg.getlinkregByEmail('7', 'elenaliubicich@gmail.com' , 'Elenaliu');
|
|
//
|
|
// console.log(link);
|
|
// console.log(link2);
|
|
// }
|
|
|
|
async function faitest() {
|
|
// console.log('Fai Test:')
|
|
|
|
const testfind = false;
|
|
|
|
// const $vers = tools.getVersionint('1.92.45');
|
|
|
|
if (testfind) {
|
|
const {City} = require('./models/city');
|
|
|
|
let miacity = 'roma';
|
|
const ris = await City.findByCity(miacity);
|
|
|
|
console.log('ris', ris);
|
|
}
|
|
|
|
const {User} = require('./models/user');
|
|
|
|
if (false) {
|
|
let myuser = await User.findOne({
|
|
idapp: '1',
|
|
username: 'paoloar77',
|
|
});
|
|
|
|
const langdest = 'it';
|
|
|
|
telegrambot.askConfirmationUserRegistration(myuser.idapp,
|
|
shared_consts.CallFunz.REGISTRATION, myuser, 'perseo77', langdest);
|
|
|
|
}
|
|
|
|
if (false) {
|
|
|
|
const user = await User.findOne({
|
|
idapp: 12,
|
|
username: 'paolotest1',
|
|
});
|
|
|
|
await sendemail.sendEmail_Registration('it', 'paolo@arcodiluce.it', user,
|
|
'12', '');
|
|
|
|
}
|
|
|
|
if (false) {
|
|
|
|
const {User} = require('./models/user');
|
|
|
|
const idapp = tools.FREEPLANET;
|
|
const idreg = 0;
|
|
|
|
try {
|
|
|
|
const user = await User.findOne({
|
|
idapp,
|
|
username: 'paoloar773',
|
|
});
|
|
|
|
user.aportador_solidario = 'paoloar77';
|
|
|
|
let mylocalsconf = {
|
|
idapp,
|
|
dataemail: null,
|
|
locale: user.lang,
|
|
nomeapp: tools.getNomeAppByIdApp(idapp),
|
|
strlinksito: tools.getHostByIdApp(idapp),
|
|
strlinkreg: '',
|
|
username: user.username,
|
|
name: user.name,
|
|
surname: user.surname,
|
|
forgetpwd: tools.getHostByIdApp(idapp) + '/requestresetpwd',
|
|
emailto: '',
|
|
user,
|
|
};
|
|
|
|
await telegrambot.notifyToTelegram(telegrambot.phase.REGISTRATION,
|
|
mylocalsconf);
|
|
} catch (e) {
|
|
console.log('error ' + e);
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = {app};
|
|
|