From b1a1c214e474308e917364ec663d46af1ff25b7a Mon Sep 17 00:00:00 2001 From: alse Date: Fri, 5 Aug 2016 11:17:28 -0700 Subject: [PATCH] version bump --- app.js | 38 +++++++++++++++++------------------ crontab.js | 56 +++++++++++++++++++++++----------------------------- package.json | 2 +- 3 files changed, 45 insertions(+), 51 deletions(-) diff --git a/app.js b/app.js index 90d9119..f8ea462 100755 --- a/app.js +++ b/app.js @@ -16,12 +16,12 @@ var routes = require("./routes").routes; // set the view engine to ejs app.set('view engine', 'ejs'); -var bodyParser = require('body-parser') +var bodyParser = require('body-parser'); app.use( bodyParser.json() ); // to support JSON-encoded bodies app.use(bodyParser.urlencoded({ // to support URL-encoded bodies extended: true })); -app.use(busboy()) // to support file uploads +app.use(busboy()); // to support file uploads // include all folders app.use(express.static(__dirname + '/public')); @@ -44,7 +44,7 @@ app.get(routes.root, function(req, res) { moment: moment }); }); -}) +}); app.post(routes.save, function(req, res) { // new job @@ -56,31 +56,31 @@ app.post(routes.save, function(req, res) { crontab.update(req.body); } res.end(); -}) +}); app.post(routes.stop, function(req, res) { crontab.status(req.body._id, true); res.end(); -}) +}); app.post(routes.start, function(req, res) { crontab.status(req.body._id, false); res.end(); -}) +}); app.post(routes.remove, function(req, res) { crontab.remove(req.body._id); res.end(); -}) +}); app.get(routes.crontab, function(req, res) { crontab.set_crontab(req.query.env_vars); res.end(); -}) +}); app.get(routes.backup, function(req, res) { crontab.backup(); res.end(); -}) +}); app.get(routes.restore, function(req, res) { // get all the crontabs @@ -92,17 +92,17 @@ app.get(routes.restore, function(req, res) { db: req.query.db }); }); -}) +}); app.get(routes.delete_backup, function(req, res) { restore.delete(req.query.db); res.end(); -}) +}); app.get(routes.restore_backup, function(req, res) { crontab.restore(req.query.db); res.end(); -}) +}); app.get(routes.export, function(req, res) { var file = __dirname + '/crontabs/crontab.db'; @@ -115,7 +115,7 @@ app.get(routes.export, function(req, res) { var filestream = fs.createReadStream(file); filestream.pipe(res); -}) +}); app.post(routes.import, function(req, res) { @@ -129,12 +129,12 @@ app.post(routes.import, function(req, res) { res.redirect(routes.root); }); }); -}) +}); app.get(routes.import_crontab, function(req, res) { - crontab.import_crontab() + crontab.import_crontab(); res.end(); -}) +}); app.get(routes.logger, function(req, res) { var fs = require("fs"); @@ -143,8 +143,8 @@ app.get(routes.logger, function(req, res) { res.sendFile(_file); else res.end("No errors logged yet"); -}) +}); app.listen(app.get('port'), function() { - console.log("Crontab UI is running at localhost:" + app.get('port')) -}) + console.log("Crontab UI is running at localhost:" + app.get('port')); +}); diff --git a/crontab.js b/crontab.js index 92e9784..cbc636d 100644 --- a/crontab.js +++ b/crontab.js @@ -5,8 +5,8 @@ db.loadDatabase(function (err) { }); var exec = require('child_process').exec; var fs = require('fs'); -var cron_parser = require("cron-parser") -var os = require("os") +var cron_parser = require("cron-parser"); +var os = require("os"); exports.log_folder = __dirname + '/crontabs/logs'; exports.env_file = __dirname + '/crontabs/env.db'; @@ -22,36 +22,36 @@ crontab = function(name, command, schedule, stopped, logging){ data.timestamp = (new Date()).toString(); data.logging = logging; return data; -} +}; exports.create_new = function(name, command, schedule, logging){ var tab = crontab(name, command, schedule, false, logging); tab.created = new Date().valueOf(); db.insert(tab); -} +}; exports.update = function(data){ db.update({_id: data._id}, crontab(data.name, data.command, data.schedule, null, data.logging)); -} +}; exports.status = function(_id, stopped){ db.update({_id: _id},{$set: {stopped: stopped}}); -} +}; exports.remove = function(_id){ db.remove({_id: _id}, {}); -} +}; exports.crontabs = function(callback){ db.find({}).sort({ created: -1 }).exec(function(err, docs){ for(var i=0; i/tmp/.log|| {if test -f /tmp/; then date >> ; cat /tmp/.log >> ; rm /tmp.log } crontab_string += tab.schedule + " { " + tab.command + " } 2> " + tmp_log +"; if test -f " + tmp_log +"; then date >> " + log_file + "; cat " + tmp_log + " >> " + log_file + "; rm " + tmp_log + "; fi \n"; } @@ -79,10 +79,10 @@ exports.set_crontab = function(env_vars){ }); }); -} +}; exports.get_backup_names = function(){ - var backups = [] + var backups = []; fs.readdirSync(__dirname + '/crontabs').forEach(function(file){ // file name begins with backup if(file.indexOf("backup") == 0){ @@ -92,10 +92,10 @@ exports.get_backup_names = function(){ // Sort by date. Newest on top for(var i=0; i Tj){ var temp = backups[i]; @@ -106,50 +106,48 @@ exports.get_backup_names = function(){ } return backups; -} +}; exports.backup = function(){ //TODO check if it failed fs.createReadStream( __dirname + '/crontabs/crontab.db').pipe(fs.createWriteStream( __dirname + '/crontabs/backup ' + (new Date()).toString().replace("+", " ") + '.db')); -} +}; exports.restore = function(db_name){ fs.createReadStream( __dirname + '/crontabs/' + db_name).pipe(fs.createWriteStream( __dirname + '/crontabs/crontab.db')); db.loadDatabase(); // reload the database -} +}; exports.reload_db= function(){ db.loadDatabase(); -} +}; exports.get_env = function(){ if (fs.existsSync(exports.env_file)) { return fs.readFileSync(exports.env_file , 'utf8').replace("\n", "\n"); } - return "" -} + return ""; +}; -// TODO exports.import_crontab = function(){ exec("crontab -l", function(error, stdout, stderr){ var lines = stdout.split("\n"); - var namePrefix = new Date().getTime(); lines.forEach(function(line, index){ var regex = /^((\@[a-zA-Z]+\s)|(([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)\s))/; var command = line.replace(regex, '').trim(); var schedule = line.replace(command, '').trim(); - + if(command && schedule){ var name = namePrefix + '_' + index; - db.crontabs.findOne({ command: command, schedule: schedule }, function(err, doc) { + db.findOne({ command: command, schedule: schedule }, function(err, doc) { if(err) { throw err; } if(!doc){ - exports.create_new(name, command, null, null, schedule, null); + exports.create_new(name, command, schedule, null); } else{ doc.command = command; @@ -157,11 +155,7 @@ exports.import_crontab = function(){ exports.update(doc); } }); - - } - - }) - //console.log(stdout); + }); }); -} +}; diff --git a/package.json b/package.json index bcc8b7b..8548dba 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "crontab-ui", - "version": "0.1.7", + "version": "0.1.8", "description": "Easy and safe way to manage your crontab file", "main": "index.js", "scripts": {