Skip to content

Commit

Permalink
Merge pull request #10 from friedPotat0/add-mailscanner-languages
Browse files Browse the repository at this point in the history
Add mailscanner languages
  • Loading branch information
friedPotat0 authored Nov 30, 2020
2 parents 40eaa13 + 49d6beb commit b605f28
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 23 deletions.
38 changes: 21 additions & 17 deletions background.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,29 @@

const DEFAULT_SCORE_LOWER_BOUNDS = -2
const DEFAULT_SCORE_UPPER_BOUNDS = 2
const SCORE_REGEX = {
spamdResult: /.*x-spamd-result: .*\[([-+]?[0-9]+\.?[0-9]*) \/ [-+]?[0-9]+\.?[0-9]*\];.*/is,
spamScore: /.*x-spam-score: ([-+]?[0-9]+\.?[0-9]*).*/is,
spamStatus: /.*x-spam-status: .*score=([-+]?[0-9]+\.?[0-9]*) .*/is,
mailscannerSpamcheck: /.*mailscanner-spamcheck: .*(?:score|punteggio|puntuació|sgor\/score|skore|Wertung|bedømmelse|puntaje|pont|escore|resultat|skore)=([-+]?[0-9]+\.?[0-9]*),.*/is
}

var init = async () => {
browser.SpamScores.addWindowListener('none')
browser.messageDisplay.onMessageDisplayed.addListener(async (tab, message) => {
let rawMessage = await browser.messages.getRaw(message.id)
let score = getScore(rawMessage)
const rawMessage = await browser.messages.getRaw(message.id)
const rawHeader = rawMessage.split('\r\n\r\n')[0]
let score = getScore(rawHeader)
if (score === null) {
browser.messageDisplayAction.disable(tab.id)
} else {
browser.messageDisplayAction.enable(tab.id)
browser.messageDisplayAction.setTitle({ tabId: tab.id, title: 'Spam Score: ' + score })
browser.messageDisplayAction.setIcon({ path: await getImageSrc(score) })
}
if (rawMessage.toLowerCase().indexOf('mailscanner-spamscore') !== -1) {
let header = rawMessage.replace(/.*(x-.*?mailscanner-spamcheck):.*/gis, '$1').toLowerCase()

if (SCORE_REGEX.mailscannerSpamcheck.test(rawHeader)) {
let header = rawHeader.replace(/.*(x-.*?mailscanner-spamcheck):.*/is, '$1').toLowerCase()
let storage = await browser.storage.local.get(['customMailscannerHeaders'])
if (
storage &&
Expand Down Expand Up @@ -60,22 +68,18 @@ var init = async () => {
}
init()

function getScore(raw) {
let match = raw.match(/x-spamd-result: .*/gi)
if (match && match.length > 0) {
return match[0].replace(/^x-spamd-result: .*\[(.*) \/ .*\];.*$/gi, '$1')
function getScore(rawHeader) {
if (SCORE_REGEX.spamdResult.test(rawHeader)) {
return rawHeader.replace(SCORE_REGEX.spamdResult, '$1')
}
match = raw.match(/x-spam-score: .*/gi)
if (match && match.length > 0) {
return match[0].replace(/^x-spam-score: (.*)$/gi, '$1')
if (SCORE_REGEX.spamScore.test(rawHeader)) {
return rawHeader.replace(SCORE_REGEX.spamScore, '$1')
}
match = raw.match(/x-spam-status: .*/gi)
if (match && match.length > 0) {
return match[0].replace(/^x-spam-status: .*score=(.*?) .*$/gi, '$1')
if (SCORE_REGEX.spamStatus.test(rawHeader)) {
return rawHeader.replace(SCORE_REGEX.spamStatus, '$1')
}
match = raw.match(/x-.*?mailscanner-spamcheck: .*/gi)
if (match && match.length > 0) {
return match[0].replace(/^x-.*?mailscanner-spamcheck: .*score=(.*),$/gi, '$1')
if (SCORE_REGEX.mailscannerSpamcheck.test(rawHeader)) {
return rawHeader.replace(SCORE_REGEX.mailscannerSpamcheck, '$1')
}
return null
}
Expand Down
24 changes: 18 additions & 6 deletions custom_score_column.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ var { Services } = ChromeUtils.import('resource://gre/modules/Services.jsm')

const DEFAULT_SCORE_LOWER_BOUNDS = -2.0
const DEFAULT_SCORE_UPPER_BOUNDS = 2.0
const SCORE_REGEX = {
spamdResult: /.*\[([-+]?[0-9]+\.?[0-9]*) \/ [-+]?[0-9]+\.?[0-9]*\];.*/is,
spamScore: /([-+]?[0-9]+\.?[0-9]*).*/is,
spamStatus: /.*score=([-+]?[0-9]+\.?[0-9]*) .*/is,
mailscannerSpamcheck: /.*(?:score|punteggio|puntuació|sgor\/score|skore|Wertung|bedømmelse|puntaje|pont|escore|resultat|skore)=([-+]?[0-9]+\.?[0-9]*),.*/is
}

class ColumnHandler {
init(win, params) {
Expand All @@ -24,20 +30,26 @@ class ColumnHandler {
if (score < this.params.lowerScoreBounds) return extension.rootURI.resolve('./images/score_negative.png')
}
getScore(hdr) {
let score =
hdr.getStringProperty('x-spamd-result').replace(/^default.*\[(.*) \/ .*\];.*$/gi, '$1') ||
hdr.getStringProperty('x-spam-score') ||
hdr.getStringProperty('x-spam-status').replace(/.*score=(.*?) .*$/gi, '$1')
let score = null
if (SCORE_REGEX.spamdResult.test(hdr.getStringProperty('x-spamd-result'))) {
score = hdr.getStringProperty('x-spamd-result').replace(SCORE_REGEX.spamdResult, '$1')
}
if (!score && SCORE_REGEX.spamScore.test(hdr.getStringProperty('x-spam-score'))) {
score = hdr.getStringProperty('x-spam-score').replace(SCORE_REGEX.spamScore, '$1')
}
if (!score && SCORE_REGEX.spamStatus.test(hdr.getStringProperty('x-spam-status'))) {
score = hdr.getStringProperty('x-spam-status').replace(SCORE_REGEX.spamStatus, '$1')
}
if (!score && this.params.customMailscannerHeaders) {
for (let header of this.params.customMailscannerHeaders) {
let headerScore = hdr.getStringProperty(header).replace(/.*?score=(.*?),.*$/gi, '$1')
let headerScore = hdr.getStringProperty(header).replace(SCORE_REGEX.mailscannerSpamcheck, '$1')
if (!isNaN(parseFloat(headerScore))) {
score = headerScore
break
}
}
}
if (score) return parseFloat(score)
if (score && !isNaN(parseFloat(score))) return parseFloat(score)
return null
}
getCellText(row, col) {
Expand Down

0 comments on commit b605f28

Please sign in to comment.