- COMPLETAMENTO PASSAGGIO A VITE - versione 1.2.2:

- Sistemato RefreshToken
  - Integrato modifiche di PiuCheBuono
  - Aggiornato a Node 22
  - Aggiornato Server a Mongodb 8.0.
This commit is contained in:
Surya Paolo
2025-03-10 17:20:57 +01:00
parent 6579c6bb3f
commit 4758ce0857
20 changed files with 118 additions and 116 deletions

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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! "

View File

@@ -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! "

View File

@@ -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,

View File

@@ -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,

View File

@@ -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

View File

@@ -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",

View File

@@ -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);

View File

@@ -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);
if (!token) {
req.user = null;
req.token = null;
req.code = server_constants.RIS_CODE_HTTP_INVALID_TOKEN;
return next();
}
const access = 'auth';
return User.findByToken(token, access, false, idapp).then((ris) => {
User.findByToken(token, 'auth', false, getIdApp(req))
.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) => {
next();
})
.catch((e) => {
console.error('Errore durante l\'autenticazione:', e);
req.user = null;
req.token = null;
req.access = null;
req.code = 0;
// Continua comunque !
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();
}
};

View File

@@ -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];

View File

@@ -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) {

View File

@@ -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
if (!refreshToken) {
return res.status(400).send({ error: 'Refresh token mancante' });
}
const recFound = await User.findOne({ 'tokens.refreshToken': refreshToken });
// console.log('recFound', recFound ? recFound.name : 'NOTFOUND', 'Token=', refreshToken);
if (!recFound) {
return res.status(404).send({ error: 'Refresh token non valido' });
}
const { token, refreshToken: newRefreshToken } = await recFound.generateAuthToken(req);
if (recFound) {
return recFound.generateAuthToken(req)
.then((ris) => {
return res.status(200).send({
usertosend: recFound,
token: ris.token,
refreshToken: ris.refreshToken
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 = {};

View File

@@ -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);
}

View File

@@ -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 = {

View File

@@ -1 +1 @@
1.1.23
1.2.2