diff --git a/.env.development b/.env.development index 3e71f55..b9ebd80 100644 --- a/.env.development +++ b/.env.development @@ -1,12 +1,12 @@ -DATABASE=test_PiuCheBuono +DATABASE=test_FreePlanet UDB=paofreeplanet PDB=mypassword@1A SEND_EMAIL=0 SEND_EMAIL_ORDERS=1 PORT=3000 -appTelegram_TEST=["1","17"] -appTelegram=["1","17"] -appTelegram_DEVELOP=["17"] +appTelegram_TEST=["1","13"] +appTelegram=["1","13"] +appTelegram_DEVELOP=["13"] DOMAIN=mongodb://localhost:27017/ AUTH_MONGODB=0 ENABLE_PUSHNOTIFICATION=1 @@ -29,7 +29,7 @@ GCM_API_KEY="" PROD=0 PROJECT_DESCR_MAIN='__PROJECTS' SECRK=Askb38v23jjDFaoskBOWj92axXCQ -TOKEN_LIFE=2h +TOKEN_LIFE=1m REFRESH_TOKEN_LIFE=14d FTPSERVER_HOST=139.162.166.31 FTPSERVER_PORT=21 @@ -38,9 +38,4 @@ FTPSERVER_PWD=ftpmypwd@1A_ AUTH_NEW_SITES=123123123 SCRIPTS_DIR=admin_scripts CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}] -MIAB_HOST=box.lamiaposta.org -MIAB_ADMIN_EMAIL=admin@lamiaposta.org -MIAB_ADMIN_PASSWORD=passpao1pabox@1A DS_API_KEY="sk-222e3addb3d8455d8b0516d93906eec7" -API_KEY_MSSQL="m68yADSr123MIVIDA@154$DSAGVOK" -SERVER_A_URL="http://51.77.156.69:3000" \ No newline at end of file diff --git a/.env.prod.freeplanet.app b/.env.prod.freeplanet.app index e8c7c79..3c90668 100644 --- a/.env.prod.freeplanet.app +++ b/.env.prod.freeplanet.app @@ -8,7 +8,9 @@ DIRECTORY_SERVER=/var/www/www.freeplanet_server SERVERDIR_WEBSITE=/var/www/www.freeplanet_server PORT_APP1="0" DOMAIN=mongodb://localhost:27017/ +DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:27017/ AUTH_MONGODB=1 +AUTH_DB_PASSING=1 MONGODB_USER=admin MONGODB_PWD=mypwadminREAL@1A SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB diff --git a/.env.prod.pcb b/.env.prod.pcb index 412c3f6..4e1a464 100644 --- a/.env.prod.pcb +++ b/.env.prod.pcb @@ -11,7 +11,9 @@ DIRECTORY_SERVER=/var/www/nodejs_piuchebuono_server SERVERDIR_WEBSITE=/var/www/piuchebuono.app PORT_APP1="0" DOMAIN=mongodb://localhost:32001/ +DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:32001/ AUTH_MONGODB=1 +AUTH_DB_PASSING=1 MONGODB_USER=admin MONGODB_PWD=mypwadminREAL@1A SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB diff --git a/.env.prod.riso b/.env.prod.riso index 7720d0d..63935cd 100644 --- a/.env.prod.riso +++ b/.env.prod.riso @@ -8,7 +8,9 @@ DIRECTORY_SERVER=/var/www/nodejs_riso_server SERVERDIR_WEBSITE=/var/www/riso.app PORT_APP1="0" DOMAIN=mongodb://localhost:32015/ +DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:32015/ AUTH_MONGODB=1 +AUTH_DB_PASSING=1 MONGODB_USER=admin MONGODB_PWD=mypwadminREAL@1A SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB diff --git a/.env.test.pcb b/.env.test.pcb index 2f4a247..f98ed5d 100644 --- a/.env.test.pcb +++ b/.env.test.pcb @@ -11,7 +11,9 @@ DIRECTORY_SERVER=/var/www/nodejs_test.piuchebuono_server SERVERDIR_WEBSITE=var/www/test.piuchebuono.app PORT_APP1="0" DOMAIN=mongodb://localhost:32002/ +DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:32002/ AUTH_MONGODB=1 +AUTH_DB_PASSING=1 MONGODB_USER=admin MONGODB_PWD=mypwadmin@1A SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB diff --git a/.env.test.risosrv b/.env.test.risosrv index 85ebdc5..6bc03e2 100644 --- a/.env.test.risosrv +++ b/.env.test.risosrv @@ -8,9 +8,9 @@ DIRECTORY_SERVER=/var/www/nodejs_test.riso_server SERVERDIR_WEBSITE=/var/www/test.riso.app PORT_APP1="0" DOMAIN=mongodb://localhost:32012/ -DOMAIN_AUTH=mongodb://{username}:{password}@localhost:32012/ +DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:32012/ AUTH_MONGODB=1 -AUTH_DB_PASSING=0 +AUTH_DB_PASSING=1 MONGODB_USER="admin" MONGODB_PWD="mypwadminS1A" SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB diff --git a/deploynode_pcb_test.sh b/deploynode_pcb_test.sh index 2fc8403..0e51992 100755 --- a/deploynode_pcb_test.sh +++ b/deploynode_pcb_test.sh @@ -26,6 +26,10 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then REMOTE_DIR="$DIRECTORY_SERVER" SSH_OPTIONS="-p $REMOTE_PORT" + CONFIG_JS="ecosystem.config.testriso.js" + ENV_FILE=".env.test.risosrv" + ENV_OUT=".env.test" + # Array di cartelle e file da sincronizzare SYNC_ITEMS=( "css" @@ -55,7 +59,8 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then # Sincronizza i file specifici rsync -avz -e "ssh $SSH_OPTIONS" \ - .env.test.pcb "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/.env.test" + $ENV_FILE "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$ENV_OUT" + echo "" echo "*** Copia del file package.json ... " @@ -67,6 +72,11 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then rsync -avz -e "ssh $SSH_OPTIONS" \ ecosystem.config.testpcb.js "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js" + echo "" + echo "*** Copia del file $CONFIG_JS in ecosystem.config.js ... " + rsync -avz -e "ssh $SSH_OPTIONS" \ + $CONFIG_JS "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js" + # Verifica il risultato if [ $? -eq 0 ]; then echo "Sincronizzazione completata con successo. SERVER PCB TEST! " diff --git a/deploynode_riso_test.sh b/deploynode_riso_test.sh index 310ffad..d67fd7b 100755 --- a/deploynode_riso_test.sh +++ b/deploynode_riso_test.sh @@ -70,6 +70,12 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then rsync -avz -e "ssh $SSH_OPTIONS" \ "$CONFIG_JS" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js" + echo "" + echo "*** Copia del file $CONFIG_JS in ecosystem.config.js ... " + rsync -avz -e "ssh $SSH_OPTIONS" \ + $CONFIG_JS "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js" + + # Verifica il risultato if [ $? -eq 0 ]; then echo "Sincronizzazione completata con successo. SERVER $REMOTE_DIR! " diff --git a/ecosystem.config.prod_riso.js b/ecosystem.config.prod_riso.js index d68dbcc..bc17f64 100755 --- a/ecosystem.config.prod_riso.js +++ b/ecosystem.config.prod_riso.js @@ -4,7 +4,7 @@ module.exports = { name: "RISO", script: "/var/www/nodejs_riso_server/src/server/server.js", ignore_watch: ["node_modules", "logs"], - interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node", + interpreter: "/root/.nvm/versions/node/v22.13.1/bin/node", //autorestart: true, instances: 1, watch: false, diff --git a/ecosystem.config.testpcb.js b/ecosystem.config.testpcb.js index fb294da..a536a1d 100755 --- a/ecosystem.config.testpcb.js +++ b/ecosystem.config.testpcb.js @@ -4,7 +4,7 @@ module.exports = { name: "PiuCheBuono (TEST)", script: "/var/www/nodejs_test.piuchebuono_server/src/server/server.js", ignore_watch: ["node_modules", "logs"], - interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node", + interpreter: "/root/.nvm/versions/node/v22.13.1/bin/node", //autorestart: true, instances: 1, watch: false, diff --git a/filelog.txt b/filelog.txt index b88fd3f..b6cc479 100644 --- a/filelog.txt +++ b/filelog.txt @@ -1,2 +1,6 @@ Dom 02/03 ORE 16:32: USER [surya1977]: ciao + +Lun 10/03 ORE 15:52: USER [surya1977]: ciao + +Lun 10/03 ORE 15:56: USER [surya1977]: ciao diff --git a/package.json b/package.json index bdb2c89..50178ca 100755 --- a/package.json +++ b/package.json @@ -38,8 +38,8 @@ "jsdom": "^26.0.0", "jsonwebtoken": "^9.0.2", "lodash": "^4.17.21", - "mongodb": "^6.14.1", - "mongoose": "^8.12.0", + "mongodb": "^6.14.2", + "mongoose": "^8.12.1", "multer": "^1.4.5-lts.1", "mysql": "^2.18.1", "node-cron": "^3.0.3", @@ -50,7 +50,7 @@ "node-telegram-bot-api": "^0.66.0", "nodemailer": "^6.10.0", "npm-check-updates": "^17.1.15", - "openai": "^4.86.1", + "openai": "^4.86.2", "pdf-lib": "^1.17.1", "pdf-parse": "^1.1.1", "pem": "^1.14.8", @@ -78,7 +78,7 @@ "gulp-pug": "^5.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.1.4", - "gulp-sass": "^6.0.0", + "gulp-sass": "^6.0.1", "jest": "^29.7.0", "mocha": "^11.1.0", "nodemon": "^3.1.9", diff --git a/src/server/db/mongoose.js b/src/server/db/mongoose.js index 0bbe76d..9bf8901 100755 --- a/src/server/db/mongoose.js +++ b/src/server/db/mongoose.js @@ -50,7 +50,7 @@ async function connectToDatabase(uri, opts) { while (!isConnected) { try { console.log("Sto provando a connettermi al database..."); - await mongoose.connect(uri, opts); + await mongoose.connect(uri); console.log(' *** CONNESSIONE EFFETTUATA ! ' + uri + ' db: ' + process.env.DATABASE); diff --git a/src/server/middleware/authenticate.js b/src/server/middleware/authenticate.js index 05ba3b1..263d9a2 100755 --- a/src/server/middleware/authenticate.js +++ b/src/server/middleware/authenticate.js @@ -88,39 +88,45 @@ const authenticate_noerror = (req, res, next) => { const token = req.header('x-auth'); const refreshToken = req.header('x-refrtok'); - const idapp = getIdApp(req); - - const access = 'auth'; - return User.findByToken(token, access, false, idapp).then((ris) => { - if (ris.code !== server_constants.RIS_CODE_OK) { - req.user = null; - req.token = null; - req.access = null; - req.code = ris.code; - } else { - req.user = ris.user; - req.token = token; - req.refreshToken = refreshToken; - req.access = access; - req.code = ris.code; - } - if (ris.code === server_constants.RIS_CODE_HTTP_FORBIDDEN_TOKEN_EXPIRED) { - return res.status(server_constants.RIS_CODE_HTTP_FORBIDDEN_TOKEN_EXPIRED).send(); - } else { - // Vai avanti ad eseguire il codice, in ogni modo ! - next(); - } - }).catch((e) => { + if (!token) { req.user = null; req.token = null; - req.access = null; - req.code = 0; + req.code = server_constants.RIS_CODE_HTTP_INVALID_TOKEN; + return next(); + } - // Continua comunque ! - next(); - }); + User.findByToken(token, 'auth', false, getIdApp(req)) + .then((ris) => { + if (ris.code !== server_constants.RIS_CODE_OK) { + req.user = null; + req.token = null; + req.code = ris.code; + } else { + req.user = ris.user; + req.token = token; + req.refreshToken = refreshToken; + req.code = ris.code; + } + + if (ris.code === server_constants.RIS_CODE_HTTP_FORBIDDEN_TOKEN_EXPIRED) { + return res.status(server_constants.RIS_CODE_HTTP_FORBIDDEN_TOKEN_EXPIRED).send(); + } + + next(); + }) + .catch((e) => { + console.error('Errore durante l\'autenticazione:', e); + req.user = null; + req.token = null; + req.code = server_constants.RIS_CODE_HTTP_INVALID_TOKEN; + next(); + }); } catch (e) { - console.error('Err', e); + console.error('Errore nel middleware di autenticazione:', e); + req.user = null; + req.token = null; + req.code = server_constants.RIS_CODE_HTTP_INVALID_TOKEN; + next(); } }; diff --git a/src/server/models/mypage.js b/src/server/models/mypage.js index edc3a0d..3a5c715 100755 --- a/src/server/models/mypage.js +++ b/src/server/models/mypage.js @@ -180,16 +180,7 @@ MyPageSchema.statics.findOnlyStruttRec = async function (idapp) { { idapp, loadFirst: true, - }).then( - (arrrec) => { - return arrrec - } - ).catch((err) => { - if (err) { - console.error('findOnlyStruttRec', err); - throw err; - } - }); + }).lean(); const arrfixed = await MyPage.find( { @@ -216,15 +207,7 @@ MyPageSchema.statics.findOnlyStruttRec = async function (idapp) { loadFirst: 1, mainMenu: 1, sottoMenu: 1, - }).then((arrrec) => { - return arrrec - }).catch((err) => { - if (err) { - console.error('findOnlyStruttRec', err); - throw err; - - } - }); + }).lean(); return [...arrFirst, ...arrfixed]; diff --git a/src/server/models/newstosent.js b/src/server/models/newstosent.js index 47d7f0e..d605eab 100755 --- a/src/server/models/newstosent.js +++ b/src/server/models/newstosent.js @@ -65,8 +65,8 @@ const NewstosentSchema = new Schema({ NewstosentSchema.statics.getFieldsForSearch = function () { return [{ field: 'name', type: tools.FieldType.string }, - { field: 'surname', type: tools.FieldType.string }, - { field: 'email', type: tools.FieldType.string }] + { field: 'surname', type: tools.FieldType.string }, + { field: 'email', type: tools.FieldType.string }] }; NewstosentSchema.statics.executeQueryTable = function (idapp, params) { @@ -85,11 +85,7 @@ NewstosentSchema.statics.findNewsletter_To_Send = function (idapp) { processing_job: false, finish_job: false, idapp - }) - .sort({ datetoSent: 1 }) - .then((rec) => { - return (rec) ? rec._doc : null; - }); + }).sort({ datetoSent: 1 }).lean(); }; NewstosentSchema.statics.endJob = async function (id) { @@ -127,10 +123,7 @@ NewstosentSchema.statics.findNewsletterPending_To_Send = function (idapp) { processing_job: false, lastemailsent_Job: { $gte: tools.IncDateNow(-1000 * 60 * 60 * 15) }, idapp - }).then((rec) => { - // console.log('findNewsletterPending_To_Send', rec); - return (rec) ? rec._doc : null; - }); + }).lean(); }; NewstosentSchema.statics.findAllIdApp = async function (idapp) { diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 75abd81..f4109f0 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -659,33 +659,30 @@ router.post('/notifs', authenticate, async (req, res) => { }); router.post('/newtok', async (req, res) => { - try { const refreshToken = req.body.refreshToken; - // Ottieni l'utente in base al refreshtoken - const recFound = await User.findOne({ 'tokens.refreshToken': refreshToken }); - - // console.log('recFound', recFound ? recFound.name : 'NOTFOUND', 'Token=', refreshToken); - - if (recFound) { - return recFound.generateAuthToken(req) - .then((ris) => { - return res.status(200).send({ - usertosend: recFound, - token: ris.token, - refreshToken: ris.refreshToken - }); - }) + if (!refreshToken) { + return res.status(400).send({ error: 'Refresh token mancante' }); } + const recFound = await User.findOne({ 'tokens.refreshToken': refreshToken }); + + if (!recFound) { + return res.status(404).send({ error: 'Refresh token non valido' }); + } + + const { token, refreshToken: newRefreshToken } = await recFound.generateAuthToken(req); + + return res.status(200).send({ + token, + refreshToken: newRefreshToken, + }); } catch (e) { - console.error('Err', e); + console.error('Errore durante il refresh token:', e); + return res.status(500).send({ error: 'Errore interno del server' }); } - - res.status(404).send({ code: server_constants.RIS_CODE_HTTP_INVALID_TOKEN }); - -}); +}) // Dizionario per tenere traccia dei tentativi di accesso falliti per ogni utente const failedLoginAttempts = {}; diff --git a/src/server/server.js b/src/server/server.js index 0bd728e..5a76f6f 100755 --- a/src/server/server.js +++ b/src/server/server.js @@ -5,7 +5,7 @@ require('./config/config'); console.log("VERSIONE NODE.JS :", process.versions.node); if (process.env.AUTH_MONGODB === undefined) { console.error("AUTH_MONGODB non presente. VARIABILI D'AMBIENTE NON SETTATI!"); - exit; + process.exit(1); } diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index fc8875f..9c9ad79 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -66,21 +66,21 @@ const emo = { EXCLAMATION_MARK: emoji.get('exclamation'), QUESTION_MARK: emoji.get('question'), ARROW_RIGHT: emoji.get('arrow_right'), - INVITATI: emoji.get('man_and_woman_holding_hands'), - HEART: emoji.get('heart'), - BLUE_HEART: emoji.get('blue_heart'), - GREEN_HEART: emoji.get('green_heart'), - YELLOW_HEART: emoji.get('yellow_heart'), - PURPLE_HEART: emoji.get('purple_heart'), - GIFT_HEART: emoji.get('gift_heart'), - GIFT: emoji.get('gift'), - ROBOT_FACE: emoji.get('robot_face'), - ADMIN: emoji.get('information_desk_person'), - MALE: emoji.get('man-tipping-hand'), - FEMALE: emoji.get('female-guard'), - INNOCENT: emoji.get('innocent'), - CREDIT_CARD: emoji.get('credit_card'), - PERSON: emoji.get('man-tipping-hand'), + INVITATI: '', + HEART: '❤️', + BLUE_HEART: '💙', + GREEN_HEART: '💚', + YELLOW_HEART: '💛', + PURPLE_HEART: '💜', + GIFT_HEART: '💝', + GIFT: '🎁', + ROBOT_FACE: '🤖', + ADMIN: '💁', + MALE: '💁‍♂️', + FEMALE: '👩‍🦱', + INNOCENT: '😇', + CREDIT_CARD: '💳', + PERSON: '🧑', }; MsgBot = { diff --git a/src/server/version.txt b/src/server/version.txt index 9d0f128..d2d61a7 100644 --- a/src/server/version.txt +++ b/src/server/version.txt @@ -1 +1 @@ -1.1.23 \ No newline at end of file +1.2.2 \ No newline at end of file