2018-12-24 20:31:02 +01:00
require ( './config/config' ) ;
2021-06-04 10:07:57 +02:00
// console.log(" lodash");
2018-12-24 20:31:02 +01:00
const _ = require ( 'lodash' ) ;
2021-06-04 10:07:57 +02:00
// console.log(" cors");
2018-12-24 20:31:02 +01:00
const cors = require ( 'cors' ) ;
2018-12-27 20:09:40 +01:00
2021-06-04 10:07:57 +02:00
// console.log(" 2) fs");
2019-12-07 00:20:06 +01:00
const fs = require ( 'fs' ) ;
//const throttle = require('express-throttle-bandwidth');
2022-01-23 23:25:34 +01:00
// app.use(throttle(1024 * 128)) // throttling bandwidth
2018-12-27 20:09:40 +01:00
const port = process . env . PORT ;
2021-12-21 18:12:28 +01:00
// var cookieParser = require('cookie-parser')
// var csrf = require('csurf')
2019-02-05 03:40:22 +01:00
const express = require ( 'express' ) ;
const bodyParser = require ( 'body-parser' ) ;
const path = require ( 'path' ) ;
2019-11-21 00:18:40 +01:00
const cron = require ( 'node-cron' ) ;
2019-02-14 19:01:41 +01:00
2021-06-04 10:07:57 +02:00
require ( './db/mongoose' ) ;
2020-05-19 00:18:13 +02:00
const { Settings } = require ( './models/settings' ) ;
2021-09-22 01:13:41 +02:00
const i18n = require ( "i18n" ) ;
2018-12-27 21:03:42 +01:00
2021-06-04 10:07:57 +02:00
2019-02-13 01:51:33 +01:00
if ( ( process . env . NODE _ENV === 'production' ) || ( process . env . NODE _ENV === 'test' ) ) {
2019-02-05 03:40:22 +01:00
var privateKey = fs . readFileSync ( process . env . PATH _CERT _KEY , 'utf8' ) ;
2018-12-27 21:03:42 +01:00
var certificate = fs . readFileSync ( process . env . PATH _SERVER _CRT , 'utf8' ) ;
2019-02-05 03:40:22 +01:00
var credentials = { key : privateKey , cert : certificate } ;
2019-01-02 01:59:01 +01:00
var https = require ( 'https' ) ;
2019-02-05 03:40:22 +01:00
} else {
2019-01-02 01:59:01 +01:00
var http = require ( 'http' ) ;
2018-12-27 20:09:40 +01:00
}
2019-01-02 01:59:01 +01:00
2018-12-24 20:31:02 +01:00
console . log ( "DB: " + process . env . DATABASE ) ;
2021-06-04 10:07:57 +02:00
// console.log("PORT: " + port);
// console.log("MONGODB_URI: " + process.env.MONGODB_URI);
2018-12-24 20:31:02 +01:00
var app = express ( ) ;
2021-12-29 18:26:08 +01:00
let telegrambot = null ;
2019-02-14 19:01:41 +01:00
const tools = require ( './tools/general' ) ;
2021-04-30 01:31:12 +02:00
require ( './models/cfgserver' ) ;
2019-02-22 10:23:39 +01:00
2022-01-16 23:21:03 +01:00
const shared _consts = require ( './tools/shared_nodejs' ) ;
2021-09-22 01:13:41 +02:00
var mongoose = require ( 'mongoose' ) . set ( 'debug' , false )
2021-04-30 01:31:12 +02:00
mongoose . set ( 'debug' , process . env . DEBUG ) ;
2019-02-22 10:23:39 +01:00
const cfgserver = mongoose . model ( 'cfgserver' ) ;
const { ObjectID } = require ( 'mongodb' ) ;
2022-01-23 23:25:34 +01:00
const populate = require ( './populate/populate' ) ;
2022-01-16 23:21:03 +01:00
const printf = require ( 'util' ) . format ;
2021-10-08 00:38:35 +02:00
2021-04-30 01:31:12 +02:00
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' ) ;
2021-12-29 18:26:08 +01:00
require ( './models/bot' ) ;
2021-04-30 01:31:12 +02:00
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' ) ;
2022-02-03 00:33:15 +01:00
const mygroups _router = require ( './router/mygroups_router' ) ;
2021-04-30 01:31:12 +02:00
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' ) ;
2022-01-26 01:31:22 +01:00
const myskills _router = require ( './router/myskills_router' ) ;
2021-04-30 01:31:12 +02:00
const { MyEvent } = require ( './models/myevent' ) ;
app . use ( express . static ( 'views' ) ) ;
2019-10-05 20:01:56 +02:00
2019-02-05 03:40:22 +01:00
// app.use(express.static(path.join(__dirname, 'client')));
2021-04-30 01:31:12 +02:00
app . use ( bodyParser . json ( ) ) ;
2019-02-05 03:40:22 +01:00
// app.set('view engine', 'pug');
// Set static folder
// app.use(express.static(path.join(__dirname, 'public')));
2018-12-24 20:31:02 +01:00
2021-04-30 01:31:12 +02:00
i18n . configure ( {
locales : [ 'it' , 'enUs' , 'es' , 'fr' , 'pt' , 'si' ] ,
// cookie: 'cook',
directory : _ _dirname + '/locales'
} ) ;
2018-12-24 20:31:02 +01:00
2021-04-30 01:31:12 +02:00
app . use ( cors ( {
exposedHeaders : [ 'x-auth' ] ,
} ) ) ;
2018-12-24 20:31:02 +01:00
2021-04-30 01:31:12 +02:00
app . use ( bodyParser . json ( ) ) ;
2018-12-24 20:31:02 +01:00
2020-01-20 01:48:25 +01:00
// app.use(express.cookieParser());
2021-04-30 01:31:12 +02:00
app . use ( i18n . init ) ;
2018-12-24 20:31:02 +01:00
2019-02-05 03:40:22 +01:00
// Use Routes
2021-04-30 01:31:12 +02:00
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 ) ;
2022-02-03 00:33:15 +01:00
app . use ( '/mygroup' , mygroups _router ) ;
2021-04-30 01:31:12 +02:00
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 ) ;
2022-01-26 01:31:22 +01:00
app . use ( '/myskills' , myskills _router ) ;
2018-12-24 20:31:02 +01:00
2019-02-05 03:40:22 +01:00
// catch 404 and forward to error handler
2019-02-08 17:11:33 +01:00
// app.use(function (req, res, next) {
// var err = new Error('Not Found');
// err.status = 404;
// next(err);
// });
2018-12-24 20:31:02 +01:00
2019-02-05 03:40:22 +01:00
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'pug');
// development error handler
// will print stacktrace
2021-04-30 01:31:12 +02:00
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
// });
} ) ;
2020-01-03 22:02:18 +01:00
2021-04-30 01:31:12 +02:00
}
2018-12-24 20:31:02 +01:00
2021-04-30 01:31:12 +02:00
// require('./telegram/telegrambot');
2020-01-03 01:52:49 +01:00
2019-10-05 20:01:56 +02:00
// *** 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));
// });
2021-06-04 10:07:57 +02:00
if ( process . env . NODE _ENV === 'production' ) {
console . log ( "*** PRODUCTION! " ) ;
}
2021-04-30 01:31:12 +02:00
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 ( ) ;
} ) ;
2018-12-27 20:09:40 +01:00
2019-12-07 00:20:06 +01:00
// 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()
// });
2021-04-30 01:31:12 +02:00
async function myLoad ( ) {
2021-09-22 01:13:41 +02:00
return tools . loadApps ( ) ;
2021-04-30 01:31:12 +02:00
}
async function mystart ( ) {
if ( process . env . PROD !== 1 ) {
2021-09-22 01:13:41 +02:00
2021-04-30 01:31:12 +02:00
testmsgwebpush ( ) ;
2021-03-17 02:24:11 +01:00
2021-10-08 00:38:35 +02:00
2021-04-30 01:31:12 +02:00
// tools.sendNotifToAdmin('Riparti', 'Riparti');
2022-01-07 01:18:01 +01:00
2019-12-04 02:03:44 +01:00
2021-12-29 18:26:08 +01:00
let miapass = '' ;
2020-04-24 10:29:25 +02:00
2021-04-30 01:31:12 +02:00
if ( miapass !== '' ) {
let crypt = tools . cryptdata ( miapass ) ;
let decrypt = tools . decryptdata ( crypt ) ;
2020-01-03 01:52:49 +01:00
2021-04-30 01:31:12 +02:00
console . log ( 'crypted:' , crypt ) ;
console . log ( 'decrypted:' , decrypt ) ;
}
2021-09-22 01:13:41 +02:00
if ( ! process . env . DEBUG ) {
mycron ( ) ;
}
2020-04-24 10:29:25 +02:00
}
2020-01-03 01:52:49 +01:00
2021-12-29 18:26:08 +01:00
telegrambot = require ( './telegram/telegrambot' ) ;
2021-04-30 01:31:12 +02:00
await inizia ( ) ;
await resetProcessingJob ( ) ;
2022-01-23 23:25:34 +01:00
populate . popolaTabelleNuove ( ) ;
2021-12-29 18:26:08 +01:00
faitest ( ) ;
2019-02-14 19:01:41 +01:00
2019-10-05 20:01:56 +02:00
// ----------------- MAILCHIMP -----
2021-04-30 01:31:12 +02:00
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'
} ) ) ;
} ) ;
2019-10-05 20:01:56 +02:00
2021-04-30 01:31:12 +02:00
}
// -----------------
2019-02-22 10:23:39 +01:00
function populateDBadmin ( ) {
const cfgserv = [ {
_id : new ObjectID ( ) ,
2020-04-24 10:29:25 +02:00
idapp : '9' ,
2019-02-22 10:23:39 +01:00
chiave : 'vers' ,
2019-03-04 17:28:41 +01:00
userId : 'ALL' ,
2020-04-24 10:29:25 +02:00
valore : '0.1.2'
2019-02-22 10:23:39 +01:00
} ] ;
let cfg = new cfgserver ( cfgserv [ 0 ] ) . save ( ) ;
}
2021-04-30 01:31:12 +02:00
function mycron ( ) {
2019-02-22 10:23:39 +01:00
2021-04-30 01:31:12 +02:00
const sendemail = require ( './sendemail' ) ;
2019-02-22 10:23:39 +01:00
2019-11-21 00:18:40 +01:00
2021-04-30 01:31:12 +02:00
for ( const app of tools . getApps ( ) ) {
2019-11-21 00:18:40 +01:00
sendemail . checkifPendingNewsletter ( app . idapp ) ;
sendemail . checkifSentNewsletter ( app . idapp ) ;
2020-05-19 00:18:13 +02:00
}
}
async function mycron _30min ( ) {
2021-04-30 01:31:12 +02:00
for ( const app of tools . getApps ( ) ) {
2020-06-08 13:31:05 +02:00
let enablecrontab = false ;
enablecrontab = await Settings . getValDbSettings ( app . idapp , tools . ENABLE _CRONTAB , false ) ;
2020-05-19 00:18:13 +02:00
if ( enablecrontab ) {
2021-04-30 01:31:12 +02:00
// ...
2020-05-19 00:18:13 +02:00
}
2019-11-21 00:18:40 +01:00
}
2019-10-20 01:21:54 +02:00
}
2019-02-14 19:01:41 +01:00
function testmsgwebpush ( ) {
2020-05-19 00:18:13 +02:00
const { User } = require ( './models/user' ) ;
2019-10-05 20:01:56 +02:00
// console.log('nomeapp 1: ' , tools.getNomeAppByIdApp(1));
// console.log('nomeapp 2: ' , tools.getNomeAppByIdApp(2));
2019-02-14 19:01:41 +01:00
2021-09-22 01:13:41 +02:00
User . find ( { username : 'paoloar77' , idapp : '1' } ) . then ( ( arrusers ) => {
2020-04-10 13:02:33 +02:00
if ( arrusers !== null ) {
for ( const user of arrusers ) {
2020-04-24 10:29:25 +02:00
tools . sendNotificationToUser ( user . _id , 'Server' , 'Il Server è Ripartito' , '/' , '' , 'server' , [ ] )
2020-04-10 13:02:33 +02:00
. then ( ris => {
if ( ris ) {
} else {
// already sent the error on calling sendNotificationToUser
}
} )
}
2019-02-14 19:01:41 +01:00
}
2019-10-05 20:01:56 +02:00
} ) ;
2019-02-14 19:01:41 +01:00
}
2021-03-17 02:24:11 +01:00
2019-12-04 18:20:50 +01:00
// Cron every X minutes
cron . schedule ( '*/2 * * * *' , ( ) => {
2020-04-10 13:02:33 +02:00
// console.log('Running Cron Job');
2021-09-22 01:13:41 +02:00
if ( ! process . env . DEBUG ) {
mycron ( ) ;
}
2019-11-21 00:18:40 +01:00
} ) ;
2020-06-08 13:31:05 +02:00
2020-05-19 00:18:13 +02:00
// Cron every X minutes
2020-06-08 13:31:05 +02:00
cron . schedule ( '*/60 * * * *' , async ( ) => {
2021-09-22 01:13:41 +02:00
if ( ! process . env . DEBUG ) {
mycron _30min ( ) ;
}
2020-05-19 00:18:13 +02:00
} ) ;
2020-06-08 13:31:05 +02:00
// mycron_30min();
// tools.writelogfile('test', 'prova.txt');
2020-02-07 22:08:46 +01:00
async function resetProcessingJob ( ) {
2021-04-30 01:31:12 +02:00
const { Newstosent } = require ( './models/newstosent' ) ;
2020-02-07 22:08:46 +01:00
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 ) => {
} ) ;
}
}
2018-12-27 20:09:40 +01:00
//app.listen(port, () => {
// console.log(`Server started at port ${port}`);
//});
2020-02-19 16:09:16 +01:00
async function inizia ( ) {
2021-04-30 01:31:12 +02:00
2021-12-23 14:13:40 +01:00
if ( process . env . NODE _ENV === 'development' ) {
await telegrambot . sendMsgTelegram ( tools . FREEPLANET , telegrambot . ADMIN _USER _SERVER , ` Ciao ${ telegrambot . ADMIN _USER _NAME _SERVER } ! ` ) ;
2022-01-07 01:18:01 +01:00
await telegrambot . sendMsgTelegramByIdTelegram ( tools . FREEPLANET , telegrambot . ADMIN _IDTELEGRAM _SERVER , ` Ciao ${ telegrambot . ADMIN _USER _NAME _SERVER } \n ` + ` 🔅 Il Server ${ process . env . DATABASE } è appena ripartito! ` ) ;
2020-01-03 22:02:18 +01:00
2022-01-07 01:18:01 +01:00
} else {
2020-02-19 16:09:16 +01:00
2022-01-07 01:18:01 +01:00
// 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! ` ) ;
2021-12-23 14:13:40 +01:00
}
2020-02-19 16:09:16 +01:00
}
2020-02-07 22:08:46 +01:00
//
2020-01-03 22:02:18 +01:00
// telegrambot.sendMsgTelegramToTheManagers('7', 'PROVAAA!');
2020-01-20 01:48:25 +01:00
// 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);
// }
2021-10-08 00:38:35 +02:00
async function faitest ( ) {
2022-01-07 01:18:01 +01:00
// console.log('Fai Test:')
2021-10-08 00:38:35 +02:00
const testfind = false ;
2021-10-28 00:38:10 +02:00
// const $vers = tools.getVersionint('1.92.45');
2021-10-08 00:38:35 +02:00
if ( testfind ) {
const { City } = require ( './models/city' ) ;
let miacity = 'roma' ;
const ris = await City . findByCity ( miacity ) ;
console . log ( 'ris' , ris ) ;
}
2022-01-16 23:21:03 +01:00
const { User } = require ( './models/user' ) ;
2022-01-07 01:18:01 +01:00
if ( false ) {
2022-01-16 23:21:03 +01:00
let myuser = await User . findOne ( {
2022-02-09 19:48:39 +01:00
idapp : '1' ,
2022-01-07 01:18:01 +01:00
username : 'paoloar77' ,
} ) ;
2022-01-16 23:21:03 +01:00
const langdest = 'it' ;
2022-02-09 19:48:39 +01:00
telegrambot . askConfirmationUserRegistration ( myuser . idapp , shared _consts . CallFunz . REGISTRATION , myuser , 'perseo77' , langdest ) ;
2022-01-16 23:21:03 +01:00
}
if ( false ) {
const user = await User . findOne ( {
idapp : 12 ,
username : 'paolotest1' ,
} ) ;
await sendemail . sendEmail _Registration ( 'it' , 'paolo@arcodiluce.it' , user ,
2022-01-07 01:18:01 +01:00
'12' , '' ) ;
2022-01-16 23:21:03 +01:00
2022-01-07 01:18:01 +01:00
}
2021-12-29 18:26:08 +01:00
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 ) ;
}
}
2021-10-08 00:38:35 +02:00
}
2018-12-27 18:13:43 +01:00
module . exports = { app } ;
2021-10-08 00:38:35 +02:00