'use strict' require('dotenv').config() const express = require('express') const app = express() const bodyParser = require('body-parser') const {verify} = require('hcaptcha') const mailer = require('nodemailer').createTransport({ host: process.env.MAIL_SERVER, port: 587, secure: false, // STARTTLS LATER auth: { user: process.env.MAIL_USER, pass: process.env.MAIL_PASS, }, }) //app.use(express.json()) app.use(bodyParser.json()) app.post('/', async (req, res) => { // Check token let data try { data = await verify(process.env.HCAPTCHA_SECRET, req.body['token']) } catch (err) { console.error(`Failed to check hcaptcha\n${err}`) return res.sendStatus(500) } if (data.success === true) { let from if (req.body['name'] && req.body['email']) from = `${req.body['name']} <${req.body['email']}>` else if (req.body['name']) from = req.body['name'] else if (req.body['email']) from = req.body['email'] else from = 'Anonymous' // Send email let mail_res; try { console.log(`Sending email from ${from}...`) mail_res = await mailer.sendMail({ from: from, to: process.env.MAIL_TO, subject: req.body['subj'], text: req.body['msg'], }) } catch (err) { return res.sendStatus(500) console.error(err) } console.log(`Sent email ${mail_res.messageId}`) // hcaptcha failed } else return res.sendStatus(403) }) app.listen(process.env.PORT, () => { console.log(`API listening on ${process.env.PORT}`) })