UNPKG

absenat

Version:

dedicated messaging service core

166 lines (158 loc) 6.01 kB
const messages = {}; const handle_recieve_text_message = (contact_publickey, message) => { const decryped_message = myPrivateKey.decrypt(message); const message_json = JSON.parse(decryped_message); let message_obj = messages[message_json.id]; if (!message_obj) { message_obj = []; } message_obj[message_json.index] = message_json.message; if (message_obj.length == message_json['length']) { const message = message_obj.join(''); db.addRecieveingPrivateTextMessage(message_json.id, contact_publickey, message); db.getContactByPublicKey(contact_publickey, contact => { console.log(`${chalk.green(contact.nickname)}: ${message}`); cli.finished(); }); } else { messages[message_json.id] = message_obj; } }; const handle_recieve_image_message = (contact_publickey, message) => { const decryped_message = myPrivateKey.decrypt(message); const message_json = JSON.parse(decryped_message); let message_obj = messages[message_json.id]; if (!message_obj) { message_obj = []; } message_obj[message_json.index] = message_json.message; if (message_obj.length == message_json['length']) { const caption = message_json.caption; const filename = message_json.filename; if (!fs.existsSync('./storage')) { fs.mkdirSync('./storage'); if (!fs.existsSync('./storage/images')) { fs.mkdirSync('./storage/images'); } } const file = fs.createWriteStream(`./storage/images/${filename}`); for (let i = 0; i < message_obj.length; i++) { const data = Buffer.from(message_obj[i]); file.write(data); } file.end(); db.addRecieveingPrivateImageMessage(message_json.id, contact_publickey, caption, `./storage/${filename}`, filename); db.getContactByPublicKey(contact_publickey, contact => { console.log(`${chalk.green(contact.nickname)}: ${filename} (${caption})`); cli.finished(); }); } else { messages[message_json.id] = message_obj; } }; const handle_recieve_audio_message = (contact_publickey, message) => { const decryped_message = myPrivateKey.decrypt(message); const message_json = JSON.parse(decryped_message); let message_obj = messages[message_json.id]; if (!message_obj) { message_obj = []; } message_obj[message_json.index] = message_json.message; if (message_obj.length == message_json['length']) { const caption = message_json.caption; const filename = message_json.filename; if (!fs.existsSync('./storage')) { fs.mkdirSync('./storage'); if (!fs.existsSync('./storage/audios')) { fs.mkdirSync('./storage/audios'); } } const file = fs.createWriteStream(`./storage/audios/${filename}`); for (let i = 0; i < message_obj.length; i++) { const data = Buffer.from(message_obj[i]); file.write(data); } file.end(); db.addRecieveingPrivateAudioMessage(message_json.id, contact_publickey, caption, `./storage/${filename}`, filename); db.getContactByPublicKey(contact_publickey, contact => { console.log(`${chalk.green(contact.nickname)}: ${filename} (${caption})`); cli.finished(); }); } else { messages[message_json.id] = message_obj; } }; const handle_recieve_file_message = (contact_publickey, message) => { const decryped_message = myPrivateKey.decrypt(message); const message_json = JSON.parse(decryped_message); let message_obj = messages[message_json.id]; if (!message_obj) { message_obj = []; } message_obj[message_json.index] = message_json.message; if (message_obj.length == message_json['length']) { const caption = message_json.caption; const filename = message_json.filename; if (!fs.existsSync('./storage')) { fs.mkdirSync('./storage'); if (!fs.existsSync('./storage/files')) { fs.mkdirSync('./storage/files'); } } const file = fs.createWriteStream(`./storage/files/${filename}`); for (let i = 0; i < message_obj.length; i++) { const data = Buffer.from(message_obj[i]); file.write(data); } file.end(); db.addRecieveingPrivateFileMessage(message_json.id, contact_publickey, caption, `./storage/${filename}`, filename); db.getContactByPublicKey(contact_publickey, contact => { console.log(`${chalk.green(contact.nickname)}: ${filename} (${caption})`); cli.finished(); }); } else { messages[message_json.id] = message_obj; } }; const handle_recieve_movie_message = (contact_publickey, message) => { const decryped_message = myPrivateKey.decrypt(message); const message_json = JSON.parse(decryped_message); let message_obj = messages[message_json.id]; if (!message_obj) { message_obj = []; } message_obj[message_json.index] = message_json.message; if (message_obj.length == message_json['length']) { const caption = message_json.caption; const filename = message_json.filename; if (!fs.existsSync('./storage')) { fs.mkdirSync('./storage'); if (!fs.existsSync('./storage/movies')) { fs.mkdirSync('./storage/movies'); } } const file = fs.createWriteStream(`./storage/movies/${filename}`); for (let i = 0; i < message_obj.length; i++) { const data = Buffer.from(message_obj[i]); file.write(data); } file.end(); db.addRecieveingPrivateMovieMessage(message_json.id, contact_publickey, caption, `./storage/${filename}`, filename); db.getContactByPublicKey(contact_publickey, contact => { console.log(`${chalk.green(contact.nickname)}: ${filename} (${caption})`); cli.finished(); }); } else { messages[message_json.id] = message_obj; } }; const handle = (socket) => { socket.on('text_message', handle_recieve_text_message); socket.on('image_message', handle_recieve_image_message); socket.on('audio_message', handle_recieve_audio_message); socket.on('movie_message', handle_recieve_movie_message); socket.on('file_message', handle_recieve_file_message); } module.exports = { handle, }