diff --git a/emails/admin/registration/enUs/subject.pug b/emails/admin/registration/enUs/subject.pug index 4b74e79..c24484f 100755 --- a/emails/admin/registration/enUs/subject.pug +++ b/emails/admin/registration/enUs/subject.pug @@ -1 +1 @@ -=`New Registration of ${name} ${surname} (${username}) in ${nomeapp}` +=`New Reg. of ${name} ${surname} (${username}) in ${nomeapp} - invited by ${aportador_solidario}` diff --git a/emails/admin/registration/it/subject.pug b/emails/admin/registration/it/subject.pug index cadeec5..83f5ccb 100755 --- a/emails/admin/registration/it/subject.pug +++ b/emails/admin/registration/it/subject.pug @@ -1 +1 @@ -=`Nuova Registrazione di ${name} ${surname} (${username}) su ${nomeapp}` +=`++ Reg. di ${name} ${surname} (${username}) su ${nomeapp} - invitato da ${aportador_solidario}` diff --git a/package.json b/package.json index 579e148..1571c62 100755 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "express": "^4.17.1", "formidable": "^1.2.2", "i18n": "^0.13.3", + "image-downloader": "^4.1.0", "jade": "^1.11.0", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.21", diff --git a/src/server/models/user.js b/src/server/models/user.js index 988788f..e1d6e9f 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -1882,6 +1882,21 @@ UserSchema.statics.UsersByIdTelegram = async function(idapp, teleg_id) { }); }; +UserSchema.statics.setPicProfile = async function(idapp, username, imgpic) { + const User = this; + + const fields_to_update = { + 'profile.img': imgpic, + }; + + return User.findOneAndUpdate({ + idapp, username, + }, {$set: fields_to_update}, {new: false}).then((record) => { + return !!record; + }); + +}; + UserSchema.statics.TelegIdByUsername = async function(idapp, username) { const User = this; diff --git a/src/server/populate/cities.js b/src/server/populate/cities.js index 82a161d..c40eb69 100644 --- a/src/server/populate/cities.js +++ b/src/server/populate/cities.js @@ -89276,5 +89276,27 @@ module.exports = { abitanti: '', country: 'RSM', }, + { + _id: 8118, + istat: '', + comune: 'Estero', + prov: 'EST', + reg: 'EST', + pref: '', + cap: '', + abitanti: '', + country: 'EST', + }, + { + _id: 8119, + istat: '', + comune: 'On Line', + prov: 'ONL', + reg: 'ONL', + pref: '', + cap: '', + abitanti: '', + country: 'ONL', + }, ], }; diff --git a/src/server/populate/provinces.js b/src/server/populate/provinces.js index bc33ce8..e9532f4 100644 --- a/src/server/populate/provinces.js +++ b/src/server/populate/provinces.js @@ -111,5 +111,7 @@ module.exports = { {_id: 109, reg: 'VEN', prov: 'VI', descr: 'Vicenza'}, {_id: 110, reg: 'LAZ', prov: 'VT', descr: 'Viterbo'}, {_id: 111, reg: 'RSM', prov: 'RSM', descr: 'Repubblica di San Marino'}, + {_id: 112, reg: 'EST', prov: 'EST', descr: 'Estero'}, + {_id: 113, reg: 'ONL', prov: 'ONL', descr: 'On Line'}, ], }; diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 6b669f1..886c095 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -1369,7 +1369,7 @@ function uploadFile(req, res, version) { form.on('file', async function(name, file) { try { - console.log('Uploaded ' + file.name); + console.log('1) Uploading ' + file.name); const mydir = tools.getdirByIdApp(idapp) + dirmain + server_constants.DIR_UPLOAD + '/' + dir; @@ -1388,20 +1388,13 @@ function uploadFile(req, res, version) { let newname = mydir + '/' + file.name; let resized_img = mydir + '/' + server_constants.PREFIX_IMG + filename; - console.log('move from ', file.path, 'to :', newname); - - // For local: ... resolve this... sending through the static folder... - // res.sendFile(path.resolve(filename)); - oldpath = file.path; - // newname = '/home/paolo/Documents/prova.png' file.path = newname; // Move in the folder application ! - // tools.move(oldpath, newname, (err) => { tools.move(oldpath, newname, (err) => { if (err) { - console.log('err:', err); + console.log('err uploadDir:', err); res.status(400).send(); } else { @@ -1411,21 +1404,33 @@ function uploadFile(req, res, version) { server_constants.PREFIX_IMG_SMALL + tools.extractFileName(newname); // SMALL - sharp(newname). + + // questa opzione 'failOnError' serve per risolvere l'errore (Error: VipsJpeg: Invalid SOS parameters for sequential JPEG + sharp(newname, { failOnError: false }). resize(64, 64). + withMetadata(). toFile(resized_img_small); // MEDIUM - let resized_img = tools.extractFilePath(newname) + '/' + - server_constants.PREFIX_IMG + tools.extractFileName(newname); - sharp(newname). - resize(512, 512). - toFile(resized_img, function(err) { + let resized_img = tools.extractFilePath(newname) + '/' + server_constants.PREFIX_IMG + tools.extractFileName(newname); + sharp(newname, { failOnError: false }). + resize( { + width: 512, + height: 512, + fit: sharp.fit.cover, + position: sharp.strategy.entropy + }) + .withMetadata() + .toFile(resized_img, function(err) { + + // console.log('3) Ridimensionata Immagine ' + newname, 'in', resized_img); if (tools.isFileExists(resized_img)) { + // console.log('4) Cancella l \'immagine grande originale:', newname); // DELETE THE ORIGINAL BIG tools.delete(newname, false, () => {}); + // console.log('5) Rinomina l\'immagine Media da', resized_img, 'a:', newname); // RENAME THE MEDIUM IN THE ORIGINAL NAME tools.move(resized_img, newname, (err) => { if (err) @@ -1439,12 +1444,12 @@ function uploadFile(req, res, version) { console.error('Error Upload: ', err); }); } catch (e) { - console.error('newname', e); + console.error('Error Upload(2) ', e); } } res.end(); - console.log('res.end'); + // console.log('res.end'); // return res.send({filename: newname }); }); @@ -1456,7 +1461,7 @@ function uploadFile(req, res, version) { }); form.on('end', function() { - console.log('-> upload done'); + // console.log('-> upload done'); }); form.on('aborted', () => { diff --git a/src/server/server.js b/src/server/server.js index 138273b..96ebed5 100755 --- a/src/server/server.js +++ b/src/server/server.js @@ -28,6 +28,8 @@ require('./db/mongoose'); const {Settings} = require('./models/settings'); +const globalTables = require('./tools/globalTables'); + const i18n = require('i18n'); // OBTAIN @@ -241,6 +243,8 @@ async function myLoad() { async function mystart() { + await estraiTutteLeImmagini(); + if (process.env.PROD !== 1) { testmsgwebpush(); @@ -424,6 +428,104 @@ async function inizia() { // console.log(link2); // } +async function estraiImmagini(table) { + const {User} = require('./models/user'); + + let idapp = '13'; + + let arrlist; + + const mytable = globalTables.getTableByTableName(table); + if (!mytable) + return; + + console.log('INIZIO - estraiImmagini', table); + + arrlist = await mytable.find({idapp}).lean(); + + let file = ''; + let filetocheck = ''; + let dirmain = ''; + let filefrom = ''; + let filefrom2 = ''; + let dir = tools.getdirByIdApp(idapp) + dirmain + '/upload/'; + + try { + if (!tools.sulServer()) { + dirmain = '/public'; + } + + for (const rec of arrlist) { + const myuser = await User.findOne({idapp, _id: rec.userId}).lean(); + if (myuser) { + const myphotos = rec.photos; + + if (myphotos.length > 0) { + let folderprof = dir + 'profile/' + myuser.username; + + try { + // console.log('checkdir', folderprof); + if (!fs.existsSync(folderprof)) { + console.log('*** Creadir', folderprof) + fs.mkdirSync(folderprof); + } + + folderprof = dir + 'profile/' + myuser.username + '/' + table; + // console.log('checkdir', folderprof); + if (!fs.existsSync(folderprof)) { + console.log('creadir', folderprof) + fs.mkdirSync(folderprof); + } + }catch (e) { + + } + } + + for (const photo of myphotos) { + + if (photo.imagefile) { + file = dir + 'profile/' + myuser.username + '/' + table + '/' + + photo.imagefile; + filefrom = dir + 'profile/undefined/' + table + '/' + photo.imagefile; + filefrom2 = dir + 'profile/' + myuser.username + '/' + photo.imagefile; + + // console.log('file', file); + // console.log('filefrom', filefrom); + + if (!tools.isFileExists(file)){ + // non esiste + console.log('non esiste', file); + console.log(' filefrom', filefrom); + console.log(' filefrom2', filefrom2); + } + + if (!tools.isFileExists(file) && tools.isFileExists(filefrom)) { + console.log('@@@@@@ copia file:', filefrom, 'a', file); + tools.copy(filefrom, file); + } + if (!tools.isFileExists(file) && tools.isFileExists(filefrom2)) { + console.log('@@@@@@ copia file 2:', filefrom2, 'a', file); + tools.copy(filefrom2, file); + } + } + } + } + } + console.log('FINE - estraiImmagini', table); + }catch (e) { + console.error('e', e); + } +} + +async function estraiTutteLeImmagini() { + + await estraiImmagini('myskills'); + await estraiImmagini('mygoods'); + await estraiImmagini('mybachecas'); +} + + + async function faitest() { // console.log('Fai Test:') diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index 53ca0ca..16ba34e 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -133,12 +133,12 @@ MsgBot = { 'grazie😘'], PRINCIPE_AZZURRO: ['principe azzurro'], COSE_COVID: [ - 'cos\'è il covid', - 'cosa è il covid', - ], + 'cos\'è il covid', + 'cosa è il covid', + ], COVID: [ - 'covid', - ], + 'covid', + ], SPOSAMI: [ 'sposami', 'vuoi sposar', @@ -149,7 +149,11 @@ MsgBot = { 'mi sposi'], CHE_TEMPO_FA: ['che tempo'], NON_TROO_INVITATI: ['non trovo invitati', 'non riesco a trovare invitati'], - TROVAMI_UN_UOMO_DONNA: ['trovami un uomo', 'trovami una donna', 'esiste una donna per me', 'esiste un uomo per me'], + TROVAMI_UN_UOMO_DONNA: [ + 'trovami un uomo', + 'trovami una donna', + 'esiste una donna per me', + 'esiste un uomo per me'], PAROLACCE: [ 'stronz', 'fanculo', @@ -242,6 +246,7 @@ const Menu = { MSG_TO_USER: 'sendmsgto', ADMIN: emoji.get('information_desk_person') + ' Admin', ALTRO: emoji.get('newspaper') + ' Altro', + SETPICPROFILE: '🖼 SetPicProfile', // MSG_TO_NAVE: emoji.get('incoming_envelope') + 'Msg_to_Navi', // MSG_NO_7_REQ: emoji.get('incoming_envelope') + 'No 7 Req.', // MSG_NO_9_REQ: emoji.get('incoming_envelope') + 'No 9 Req', @@ -464,9 +469,9 @@ const txt = { 'Ti sei correttamente verificato con il BOT. ' + '\nSono il tuo assistente virtuale (BOT).\n\n' + 'Questa chat ti servirà per interagire con la Piattaforma e per ricevere delle notifiche Personali.\n' + - ''+ + '' + '(🆘 Per Aiuti, guarda il menu qui sotto)\n\n' + - ''+ + '' + '😍😍😍 Ora sei pronto per Entrare nella APP!\n' + '👉🏻 Clicca qui: %s', MSG_SET_USERNAME: '✨✨✨✨✨✨✨✨✨✨\n' + @@ -484,11 +489,12 @@ const txt = { 'Ora puoi proseguire sulla APP.', MSG_ERR_UNKNOWN_VERIFY_CODE: 'Errore durante il salvataggio sul Server. Riprovare piú tardi', MSG_EXIT_TELEGRAM: 'L\'account è stato ora scollegato da questo Telegram BOT.', - MSG_APORTADOR_USER_REGISTERED: emo.FIRE + ' Si è appena Registrato "%s" (n. %s)\nInvitato da %s', + MSG_APORTADOR_USER_REGISTERED: emo.FIRE + + ' Si è appena Registrato "%s" (n. %s)\nInvitato da %s', MSG_APORTADOR_ASK_CONFIRM: '🆕💥 🧍‍♂️ Abilita Nuova Registrazione: %s', MSG_APORTADOR_CONFIRMED: '✅ %s è stato Abilitato correttamente!', MSG_APORTADOR_DEST_CONFIRMED: '✅ Sei stato Abilitato correttamente da %s!\n' + - 'Vai sulla App oppure clicca qui per entrare\n👉🏻 %s', + 'Vai sulla App oppure clicca qui per entrare\n👉🏻 %s', MSG_APORTADOR_DEST_NOT_CONFIRMED: emo.EXCLAMATION_MARK + '🚫 Ci dispiace ma non sei stato Verificato correttamente dal tuo invitante %s.
Contattalo per farti abilitare !', MSG_APORTADOR_NOT_CONFIRMED: emo.EXCLAMATION_MARK + @@ -514,7 +520,8 @@ const txt_es = { emo.EXCLAMATION_MARK + '\nComprueba en el sitio %s y reescribe el nuevo código de 6 dígitos.', MSG_VERIFY_OK: emoji.get('grinning') + - ' Bienvenido %s! Ha verificado correctamente con el BOT. ' + emo.GREEN_HEART, + ' Bienvenido %s! Ha verificado correctamente con el BOT. ' + + emo.GREEN_HEART, MSG_ERR_UNKNOWN_VERIFY_CODE: 'Error al guardar en el servidor. Inténtalo de nuevo más tarde.', MSG_EXIT_TELEGRAM: 'La cuenta ha sido desconectada de Telegram BOT.', MSG_APORTADOR_USER_REGISTERED: emo.FIRE + @@ -728,13 +735,16 @@ module.exports = { aportador = ` (${userdest})`; NameFrom += aportador; } else { - aportador = mylocalsconf.user.aportador_solidario_nome_completo ? mylocalsconf.user.aportador_solidario_nome_completo : mylocalsconf.user.aportador_solidario; + aportador = mylocalsconf.user.aportador_solidario_nome_completo + ? mylocalsconf.user.aportador_solidario_nome_completo + : mylocalsconf.user.aportador_solidario; } let text = ''; if (phase === this.phase.REGISTRATION) { - if (tools.getConfSiteOptionEnabledByIdApp(mylocalsconf.idapp, shared_consts.ConfSite.Notif_Reg_Bot_ToManagers)) { + if (tools.getConfSiteOptionEnabledByIdApp(mylocalsconf.idapp, + shared_consts.ConfSite.Notif_Reg_Bot_ToManagers)) { if (userdest) { NameFrom = await User.getNameSurnameByUsername(mylocalsconf.idapp, userdest, true) + aportador; @@ -761,7 +771,8 @@ module.exports = { } if (phase === this.phase.REGISTRATION) { - await this.askConfirmationUserRegistration(mylocalsconf.idapp, shared_consts.CallFunz.REGISTRATION, + await this.askConfirmationUserRegistration(mylocalsconf.idapp, + shared_consts.CallFunz.REGISTRATION, mylocalsconf.user, userdest, langdest); } @@ -803,7 +814,8 @@ module.exports = { await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp, addtext + text); }, - sendMsgTelegramToTheManagers: async function(idapp, text, onlyintofile = false, MyForm = null, nottousername = '') { + sendMsgTelegramToTheManagers: async function( + idapp, text, onlyintofile = false, MyForm = null, nottousername = '') { tools.writeManagersLog(text); @@ -881,7 +893,6 @@ module.exports = { msg = cl.convertSpecialTags(rec.user, msg); } - if (!!mydata.flotta) { // SOSTITUISCI LE PAROLE CHIAVI if (!!mydata.flotta.date_start) @@ -1013,7 +1024,8 @@ module.exports = { } if (!!idteleg) { - strout += '\n (' + index + ') ' + user.username + ' (' + user.name + ' ' + user.surname + ':'; + strout += '\n (' + index + ') ' + user.username + ' (' + + user.name + ' ' + user.surname + ':'; if (mydata.inviareale) { await this.sendMsgTelegramByIdTelegram(idapp, idteleg, mymsg, undefined, undefined, true); @@ -1208,20 +1220,22 @@ module.exports = { }, - setVerifiedReg: async function (idapp, lang, usernameorig, usernameDest) { + setVerifiedReg: async function(idapp, lang, usernameorig, usernameDest) { try { await User.setVerifiedByAportador(idapp, usernameDest, true); await User.setFriendsCmd(idapp, usernameorig, usernameDest, shared_consts.FRIENDSCMD.SETFRIEND); - const msgDest = printf(getstr(lang, 'MSG_APORTADOR_CONFIRMED'), `${usernameDest}`); + const msgDest = printf(getstr(lang, 'MSG_APORTADOR_CONFIRMED'), + `${usernameDest}`); await local_sendMsgTelegram(idapp, usernameorig, msgDest); - }catch (e) { + } catch (e) { console.log('e', e); } }, - askConfirmationUserRegistration: async function(idapp, myfunc, myuser, userDest = '', langdest = '') { + askConfirmationUserRegistration: async function( + idapp, myfunc, myuser, userDest = '', langdest = '') { const cl = getclTelegByidapp(idapp); @@ -1235,11 +1249,14 @@ module.exports = { if (notask_verif) { // Non chiedi la verifica Registrazione - this.setVerifiedReg(myuser.idapp, myuser.lang, userDest, myuser.username); + this.setVerifiedReg(myuser.idapp, myuser.lang, userDest, + myuser.username); } else { - const name = myuser.username + (myuser.name ? `(${myuser.name} + ' ' + ${myuser.surname})` : '') - const linkuserprof = tools.getHostByIdApp(idapp) + '/my/' + myuser.username; + const name = myuser.username + + (myuser.name ? `(${myuser.name} + ' ' + ${myuser.surname})` : ''); + const linkuserprof = tools.getHostByIdApp(idapp) + '/my/' + + myuser.username; domanda = printf(getstr(langdest, 'MSG_APORTADOR_ASK_CONFIRM'), `
Username: ${name} (${linkuserprof})
Email: ` + myuser.email); @@ -1264,7 +1281,8 @@ module.exports = { // Invia Msg if (domanda) { const teleg_id = await User.TelegIdByUsername(idapp, userDest); - await this.sendMsgTelegramByIdTelegram(myuser.idapp, teleg_id, domanda, undefined, undefined, true, keyb); + await this.sendMsgTelegramByIdTelegram(myuser.idapp, teleg_id, domanda, + undefined, undefined, true, keyb); } } catch (e) { @@ -1472,7 +1490,8 @@ class Telegram { msg = msg.replace('{username}', user.username); msg = msg.replace('{name}', user.name ? user.name : user.username); msg = msg.replace('{surname}', user.surname ? user.surname : ''); - msg = msg.replace('{aportador}', user.aportador_solidario ? user.aportador_solidario : ''); + msg = msg.replace('{aportador_solidario}', + user.aportador_solidario ? user.aportador_solidario : ''); if (!!user.profile.link_payment) msg = msg.replace('{link_paypalme}', user.profile.link_payment); if (!!user.profile.revolut) @@ -1490,14 +1509,13 @@ class Telegram { // const cl = getclTelegByidapp(user.idapp); msg = msg.replace('{link_chathelp}', tools.HELP_CHAT); - }catch (e) { + } catch (e) { console.log(e); } return msg; } - async IsTesto(msg) { let risp = ''; @@ -1567,15 +1585,21 @@ class Telegram { if (rec.status === Status.VERIFIED) { if (rec.user) { - if (rec.user.profile.username_telegram && msg.from.id > 0 && !msg.from.username) { - rec.user.profile.username_telegram = msg.from.username - await User.setUsernameTelegram(this.idapp, rec.user._id, msg.from.username || '', msg.from.first_name || '', msg.from.last_name || ''); + if (rec.user.profile.username_telegram && msg.from.id > 0 && + !msg.from.username) { + rec.user.profile.username_telegram = msg.from.username; + await User.setUsernameTelegram(this.idapp, rec.user._id, + msg.from.username || '', msg.from.first_name || '', + msg.from.last_name || ''); } if (!rec.user.profile.username_telegram && msg.from.username) { - rec.user.profile.username_telegram = msg.from.username - await User.setUsernameTelegram(this.idapp, rec.user._id, msg.from.username || '', msg.from.first_name || '', msg.from.last_name || ''); - this.sendMsg(msg.from.id, printf(getstr(rec.user.lang, 'MSG_SET_USERNAME_OK'))); + rec.user.profile.username_telegram = msg.from.username; + await User.setUsernameTelegram(this.idapp, rec.user._id, + msg.from.username || '', msg.from.first_name || '', + msg.from.last_name || ''); + this.sendMsg(msg.from.id, + printf(getstr(rec.user.lang, 'MSG_SET_USERNAME_OK'))); } else { if (!rec.user.profile.username_telegram) { return this.checkIfUsernameTelegramSet(msg, rec.user); @@ -1677,8 +1701,10 @@ class Telegram { } else if (MsgBot.SEI_LIBERO.find((rec) => testo.indexOf(rec) > -1)) { risp = 'Io? Sono per la Libertà! ' + emo.JOY + '\nMa se vuoi possiamo conoscerci meglio!' + emo.DANCER + emo.FIRE; - } else if (MsgBot.SEI_LIBERO_DI_RESPIRARE.find((rec) => testo.indexOf(rec) > -1)) { - risp = 'Assolutamente Sì ! Respirare è fondamentale per l\'essere umano !' + emo.DANCER + emo.FIRE; + } else if (MsgBot.SEI_LIBERO_DI_RESPIRARE.find( + (rec) => testo.indexOf(rec) > -1)) { + risp = 'Assolutamente Sì ! Respirare è fondamentale per l\'essere umano !' + + emo.DANCER + emo.FIRE; } else if (MsgBot.FARE_DOMANDA.find((rec) => testo.indexOf(rec) > -1)) { risp = 'Dipende ' + emo.SMILE_STAR + '\nProvaci!'; } else if (MsgBot.DIVENTERO_RICCA.find( @@ -1687,7 +1713,8 @@ class Telegram { emo.GIFT_HEART; } else if (MsgBot.MA_ALLORA.find((rec) => testo.indexOf(rec) > -1)) { risp = 'Ma allora cosa?'; - } else if (MsgBot.TROVAMI_UN_UOMO_DONNA.find((rec) => testo.indexOf(rec) > -1)) { + } else if (MsgBot.TROVAMI_UN_UOMO_DONNA.find( + (rec) => testo.indexOf(rec) > -1)) { risp = 'Eh non è cosi facile. Ma se t\'impegni a cercare ci riuscirai. Nel frattempo trova la tua strada, fai il tuo percorso interiore, e magari arriva proprio quando meno te l\'aspetti'; } else if (MsgBot.SEI_LIBERO_STASERA.find( (rec) => testo.indexOf(rec) > -1)) { @@ -1868,7 +1895,7 @@ class Telegram { await this.menumsgStaff(msg); } else if (testo === Menu.MSGPAOLO) { await this.menumsgPaolo(msg); - // } else if (testo === Menu.MSG_NO_7_REQ) { + // } else if (testo === Menu.MSG_NO_7_REQ) { // await this.menumsg_No_7_Req(msg); // } else if (testo === Menu.MSG_NO_9_REQ) { // await this.menumsg_No_9_Req(msg); @@ -1876,10 +1903,12 @@ class Telegram { // await this.menumsgGenerico(msg, Destin.NESSUN_IMBARCO_7REQ); // } else if (cmd1 === Menu.MSG_TO_NAVE) { // await this.menumsg_to_Nave(msg, cmd2); - // } else if (testo === Menu.MSG_SI_INVITATI_NO_7REQ_INVITATI) { + // } else if (testo === Menu.MSG_SI_INVITATI_NO_7REQ_INVITATI) { // await this.menumsg_Si_Invitati_No_7Req(msg); } else if (cmd1.toLowerCase() === Menu.MSG_TO_USER) { await this.menumsg_A_Utente(msg); + } else if (testo === Menu.SETPICPROFILE) { + await this.setPhotoProfile(rec, msg); } else if (this.isSelMenu(msg, testo, 'INDIETRO') || (testo === Menu.it.INDIETRO)) { await this.msgScegliMenu(msg); @@ -2298,7 +2327,7 @@ class Telegram { } permitSendMsg(user) { - return User.isAdmin(user.perm) + return User.isAdmin(user.perm); } async menumsgGenerico(msg, dest, username, extraparam) { @@ -2495,7 +2524,7 @@ class Telegram { return true; } - }catch (e) { + } catch (e) { console.error('e'); } } @@ -2521,7 +2550,9 @@ class Telegram { if (rec) { if (code === telegcode) { try { - await User.setUsernameTelegram(this.idapp, user._id, msg.from.username || '', msg.from.first_name || '', msg.from.last_name || ''); + await User.setUsernameTelegram(this.idapp, user._id, + msg.from.username || '', msg.from.first_name || '', + msg.from.last_name || ''); } catch (e) {} // let ris = await this.getUser(msg, rec, false); @@ -2529,9 +2560,11 @@ class Telegram { await User.SetTelegramIdSuccess(this.idapp, user._id, msg.from.id).then((recuser) => { if (recuser) { - let name = recuser.name; + this.setPhotoProfile(rec, msg); + let username = recuser.name; this.sendMsg(msg.from.id, - printf(getstr(recuser.lang, 'MSG_VERIFY_OK'), name, tools.getHostByIdApp(this.idapp))); + printf(getstr(recuser.lang, 'MSG_VERIFY_OK'), username, + tools.getHostByIdApp(this.idapp))); this.checkIfUsernameTelegramSet(msg, recuser); // local_sendMsgTelegramToTheManagers(this.idapp, recuser.name + ' ' + recuser.surname + ' si è Verificato a Telegram BOT! (lang=' + recuser.lang + ')' + emo.STARS, msg); @@ -3053,9 +3086,11 @@ class Telegram { // Check if you are Admin const user = await User.UserByIdTelegram(idapp, id); - let isAdmin = user ? user.profile.manage_telegram && user.username === 'paoloar77' : false; + let isAdmin = user ? user.profile.manage_telegram && user.username === + 'paoloar77' : false; const isManager = user ? user.profile.manage_telegram : false; - const isVerified = user ? user.profile.teleg_id > 0 && user.verified_by_aportador : false; + const isVerified = user ? user.profile.teleg_id > 0 && + user.verified_by_aportador : false; this.menuDb = await MyBot.findAllIdApp(idapp); @@ -3075,8 +3110,7 @@ class Telegram { || (isVerified && tools.isBitActive(rec.visibility, shared_consts.VISIB_ONLYIF_VERIFIED)) || (rec.visibility === 0)) - ) - { + ) { rec.active_mem = true; if (rec.main) { lang = rec.lang; @@ -3322,7 +3356,7 @@ class Telegram { return await this._inviaMsg(id, text, form, menu, msg_id, chat_id, ripr_menuPrec); } - }catch (e) { + } catch (e) { console.error('Error sendMsg', e); } @@ -3340,6 +3374,43 @@ class Telegram { return mymenuout; } + async setPhotoProfile(rec, msg) { + try { + if (rec.user) { + const idapp = this.idapp; + const bot = this.bot; + const username = rec.user.username; + const token = this.token; + let myfileprofile = tools.getdirByIdApp(idapp, true) + + server_constants.DIR_UPLOAD + '/profile/' + username +'/'; + let user_profile = bot.getUserProfilePhotos(msg.from.id); + user_profile.then(function(res) { + if (res.photos[0]) { + var file_id = res.photos[0][2].file_id; + var file = bot.getFile(file_id); + file.then(function(result) { + + const file_path = result.file_path; + const photo_url = 'https://api.telegram.org/file/bot' + token + + '/' + file_path; + let filename = tools.extractFileName(photo_url) + myfileprofile += filename; + tools.downloadImage(photo_url, myfileprofile). + then((ris) => { + User.setPicProfile(idapp, username, filename); + // console.log('scaricato'); + }); + // bot.sendMessage(chatId, photo_url); + }); + } + }); + } + } catch (e) { + console.error('Error setPhotoProfile', e); + } + } + + getInlineKeyboard(lang, arrrisp1, arrrisp2, arrrisp3) { let mykeyb = { parse_mode: 'HTML', @@ -3577,16 +3648,20 @@ if (true) { } else if (data.action === InlineConferma.RISPOSTA_SI + shared_consts.CallFunz.REGISTRATION) { - const changed = await myclTelegram.setCmdToUsername(rec, data.username, + const changed = await myclTelegram.setCmdToUsername(rec, + data.username, Cmd.VALIDATE_REGISTRATION, true); - await User.setFriendsCmd(user.idapp, data.username, userDest.username, shared_consts.FRIENDSCMD.SETFRIEND); + await User.setFriendsCmd(user.idapp, data.username, + userDest.username, shared_consts.FRIENDSCMD.SETFRIEND); if (changed) { const msgOrig = printf( - getstr(userDest.lang, 'MSG_APORTADOR_DEST_CONFIRMED'), `${userDest.username}`, tools.getHostByIdApp(user.idapp)); + getstr(userDest.lang, 'MSG_APORTADOR_DEST_CONFIRMED'), + `${userDest.username}`, tools.getHostByIdApp(user.idapp)); const msgDest = printf( - getstr(user.lang, 'MSG_APORTADOR_CONFIRMED'), `${user.username}`); + getstr(user.lang, 'MSG_APORTADOR_CONFIRMED'), + `${user.username}`); await local_sendMsgTelegram(user.idapp, data.username, msgOrig); @@ -3594,8 +3669,10 @@ if (true) { msgDest); } - } else if (data.action === InlineConferma.RISPOSTA_NO + shared_consts.CallFunz.REGISTRATION) { - const changed = await myclTelegram.setCmdToUsername(rec, data.username, + } else if (data.action === InlineConferma.RISPOSTA_NO + + shared_consts.CallFunz.REGISTRATION) { + const changed = await myclTelegram.setCmdToUsername(rec, + data.username, Cmd.VALIDATE_REGISTRATION, false); if (changed) { diff --git a/src/server/tools/general.js b/src/server/tools/general.js index 44c7dd2..ac6c27d 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -25,6 +25,7 @@ const Subscription = mongoose.model('subscribers'); const server_constants = require('./server_constants'); +const download = require('image-downloader'); // SETTINGS WebPush Configuration const webpush = require('web-push'); @@ -880,7 +881,8 @@ module.exports = { let actions = []; if (cmd) { if (cmd === shared_consts.GROUPSCMD.REQGROUP) { - descr = printf(this.get__('RICHIESTA_GRUPPO', lang), groupname, arradmins.username); + descr = printf(this.get__('RICHIESTA_GRUPPO', lang), groupname, + arradmins.username); openUrl = '/grp/' + groupname; tag = 'reqgroups'; } else if (cmd === shared_consts.GROUPSCMD.BLOCK_USER) { @@ -1096,17 +1098,25 @@ module.exports = { return myapp.abilitanave; }, - getdirByIdApp: function(idapp) { + getdirByIdApp: function(idapp, dirmain = false) { + let mypath = ''; const myapp = this.getApps().find(item => item.idapp === idapp); if (myapp) { if (process.env.NODE_ENV === 'test') - return (myapp) ? myapp.dir_test : ''; + mypath = (myapp) ? myapp.dir_test : ''; else - return (myapp) ? myapp.dir : ''; - } else - return ''; + mypath = (myapp) ? myapp.dir : ''; + + if (dirmain) { + if (this.sulServer() !== 1) { + mypath += '/public'; + } + } + } + + return mypath; }, getAdminEmailByIdApp: function(idapp) { @@ -1137,7 +1147,8 @@ module.exports = { }, getAskToVerifyReg: function(idapp) { - return this.getConfSiteOptionEnabledByIdApp(idapp, shared_consts.ConfSite.Need_Aportador_On_DataReg_To_Verify_Reg); + return this.getConfSiteOptionEnabledByIdApp(idapp, + shared_consts.ConfSite.Need_Aportador_On_DataReg_To_Verify_Reg); }, isManagAndAdminDifferent(idapp) { @@ -1177,7 +1188,7 @@ module.exports = { return (myapp && myapp.telegram_support_chat) ? myapp.telegram_support_chat : ''; - }catch (e) { + } catch (e) { return ''; } }, @@ -2118,7 +2129,7 @@ module.exports = { const stream = fs.createWriteStream(filename, {flags: 'a'}); stream.write('\n' + mystr); stream.end(); - }catch (e) { + } catch (e) { } @@ -2180,7 +2191,10 @@ module.exports = { callback(err); } return; + } else { + console.log(' ... File Rinominato', oldPath, 'in:', newPath); } + callback(); }); @@ -2192,6 +2206,7 @@ module.exports = { writeStream.on('error', callback); readStream.on('close', function() { + console.log('cancella file già copiato', oldPath); fs.unlink(oldPath, callback); }); @@ -2222,8 +2237,13 @@ module.exports = { try { let img_small = path.dirname(mypath) + '/' + server_constants.PREFIX_IMG_SMALL + path.basename(mypath); - fs.unlink(img_small, () => {}); - console.log('delete file', mypath); + fs.unlink(img_small, function(err) { + if (err) + console.log('Errore durante la Cancellazione del file', mypath); + else + console.log('deleted file', mypath); + }); + } catch (e) { console.error(err); } @@ -2574,7 +2594,7 @@ module.exports = { return process.env.LOCALE !== '1'; }, - refreshAllTablesInMem(idapp, table){ + refreshAllTablesInMem(idapp, table) { const telegrambot = require('../telegram/telegrambot'); if (table === shared_consts.TAB_MYBOTS) { @@ -2583,6 +2603,15 @@ module.exports = { telegrambot.reloadSites(); } - } + }, + + downloadImage(url, filepath) { + + return download.image({ + url, + dest: filepath + }); + + }, }; diff --git a/yarn.lock b/yarn.lock index 85fa0f7..b8cb7f0 100755 --- a/yarn.lock +++ b/yarn.lock @@ -4663,6 +4663,11 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +image-downloader@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/image-downloader/-/image-downloader-4.1.0.tgz#ce54bc675e243b24c43ca951a326416d4b7bf675" + integrity sha512-S6snaVMg4g08sksTb0ZUQsgQmKo0sv20jJoVtOnSbO/tVC4xcG9DydjLF5ONTKIz3e3qUPnIrMJhU9G124uIfQ== + image-size@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.1.tgz#98122a562d59dcc097ef1b2c8191866eb8f5d663"