Perform reverse dns lookup on x-forwarded-for domain.
This commit is contained in:
parent
a2740f6359
commit
3c83bfaffb
1 changed files with 19 additions and 11 deletions
30
server.js
30
server.js
|
@ -17,6 +17,8 @@ import bodyParser from "body-parser";
|
|||
import MimeMessage from "./lib/MimeMessage.js";
|
||||
import MimeHeader from "./lib/MimeHeader.js";
|
||||
|
||||
import dns from 'node:dns';
|
||||
|
||||
app.use(cors());
|
||||
|
||||
app.use(cookieParser());
|
||||
|
@ -42,18 +44,24 @@ app.post('/sendgrid/ingress', (req, res) => {
|
|||
|
||||
var envelope = JSON.parse(fields.envelope?.[0]??"{}");
|
||||
|
||||
messageObj.prependHeader(new MimeHeader(`Received: from ${req.headers["x-forwarded-for"]} by andrewpietila.com with HTTPS-API id ${state} for ${envelope.to??"unknown"}; ${new Date().toISOString()}`));
|
||||
messageObj.prependHeader(new MimeHeader(`X-Auth-Check: SPF ${fields.SPF?.[0]??"missing"}`));
|
||||
messageObj.prependHeader(new MimeHeader(`X-Auth-Check: DKIM ${fields.dkim?.[0]??"missing"}`));
|
||||
messageObj.prependHeader(new MimeHeader(`Return-Path: <${envelope.from??"unknown"}>`));
|
||||
dns.reverse(typeof req.headers["x-forwarded-for"] === "string" ? req.headers["x-forwarded-for"] : "192.0.2.0", (err, dnsRes) => {
|
||||
if (err)
|
||||
messageObj.prependHeader(new MimeHeader(`Received: from ${req.headers["x-forwarded-for"]} by andrewpietila.com with HTTPS-API id ${state} for ${envelope.to ?? "unknown"}; ${new Date().toISOString()}`));
|
||||
else
|
||||
messageObj.prependHeader(new MimeHeader(`Received: from ${dnsRes[0]} (${dnsRes[0]} [${req.headers["x-forwarded-for"]}] by andrewpietila.com with HTTPS-API id ${state} for ${envelope.to ?? "unknown"}; ${new Date().toISOString()}`));
|
||||
messageObj.prependHeader(new MimeHeader(`X-Auth-Check: SPF ${fields.SPF?.[0] ?? "missing"}`));
|
||||
messageObj.prependHeader(new MimeHeader(`X-Auth-Check: DKIM ${fields.dkim?.[0] ?? "missing"}`));
|
||||
messageObj.prependHeader(new MimeHeader(`Return-Path: <${envelope.from ?? "unknown"}>`));
|
||||
|
||||
fs.writeFileSync(`messages/${new Date().toISOString()}.eml`, messageObj.toString());
|
||||
fs.writeFileSync(`messages/${new Date().toISOString()}-headers.json`, JSON.stringify(req.headers, null, 4));
|
||||
fs.writeFileSync(`messages/${new Date().toISOString()}.json`, JSON.stringify(fields, null, 4));
|
||||
res.status(204);
|
||||
res.end();
|
||||
state++;
|
||||
fs.writeFileSync("state.integer", state.toString(), { encoding: "utf-8" });
|
||||
})
|
||||
|
||||
fs.writeFileSync(`messages/${new Date().toISOString()}.eml`, messageObj.toString());
|
||||
fs.writeFileSync(`messages/${new Date().toISOString()}-headers.json`, JSON.stringify(req.headers, null, 4));
|
||||
fs.writeFileSync(`messages/${new Date().toISOString()}.json`, JSON.stringify(fields, null, 4));
|
||||
res.status(204);
|
||||
res.end();
|
||||
state++;
|
||||
fs.writeFileSync("state.integer", state.toString(), {encoding: "utf-8"});
|
||||
})
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue