'use strict' require('dotenv').config() const express = require('express') const app = express() 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.get('/', (req, res) => { res.send('Hello') }) app.post('/', async (req, res) => { console.log(`Received POST`) console.log(req.body) // Check token try { const 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 try { console.log(`Sending email from ${from}...`) 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) } // hcaptcha failed } else return res.sendStatus(403) }) app.listen(process.env.PORT, () => { console.log(`API listening on ${process.env.PORT}`) })