From ce671d4294db5abfa9ff35b9d50b59e90d5e2a54 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Mon, 23 Sep 2024 17:00:45 +0530 Subject: [PATCH] feat: add validatesmtp endpoint --- .../src/primitives/GetReportDisplay.js | 1 - .../cloud/customRoute/customApp.js | 2 + .../cloud/customRoute/validateSmtp.js | 72 +++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 apps/OpenSignServer/cloud/customRoute/validateSmtp.js diff --git a/apps/OpenSign/src/primitives/GetReportDisplay.js b/apps/OpenSign/src/primitives/GetReportDisplay.js index e3f6c8d97..217378359 100644 --- a/apps/OpenSign/src/primitives/GetReportDisplay.js +++ b/apps/OpenSign/src/primitives/GetReportDisplay.js @@ -777,7 +777,6 @@ const ReportTable = (props) => { "X-Parse-Application-Id": localStorage.getItem("parseAppId"), sessionToken: localStorage.getItem("accesstoken") }; - console.log("doc?.ExtUserPtr ", doc?.ExtUserPtr); let params = { mailProvider: doc?.ExtUserPtr?.active_mail_adapter || "", extUserId: doc?.ExtUserPtr?.objectId, diff --git a/apps/OpenSignServer/cloud/customRoute/customApp.js b/apps/OpenSignServer/cloud/customRoute/customApp.js index f9fdefaea..a6ebc3de3 100644 --- a/apps/OpenSignServer/cloud/customRoute/customApp.js +++ b/apps/OpenSignServer/cloud/customRoute/customApp.js @@ -8,6 +8,7 @@ import saveInvoice from './saveInvoice.js'; import savePayments from './savePayments.js'; import gooogleauth from './googleauth.js'; import autoReminder from './autoReminder.js'; +import validateSmtp from './validateSmtp.js'; export const app = express(); dotenv.config(); @@ -22,3 +23,4 @@ app.post('/saveinvoice', saveInvoice); app.post('/savepayment', savePayments); app.post('/googleauth', gooogleauth); app.post('/sendreminder', autoReminder); +app.post('/validatesmtp', validateSmtp); diff --git a/apps/OpenSignServer/cloud/customRoute/validateSmtp.js b/apps/OpenSignServer/cloud/customRoute/validateSmtp.js new file mode 100644 index 000000000..220637b29 --- /dev/null +++ b/apps/OpenSignServer/cloud/customRoute/validateSmtp.js @@ -0,0 +1,72 @@ +import { createTransport } from 'nodemailer'; +import { appName } from '../../Utils.js'; +// Online Javascript Editor for free +// Write, Edit and Run your Javascript code using JS Online Compiler + +function generateOtpWithSum10() { + let otp = []; + let sum = 0; + + // First, generate 3 random digits (0-9) and add them to the sum + for (let i = 0; i < 3; i++) { + let digit = Math.floor(Math.random() * 10); + otp.push(digit); + sum += digit; + } + + // Calculate the last digit to ensure the sum equals 10 + let lastDigit = 10 - sum; + + // If the last digit is not valid (e.g., greater than 9), regenerate + if (lastDigit >= 0 && lastDigit <= 9) { + otp.push(lastDigit); + } else { + return generateOtpWithSum10(); // Recursively generate again + } + + return otp.join(''); +} + +export default async function validateSmtp(request, response) { + const host = request.body.host; + const port = request.body?.port?.toString(); + const username = request.body.username; + const password = request.body.password; + const secure = request.body?.secure; + const email = request.body?.email; + const otp = generateOtpWithSum10(); + // console.log('Generated OTP:', otp); + + try { + const smtpsecure = secure || port !== '465' ? false : true; + const transporterSMTP = createTransport({ + host: host, + port: port, + secure: smtpsecure, + auth: { user: username, pass: password }, + }); + const from = appName; + const mailsender = username; + const messageParams = { + from: from + ' <' + mailsender + '>', + to: email, + subject: `Your ${appName} SMTP credentials verification code`, + text: 'mail', + html: + `

SMTP Verification Code

Your verification code is:

` + + otp + + '

', + }; + + const res = await transporterSMTP.sendMail(messageParams); + console.log('custom smtp transporter res: ', res?.response); + if (!res.err) { + response.status(200).json({ message: 'success' }); + } + } catch (err) { + console.log('err ', err); + const code = err?.responseCode || 400; + const message = err?.response || 'failed!'; + response.status(code).json({ error: message }); + } +}