mirror of
https://github.com/MailHops/mailhops-plugin.git
synced 2025-05-16 14:20:10 -07:00
Merge pull request #36 from Ionic/feature/rework-received-spf
Rework Received-SPF header parsing.
This commit is contained in:
commit
07410ef5b3
@ -299,17 +299,44 @@ class MailHops {
|
|||||||
browser.messageDisplayAction.setTitle({ title: this.message.sender.title, tabId: this.tabId });
|
browser.messageDisplayAction.setTitle({ title: this.message.sender.title, tabId: this.tabId });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sanitizeString(str) {
|
||||||
|
return str.replace (/\t/g, ' ').replace (/\s+/g, ' ').replace (/</g, '<').replace (/>/g, '>').trim ();
|
||||||
|
}
|
||||||
|
|
||||||
auth(header_xmailer, header_useragent, header_xmimeole, header_auth, header_spf, header_unsubscribe) {
|
auth(header_xmailer, header_useragent, header_xmimeole, header_auth, header_spf, header_unsubscribe) {
|
||||||
let auth = [];
|
let auth = [];
|
||||||
//SPF
|
//SPF
|
||||||
if (header_spf) {
|
if (header_spf) {
|
||||||
header_spf = header_spf.replace(/^\s+/, "");
|
// Compact whitespace, make sure addresses enclosed in <> parse as valid
|
||||||
|
// XHTMl later on.
|
||||||
|
header_spf = this.sanitizeString (header_spf);
|
||||||
|
|
||||||
|
// Split value on whitespace. We'll extract data from this.
|
||||||
var headerSPFArr = header_spf.split(' ');
|
var headerSPFArr = header_spf.split(' ');
|
||||||
|
|
||||||
|
// First element should always indicate the state.
|
||||||
|
var spfState = headerSPFArr.shift ();
|
||||||
|
|
||||||
|
// Additionally, we might have a reason description, enclosed in parenthesis.
|
||||||
|
// Example: spfState = "Pass", reason description: "(mailfrom)"
|
||||||
|
var spfStateReason = '';
|
||||||
|
if (-1 != headerSPFArr[0].search (/^\(.*\)$/)) {
|
||||||
|
spfStateReason = ' ' + headerSPFArr.shift ();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put it all together, with extra information if requested.
|
||||||
|
var copy = spfState + spfStateReason;
|
||||||
|
if (this.options.extrainfo) {
|
||||||
|
copy += '\n<br />' + headerSPFArr.join (' ') + '\n<br />';
|
||||||
|
}
|
||||||
|
copy += '\n<br />' + MailHopsUtils.spf(spfState.toLowerCase ()).trim ();
|
||||||
|
|
||||||
|
this.LOG ("SPF state and data: " + copy);
|
||||||
auth.push({
|
auth.push({
|
||||||
type: 'SPF',
|
type: 'SPF',
|
||||||
color: 'green',
|
color: 'green',
|
||||||
icon: '/images/auth/' + headerSPFArr[0] + '.png',
|
icon: '/images/auth/' + spfState.toLowerCase () + '.png',
|
||||||
copy: header_spf + '\n' + MailHopsUtils.spf(headerSPFArr[0]).trim()
|
copy: copy
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//Authentication-Results
|
//Authentication-Results
|
||||||
|
Loading…
x
Reference in New Issue
Block a user