'use strict'; const nodemailer = require('nodemailer'); const Logs = require('../logs'); const log = new Logs('NodeMailer'); const HTTPS = process.env.HTTPS === 'true'; const LOCAL_PORT = process.env.PORT || 8080; const EMAIL_HOST = process.env.EMAIL_HOST; const EMAIL_PORT = process.env.EMAIL_PORT; const EMAIL_USERNAME = process.env.EMAIL_USERNAME; const EMAIL_PASSWORD = process.env.EMAIL_PASSWORD; const EMAIL_SEND_TO = process.env.EMAIL_SEND_TO; const EMAIL_ALERT = process.env.EMAIL_ALERT === 'true' || false; if (EMAIL_ALERT && EMAIL_HOST && EMAIL_PORT && EMAIL_USERNAME && EMAIL_PASSWORD && EMAIL_SEND_TO) { log.info('Email', { alert: EMAIL_ALERT, host: EMAIL_HOST, port: EMAIL_PORT, username: EMAIL_USERNAME, password: EMAIL_PASSWORD, }); } const transport = nodemailer.createTransport({ host: EMAIL_HOST, port: EMAIL_PORT, auth: { user: EMAIL_USERNAME, pass: EMAIL_PASSWORD, }, }); function sendEmailAlert(event, data) { if (!EMAIL_ALERT || !EMAIL_HOST || !EMAIL_PORT || !EMAIL_USERNAME || !EMAIL_PASSWORD || !EMAIL_SEND_TO) return; log.info('sendEMailAlert', { event: event, data: data, }); let subject = false; let body = false; switch (event) { case 'join': subject = getJoinRoomSubject(data); body = getJoinRoomBody(data); break; // ... default: break; } if (subject && body) sendEmail(subject, body); } function sendEmail(subject, body) { transport .sendMail({ from: EMAIL_USERNAME, to: EMAIL_SEND_TO, subject: subject, html: body, }) .catch((err) => log.error(err)); } function getJoinRoomSubject(data) { const { room_id } = data; return `MiroTalk C2C - New user Join to Room ${room_id}`; } function getJoinRoomBody(data) { const { peer_name, room_id, domain, os, browser } = data; const currentDataTime = getCurrentDataTime(); const localDomains = ['localhost', '127.0.0.1']; const currentDomain = localDomains.some((localDomain) => domain.includes(localDomain)) ? `${HTTPS ? 'https' : 'http'}://${domain}:${LOCAL_PORT}` : domain; const room_join = `${currentDomain}/?room=`; return `
| User | ${peer_name} |
| Os | ${os} |
| Browser | ${browser} |
| Room | ${room_join}${room_id} |
| Date, Time | ${currentDataTime} |