summaryrefslogtreecommitdiff
path: root/modules/$email/email.js
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-02-11 22:28:42 +0100
committerTom Smeding <tom@tomsmeding.com>2025-02-11 22:28:42 +0100
commite82480ae6c4f6ae60904ac82071ca38d570d5be6 (patch)
tree8dde7df22379a8bea0c3b752f1ba9596622db108 /modules/$email/email.js
parent4647331ff4f87598adc1dee354377284d95be60e (diff)
Put disabled modules in modules/$disabled
Diffstat (limited to 'modules/$email/email.js')
-rw-r--r--modules/$email/email.js71
1 files changed, 0 insertions, 71 deletions
diff --git a/modules/$email/email.js b/modules/$email/email.js
deleted file mode 100644
index d7fe171..0000000
--- a/modules/$email/email.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var cmn = require("../$common.js"),
- fs = require("fs"),
- child_process = require("child_process"),
- bodyParser = require("body-parser");
-
-var ratelimitAllowed = (function() {
- var numEvents = 20, period = 24 * 3600 * 1000;
- var eventList = [];
-
- return function ratelimitAllowed() {
- var now = new Date();
- while (now - eventList[0] > period) eventList.unshift();
- if (eventList.length >= numEvents) return false;
- eventList.push(now);
- return true;
- };
-})();
-
-function sendEmail(recip, text) {
- var opts = {
- stdio: ["pipe", "inherit", "inherit"]
- };
- var proc = child_process.spawn("msmtp", ["--read-recipients"], opts);
-
- // Make sure it doesn't run indefinitely
- var timeout = setTimeout(() => {proc.kill();}, 5000);
- proc.on("exit", () => clearTimeout(timeout));
- proc.on("error", err => {
- console.log("email: Failed to start msmtp:", err);
- clearTimeout(timeout);
- });
- proc.stdin.on("error", err => {
- console.log("email: Failed to write to msmtp:", err);
- clearTimeout(timeout);
- });
- proc.stdin.end(
- "To: " + recip + "\n" +
- "Subject: Mail from email module\n\n" +
- text
- );
-}
-
-module.exports = function(app, io, moddir) {
- var allowedRecipients, password;
-
- try {
- allowedRecipients =
- fs.readFileSync(moddir + "/allowed_recipients.txt").toString().trim().split("\n");
- password = fs.readFileSync(moddir + "/password.txt").toString().trim();
- } catch (e) {
- console.error(e);
- return false;
- }
-
- app.post("/email", bodyParser.json(), function(req, res) {
- var body = req.body;
- console.log(body);
- if (typeof body != "object" ||
- typeof body.password != "string" ||
- typeof body.to != "string" ||
- typeof body.text != "string" ||
- body.password != password ||
- allowedRecipients.indexOf(body.to) == -1) {
- res.status(400).send("Invalid request");
- return;
- }
- var text = body.text.slice(0, 1000000); // 1 MB is enough
- sendEmail(body.to, body.text);
- res.end();
- });
-};