diff --git a/.env.development b/.env.development
index 3e28db4..345948f 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=1
MONGODB_USER=admin
@@ -41,7 +41,4 @@ FTPSERVER_USER=ftpusrsrv_
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
\ No newline at end of file
+CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
\ No newline at end of file
diff --git a/.env.prod.riso b/.env.prod.riso
index 8a6d6aa..24d421f 100644
--- a/.env.prod.riso
+++ b/.env.prod.riso
@@ -1,16 +1,16 @@
-DATABASE=test_FreePlanet
+DATABASE=FreePlanet
UDB=paofreeplanet
PDB=suerteFreePlanet@1A
SEND_EMAIL=1
-PORT=3001
+PORT=0
ENABLE_PUSHNOTIFICATION=1
-DIRECTORY_SERVER=/var/www/nodejs_test.riso_server
-SERVERDIR_WEBSITE=/var/www/test.riso.app
+DIRECTORY_SERVER=/var/www/nodejs_riso_server
+SERVERDIR_WEBSITE=/var/www/riso.app
PORT_APP1="0"
DOMAIN=mongodb://localhost:32015/
AUTH_MONGODB=1
MONGODB_USER=admin
-MONGODB_PWD=mypwadmin@1A
+MONGODB_PWD=mypwadminREAL@1A
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
DEBUG=0
LOCALE=0
@@ -23,13 +23,14 @@ PATH_CERT_KEY=key.pem
PATH_SERVER_CRT=cert.pem
PATH_SSL_ROOT_PEM=root.pem
PATH_SSL_CHAIN_PEM=chain.pem
-PROD=0
+PROD=1
PROJECT_DESCR_MAIN='__PROJECTS'
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
TOKEN_LIFE=2h
REFRESH_TOKEN_LIFE=14d
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
-DOMAINS=[{"hostname":"abitaregliiblei.it","port":"3021"},{"hostname":"riso.app","port":"3005"}]
+DOMAINS=[{"hostname":"riso.app","port":"3006"}]
+#DOMAINS=[{"hostname":"abitaregliiblei.it","port":"3021"},{"hostname":"riso.app","port":"3005"}]
SCRIPTS_DIR=admin_scripts
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
MIAB_HOST=box.lamiaposta.org
diff --git a/deploynodejs_on_prod_riso.sh b/deploynodejs_on_prod_riso.sh
new file mode 100755
index 0000000..a6e854b
--- /dev/null
+++ b/deploynodejs_on_prod_riso.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+source ./.env.prod.riso
+
+echo "Sincronizzazione in corso ... $DIRECTORY_SERVER/"
+echo ""
+
+#!/bin/bash
+
+# Configurazione
+REMOTE_USER="pcbuser"
+REMOTE_HOST="pcb"
+REMOTE_PORT="8822"
+REMOTE_DIR="$DIRECTORY_SERVER"
+SSH_OPTIONS="-p $REMOTE_PORT"
+CONFIG_JS="ecosystem.config.prod_riso.js"
+ENV_FILE=".env.prod.riso"
+ENV_OUT=".env.production"
+
+#ENV_FILE=".env.prod.pcb"
+#ENV_OUT=".env.production"
+
+# Array di cartelle e file da sincronizzare
+SYNC_ITEMS=(
+ "css"
+ "docs"
+ "emails"
+ "plugins"
+ "sass"
+ "admin_scripts"
+ "src"
+)
+
+echo $REMOTE_DIR
+
+echo ""
+echo "*** Copia Cartelle ... "
+
+
+# Esegui rsync per le cartelle
+rsync -avz --delete \
+ --exclude='src/server/router/upload/' \
+ -e "ssh $SSH_OPTIONS" \
+ "${SYNC_ITEMS[@]}" \
+ "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
+
+echo ""
+echo "*** Copia del file $ENV_FILE su $ENV_OUT ... "
+
+# Sincronizza i file specifici
+rsync -avz -e "ssh $SSH_OPTIONS" \
+ $ENV_FILE "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$ENV_OUT"
+
+echo ""
+echo "*** Copia del file package.json ... "
+rsync -avz -e "ssh $SSH_OPTIONS" \
+ package.json "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/package.json"
+
+echo ""
+echo "*** Copia del file 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! "
+else
+ echo "β Errore durante la sincronizzazione. Controlla l'output per i dettagli."
+fi
+
diff --git a/deploynodejs_on_risosrv_test.sh b/deploynodejs_on_test_riso.sh
similarity index 100%
rename from deploynodejs_on_risosrv_test.sh
rename to deploynodejs_on_test_riso.sh
diff --git a/ecosystem.config.prod_riso.js b/ecosystem.config.prod_riso.js
new file mode 100755
index 0000000..8d319a3
--- /dev/null
+++ b/ecosystem.config.prod_riso.js
@@ -0,0 +1,21 @@
+module.exports = {
+ apps: [
+ {
+ name: "PRODUZIONE RISO - FREEPLANET",
+ 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",
+ //autorestart: true,
+ instances: 1,
+ watch: false,
+ env: {
+ "NODE_ENV": "production"
+ },
+ log_file: "logs/combined.outerr.log",
+ error_file: "logs/error.log",
+ out_file: "logs/out.log",
+ merge_logs: true,
+ log_date_format: "YYYY-MM-DD HH:mm:ss.SSSS Z"
+ }
+ ]
+};
\ No newline at end of file
diff --git a/logtrans.txt b/logtrans.txt
index efe9747..2264f87 100644
--- a/logtrans.txt
+++ b/logtrans.txt
@@ -393,4 +393,14 @@ Ven 04/10 ORE 01:50: [Circuito RIS Bologna]: Inviate Monete da paoloar77
Causale Destinatario: ProvaCommento
Saldi:
paoloar77: 6.99 RIS]
-ElenaEspx: 41.41 RIS]
\ No newline at end of file
+ElenaEspx: 41.41 RIS]
+Dom 27/10 ORE 23:50: [Circuito RIS Foggia]: Inviate Monete da sergiomazzanti a SamuelMast 10 RIS [causale: ]
+
+Saldi:
+sergiomazzanti: 10.00 RIS]
+SamuelMast: -76.00 RIS]
+Dom 27/10 ORE 23:55: [Circuito RIS Campania]: Inviate Monete da Unicorno_Giacomo a zacc50 16 RIS [causale: ]
+
+Saldi:
+Unicorno_Giacomo: 227.30 RIS]
+zacc50: -62.00 RIS]
\ No newline at end of file
diff --git a/src/server/locales/it.json b/src/server/locales/it.json
index 6a34ad8..a7f0d95 100644
--- a/src/server/locales/it.json
+++ b/src/server/locales/it.json
@@ -87,14 +87,14 @@
"CIRCUIT_SENDCOINSREQ_FROM_GROUP_TO_GROUP": "il conto %s '%s' (%s) sta inviando %s %s al conto %s '%s' sul '%s'.",
"CIRCUIT_SENDCOINSREQ_TO_ME": "Stai inviando %s %s a %s sul '%s'.",
"CIRCUIT_SENDCOINSREQ_TO_GROUP": "Stai inviando %s %s al Conto %s '%s' sul '%s'.",
- "ID_CIRCUIT_COINS_ACCEPTED_FROM_GROUP_TO_YOU": "Hai ricevuto %s %s dal Conto %s '%s' sul '%s' (%s) .",
- "ID_CIRCUIT_COINS_ACCEPTED_FROM_GROUP_TO_GROUP": "il conto %s '%s' (%s) ha ricevuto %s %s dal conto %s '%s' sul '%s' (%s).",
- "ID_CIRCUIT_COINS_ACCEPTED_FROM_ME_TO_GROUP": "il conto %s '%s' (%s) ha ricevuto %s %s da %s sul '%s'.",
- "ID_CIRCUIT_COINS_ACCEPTED_FROM_ME_TO_YOU": "Hai ricevuto %s %s da %s sul '%s'.",
- "ID_CIRCUIT_COINS_ACCEPTED": "%s %s ricevuti da %s sul '%s'.",
+ "ID_CIRCUIT_COINS_ACCEPTED_FROM_GROUP_TO_YOU": "π’ Hai ricevuto %s %s dal Conto %s '%s' sul '%s' (%s) .",
+ "ID_CIRCUIT_COINS_ACCEPTED_FROM_GROUP_TO_GROUP": "π’ il conto %s '%s' (%s) ha ricevuto %s %s dal conto %s '%s' sul '%s' (%s).",
+ "ID_CIRCUIT_COINS_ACCEPTED_FROM_ME_TO_GROUP": "π’ il conto %s '%s' (%s) ha ricevuto %s %s da %s sul '%s'.",
+ "ID_CIRCUIT_COINS_ACCEPTED_FROM_ME_TO_YOU": "π’ Hai ricevuto %s %s da %s sul '%s'.",
+ "ID_CIRCUIT_COINS_ACCEPTED": "π’ %s %s ricevuti da %s sul '%s'.",
"SALDO_UPDATE": "[Saldo %s %s sul '%s']",
"SALDO_UPDATE_WHO": "[Saldo %s %s %s sul '%s']",
- "ID_CIRCUIT_COINS_ACCEPTED_TO_ME": "Hai inviato %s %s a %s sul '%s'.",
+ "ID_CIRCUIT_COINS_ACCEPTED_TO_ME": "π Hai inviato %s %s a %s sul '%s'.",
"ID_CIRCUIT_COINS_REFUSED": "%s %s rifiutati da %s sul '%s'.",
"ID_CIRCUIT_COINS_REFUSED_TO_ME": "%s %s rifiutati da %s sul '%s'.",
"CIRCUIT_AMOUNT_EXCEED_FIDO": "L'importo supera la quantitΓ massima concessa per %s",
diff --git a/src/server/models/circuit.js b/src/server/models/circuit.js
index 4e1d706..49e1aa0 100755
--- a/src/server/models/circuit.js
+++ b/src/server/models/circuit.js
@@ -487,6 +487,16 @@ CircuitSchema.statics.getInfoCircuitByName = async function (idapp, name) {
CircuitSchema.statics.getCircuitByName = async function (idapp, name) {
+ if (name === 'Circuito RIS Benevento') {
+ name = 'Circuito RIS Campania';
+ } else if (name === 'RIS Pesaro e Urbino') {
+ name = 'Circuito RIS Pesaro e Urbino';
+ } else if (name === 'RIS Catania') {
+ name = 'Circuito RIS Catania';
+ } else if (name === 'RIS Palermo') {
+ name = 'Circuito RIS Palermo';
+ }
+
const myfind = {
idapp,
name,
diff --git a/src/server/models/sendnotif.js b/src/server/models/sendnotif.js
index 74e46bc..79d3ac6 100755
--- a/src/server/models/sendnotif.js
+++ b/src/server/models/sendnotif.js
@@ -9,6 +9,7 @@ const i18n = require('i18n');
const { ObjectID } = require('mongodb');
const shared_consts = require('../tools/shared_nodejs');
+const server_constants = require('../tools/server_constants');
const globalTables = require('../tools/globalTables');
@@ -109,7 +110,10 @@ const sendNotifSchema = new Schema({
},
linkaddTelegram: {
type: String,
- }
+ },
+ img: {
+ type: String,
+ },
});
sendNotifSchema.index({ idapp: 1 });
@@ -683,7 +687,7 @@ sendNotifSchema.statics.findAllNotifCoinsAllIdAndIdApp = function (idapp) {
typeid: shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ,
status: 0,
'extrarec.circuitname': { $ne: "Circuito di TEST" },
- 'extrarec.symbol': { $ne: "RISTeST"},
+ 'extrarec.symbol': { $ne: "RISTeST" },
}
return SendNotif.aggregate([
@@ -1003,6 +1007,14 @@ sendNotifSchema.statics.createNewNotification = async function (req, res, params
myrecnotif.tablerec = table;
if (rec && table) {
myrecnotif.idrec = rec._id;
+ try {
+ if (rec.photos && rec.photos[0]) {
+ const mydir = server_constants.DIR_UPLOAD + shared_consts.getDirectoryByTable(table, true);
+ myrecnotif.img = mydir + rec.photos[0].imagefile;
+ }
+ } catch (e) {
+ console.error('createNewNotification', e);
+ }
}
@@ -1279,14 +1291,21 @@ sendNotifSchema.statics.getSumPendingTransactionsDest = async function (idapp, u
sendNotifSchema.statics.RemovePendentTransactions = async function (idapp) {
const SendNodif = this;
- return await SendNodif.deleteMany(
- {
- idapp,
- typedir: shared_consts.TypeNotifs.TYPEDIR_CIRCUITS,
- typeid: shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ,
- status: 0,
- }
- );
+ try {
+ const result = await SendNodif.deleteMany(
+ {
+ idapp,
+ typedir: shared_consts.TypeNotifs.TYPEDIR_CIRCUITS,
+ typeid: shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ,
+ status: 0,
+ }
+ );
+ return result;
+ } catch (error) {
+ console.error('Error deleting documents:', error);
+ throw error;
+ }
+
};
diff --git a/src/server/router/sendnotif_router.js b/src/server/router/sendnotif_router.js
index 5a59137..89f1334 100755
--- a/src/server/router/sendnotif_router.js
+++ b/src/server/router/sendnotif_router.js
@@ -84,7 +84,7 @@ router.get('/set/:_id/:idapp', authenticate, async (req, res) => {
});
-async function delNotif(idapp, username, id, username_call) {
+async function delNotif(res, idapp, username, id, username_call) {
try {
if (username === username_call) {
@@ -103,7 +103,7 @@ async function delNotif(idapp, username, id, username_call) {
router.get('/del/:username/:id/:idapp', authenticate, async (req, res) => {
try {
- return delNotif(req.params.idapp, req.params.username, req.params.id, req.user.username);
+ return delNotif(res, req.params.idapp, req.params.username, req.params.id, req.user.username);
} catch (e) {
return res.status(400).send(e);
diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js
index 37cd440..fadc6b3 100755
--- a/src/server/router/users_router.js
+++ b/src/server/router/users_router.js
@@ -1451,7 +1451,7 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) {
} else if (mydata.dbop === 'CorreggiTransazioniCircuiti') {
await Circuit.CheckTransazioniCircuiti(true);
} else if (mydata.dbop === 'RemovePendentTransactions') {
- await SendNotif.RemovePendentTransactions(true);
+ ris = await SendNotif.RemovePendentTransactions(idapp);
} else if (mydata.dbop === 'RemoveOldNotif90') {
await SendNotif.RemoveOldNotif90(idapp);
} else if (mydata.dbop === 'RemoveOldNotif30') {
diff --git a/src/server/sendemail.js b/src/server/sendemail.js
index 27cbdb3..15b39d8 100755
--- a/src/server/sendemail.js
+++ b/src/server/sendemail.js
@@ -985,10 +985,11 @@ module.exports = {
checkifSentNewsletter: async function (idapp) {
// Check if is the time to send the Newsletter
- return await Newstosent.findNewsletter_To_Send(idapp).then((rec) => {
- if (rec)
- this.sendNewsletter(rec, idapp);
- });
+ return await Newstosent.findNewsletter_To_Send(idapp)
+ .then((rec) => {
+ if (rec)
+ this.sendNewsletter(rec, idapp);
+ });
}
,
@@ -1009,12 +1010,13 @@ module.exports = {
myjobnews.starting_job = true;
myjobnews.datestartJob = new Date();
- myjobnews.save().then((ris) => {
+ myjobnews.save()
+ .then(async (ris) => {
- this.sendEmail_Newsletter_Events('it', idapp, rec._id);
- }).catch((e) => {
- console.error(e.message);
- });
+ await this.sendEmail_Newsletter_Events('it', idapp, rec._id);
+ }).catch((e) => {
+ console.error(e.message);
+ });
}
}
},
diff --git a/src/server/server.js b/src/server/server.js
index 4c69981..9a602f0 100755
--- a/src/server/server.js
+++ b/src/server/server.js
@@ -61,7 +61,7 @@ let credentials = null;
if ((process.env.NODE_ENV === 'production')) {
- console.log('*** AMBIENTE DI PRODUZIONE (Aprile 2024) !!!!')
+ console.log('*** AMBIENTE DI PRODUZIONE !!!!')
} else if (process.env.NODE_ENV === 'test') {
console.log('*** ### AMBIENTE DI TEST ')
}
@@ -175,9 +175,6 @@ myLoad().then(ris => {
// res.sendFile(path.join(__dirname, 'service-worker.js')); // Modifica il percorso secondo la tua struttura
});*/
- app.use(cors({
- exposedHeaders: ['x-auth', 'x-refrtok'],
- }));
app.use(bodyParser.json());
@@ -187,39 +184,6 @@ myLoad().then(ris => {
console.log('Use Routes \...');
- // Use Routes
- app.use('/', index_router);
- app.use('/subscribe', subscribe_router);
- app.use('/sendmsg', sendmsg_router);
- app.use('/sendnotif', sendnotif_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('/reactions', reactions_router);
- app.use('/mygroup', mygroups_router);
- app.use('/circuit', circuits_router);
- app.use('/account', accounts_router);
- app.use('/iscritti_conacreis', iscrittiConacreis_router);
- app.use('/iscritti_arcadei', iscrittiArcadei_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('/city', city_router);
- app.use('/myskills', myskills_router);
- app.use('/mygoods', mygoods_router);
- app.use('/mygen', mygen_router);
- app.use('/aitools', aitools_router);
-
// catch 404 and forward to error handler
// app.use(function (req, res, next) {
// var err = new Error('Not Found');
@@ -265,6 +229,40 @@ myLoad().then(ris => {
}
startServer(app, process.env.PORT);
+ // Use Routes
+ app.use('/', index_router);
+ app.use('/subscribe', subscribe_router);
+ app.use('/sendmsg', sendmsg_router);
+ app.use('/sendnotif', sendnotif_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('/reactions', reactions_router);
+ app.use('/mygroup', mygroups_router);
+ app.use('/circuit', circuits_router);
+ app.use('/account', accounts_router);
+ app.use('/iscritti_conacreis', iscrittiConacreis_router);
+ app.use('/iscritti_arcadei', iscrittiArcadei_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('/city', city_router);
+ app.use('/myskills', myskills_router);
+ app.use('/mygoods', mygoods_router);
+ app.use('/mygen', mygen_router);
+ app.use('/aitools', aitools_router);
+
+
mystart();
});
@@ -272,15 +270,6 @@ myLoad().then(ris => {
// 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();
@@ -366,8 +355,8 @@ async function mycron() {
const arr = await tools.getApps();
for (const app of arr) {
- sendemail.checkifPendingNewsletter(app.idapp);
- sendemail.checkifSentNewsletter(app.idapp);
+ await sendemail.checkifPendingNewsletter(app.idapp);
+ await sendemail.checkifSentNewsletter(app.idapp);
}
} catch (e) {
@@ -812,51 +801,140 @@ function startServer(app, port) {
console.log('isProduction', isProduction);
- /*
- const CORS_ENABLE_FOR_ALL_SITES = true;
+ const NOCORS = false;
+ const CORS_ENABLE_FOR_ALL_SITES = false;
+
+ const ISDEBUG = true;
let corsOptions = {};
- if (CORS_ENABLE_FOR_ALL_SITES) {
+ if (NOCORS) {
corsOptions = {
exposedHeaders: ['x-auth', 'x-refrtok'], // Intestazioni da esporre al client
};
} else {
- let myhosts = [];
-
- for (let i = 0; i < domains.length; i++) {
- myhosts.push('https://' + domains[i].hostname);
- myhosts.push('https://' + 'api.' + domains[i].hostname);
- myhosts.push('https://' + 'test.' + domains[i].hostname);
- myhosts.push('https://' + 'testapi.' + domains[i].hostname);
- }
-
- console.log('myhosts', myhosts);
-
- console.log('CORS');
-
- corsOptions = {
- origin: (origin, callback) => {
- if (myhosts.indexOf(origin) !== -1 || !origin) {
+ // Configurazione CORS dettagliata
+ const corsOptions = {
+ origin: '*',
+
+ /*origin: function (origin, callback) {
+ // Array di domini consentiti
+ const allowedOrigins = [
+ 'https://comunitanuovomondo.app',
+ 'https://kolibrilab.it',
+ 'https://riso.app',
+ 'https://api.riso.app',
+ 'https://test.riso.app',
+ 'https://testapi.riso.app',
+ 'http://localhost:8080', // per sviluppo locale
+ 'http://localhost:3000',
+ 'http://localhost:8084',
+ ];
+
+ // Permetti richieste senza origin (es. mobile apps)
+ if (!origin || allowedOrigins.includes(origin)) {
callback(null, true);
} else {
- callback(new Error('Not allowed by CORS'));
+ callback(new Error('β CORS non permesso per questa origine'));
}
- },
+ },*/
+ credentials: false,
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
- allowedHeaders: ['Content-Type', 'Authorization', 'x-auth', 'x-refrtok'], // Intestazioni consentite
- exposedHeaders: ['x-auth', 'x-refrtok'], // Intestazioni da esporre al client
- credentials: true, // Consenti l'invio di cookie
+ allowedHeaders: [
+ 'Origin',
+ 'X-Requested-With',
+ 'Content-Type',
+ 'Accept',
+ 'Authorization',
+ 'x-auth',
+ 'x-refrtok'
+ ],
+ exposedHeaders: ['x-auth', 'x-refrtok'],
+ maxAge: 86400, // Preflight cache 24 ore
preflightContinue: false,
- optionsSuccessStatus: 204,
+ optionsSuccessStatus: 204
};
- app.use(cors(corsOptions));
+ // Applica CORS come primo middleware
+ app.use(cors(corsOptions));
- }*/
+ app.use(express.json()); // Middleware per il parsing del corpo JSON
+
+ // Gestione specifica delle richieste OPTIONS
+ app.options('*', function (req, res) {
+ const origin = req.headers.origin;
+ if (corsOptions.origin === '*' ||
+ (typeof corsOptions.origin === 'function' &&
+ corsOptions.origin.toString().includes(origin))) {
+
+ res.setHeader('Access-Control-Allow-Origin', origin);
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
+ res.setHeader('Access-Control-Allow-Headers',
+ 'Origin, X-Requested-With, Content-Type, Accept, Authorization, x-auth, x-refrtok');
+ res.setHeader('Access-Control-Allow-Credentials', 'true');
+ res.setHeader('Access-Control-Expose-Headers', 'x-auth, x-refrtok');
+ res.setHeader('Access-Control-Max-Age', '86400');
+
+ res.status(204).end();
+ } else {
+ res.status(403).end();
+ }
+ });
+
+ // Middleware per assicurarsi che gli headers CORS siano sempre presenti
+ app.use((req, res, next) => {
+ const origin = req.headers.origin;
+ if (corsOptions.origin === '*' ||
+ (typeof corsOptions.origin === 'function' &&
+ corsOptions.origin.toString().includes(origin))) {
+
+ //console.log('Access-Control-Allow-Origin')
+ res.setHeader('Access-Control-Allow-Origin', origin);
+ res.setHeader('Access-Control-Allow-Credentials', 'true');
+ res.setHeader('Access-Control-Expose-Headers', 'x-auth, x-refrtok');
+ }
+ next();
+ });
+
+ // Log middleware per debug
+ app.use((req, res, next) => {
+ if (ISDEBUG) {
+ console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
+ console.log('Request Headers:', req.headers);
+ }
+
+ // Intercetta la risposta per loggare gli headers
+ const oldSend = res.send;
+ res.send = function (...args) {
+ if (ISDEBUG) {
+ console.log('Response Headers:', res.getHeaders());
+ }
+ return oldSend.apply(res, args);
+ };
+
+ next();
+ });
+
+ // Gestione errori CORS
+ app.use((err, req, res, next) => {
+ if (err.message === 'CORS non permesso per questa origine') {
+ console.error('β Errore CORS:', {
+ origin: req.headers.origin,
+ method: req.method,
+ path: req.path
+ });
+ res.status(403).json({
+ error: 'β CORS non permesso per questa origine (' + req.headers.origin + ')',
+ origin: req.headers.origin
+ });
+ } else {
+ next(err);
+ }
+ });
+ }
diff --git a/src/server/tools/globalTables.js b/src/server/tools/globalTables.js
index 21d5249..2673d0b 100755
--- a/src/server/tools/globalTables.js
+++ b/src/server/tools/globalTables.js
@@ -284,6 +284,7 @@ module.exports = {
typemsg: recnotif.typemsg ? recnotif.typemsg : shared_consts.TypeMsg.SEND_TO_USER,
typenotif,
idnotif,
+ img: recnotif.img,
usernameDest: recnotif.usernameDest ? recnotif.usernameDest : recnotif.dest,
tag: recnotif.tag ? recnotif.tag : '',
actions: recnotif.actions ? recnotif.actions : [],
diff --git a/src/server/version.txt b/src/server/version.txt
index 1b87bcd..ab67981 100644
--- a/src/server/version.txt
+++ b/src/server/version.txt
@@ -1 +1 @@
-1.1.4
\ No newline at end of file
+1.1.6
\ No newline at end of file