adding logging functionality to locate some bugs preventing cron usage.
This commit is contained in:
parent
1f589df24c
commit
90d8b5901b
1 changed files with 40 additions and 3 deletions
|
@ -13,18 +13,49 @@
|
|||
var fs = require('fs');
|
||||
var execSync = require('child_process').execSync;
|
||||
|
||||
// Logging boilerplate functionality
|
||||
var logger = exports;
|
||||
logger.debugLevel = 'warn';
|
||||
logger.logFile = '/var/log/spam-scripts/spam-summary.log';
|
||||
logger.log = function (level, message) {
|
||||
var levels = ['error', 'warn', 'info'];
|
||||
if (levels.indexOf(level) <= levels.indexOf(logger.debugLevel)) {
|
||||
if (typeof message !== 'string') {
|
||||
message = JSON.stringify(message);
|
||||
};
|
||||
if (logger.logFile) {
|
||||
fs.appendFile(logger.logFile,
|
||||
new Date().toISOString() +
|
||||
' ' +
|
||||
level +
|
||||
': ' +
|
||||
message +
|
||||
'\n',
|
||||
function (err) {
|
||||
if (err) console.log(err);
|
||||
});
|
||||
}
|
||||
else {
|
||||
console.log(level+': '+message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Constant definition
|
||||
var spamFolder = "/srv/mail/andrew@amdavidson.com/maildir/.Spam/cur/";
|
||||
var sendTo = "andrew@amdavidson.com";
|
||||
|
||||
// Variable definition
|
||||
var emails = new Array();
|
||||
var summary = "Subject: Spam Summary " + new Date().toISOString() + "\n";
|
||||
var summary = "Subject: Spam Summary " + new Date().toISOString() + "\n\n";
|
||||
|
||||
logger.log('warn', 'Starting spam-summary.js');
|
||||
|
||||
// Read all emails in specified directory, parse for
|
||||
// date, from, return-path, subject, and spam score.
|
||||
filenames = fs.readdirSync(spamFolder)
|
||||
logger.log('info', 'Reading spam folder.');
|
||||
filenames = fs.readdirSync(spamFolder);
|
||||
logger.log('info', 'Starting email parse');
|
||||
filenames.forEach(function(filename) {
|
||||
data = fs.readFileSync(spamFolder + filename);
|
||||
email = {};
|
||||
|
@ -37,17 +68,20 @@ filenames.forEach(function(filename) {
|
|||
email.score = /score=([\-\+]?[0-9]*(\.[0-9]+)?)/.exec(
|
||||
/X-Spam-Status: (.+)/.exec(data)[1])[1];
|
||||
} catch (e) {
|
||||
logger.log('warn', 'Email score could not be extracted.');
|
||||
email.score = "0.0";
|
||||
}
|
||||
emails.push(email);
|
||||
});
|
||||
|
||||
// Sort by spam socre
|
||||
logger.log('info', 'Sorting spam');
|
||||
emails.sort(function (a, b) {
|
||||
return parseFloat(a.score) - parseFloat(b.score)
|
||||
});
|
||||
|
||||
// Construct a summary
|
||||
logger.log('info', 'Building email summary');
|
||||
for (var i=0; i < 25; i++) {
|
||||
summary += i + ": " + emails[i].date + "\n\t" + emails[i].from + "\n\t" +
|
||||
emails[i].subject + "\n\tScore: " + emails[i].score + "\n\n";
|
||||
|
@ -55,4 +89,7 @@ for (var i=0; i < 25; i++) {
|
|||
summary += "\n\n";
|
||||
|
||||
// Send summary via email
|
||||
var child = execSync("sendmail " + sendTo, {input: summary});
|
||||
logger.log('info', 'Sending email with summary');
|
||||
var child = execSync("/usr/bin/env sendmail " + sendTo, {input: summary});
|
||||
|
||||
logger.log('warn', 'spam-summary.js completed.');
|
||||
|
|
Loading…
Reference in a new issue