reading crontab from db done
parent
9dd4c607d0
commit
4700ddb4a5
|
@ -1,2 +1,3 @@
|
||||||
*.swp
|
*.swp
|
||||||
node_modules
|
node_modules
|
||||||
|
crontabs/*.db
|
||||||
|
|
22
app.js
22
app.js
|
@ -1,5 +1,9 @@
|
||||||
var express = require('express');
|
var express = require('express');
|
||||||
var app = express();
|
var app = express();
|
||||||
|
var crontab = require("./crontab");
|
||||||
|
|
||||||
|
// include the routes
|
||||||
|
var routes = require("./routes").routes;
|
||||||
|
|
||||||
// set the view engine to ejs
|
// set the view engine to ejs
|
||||||
app.set('view engine', 'ejs');
|
app.set('view engine', 'ejs');
|
||||||
|
@ -8,11 +12,23 @@ app.set('view engine', 'ejs');
|
||||||
app.use(express.static(__dirname + '/public'));
|
app.use(express.static(__dirname + '/public'));
|
||||||
app.use(express.static(__dirname + '/public/css'));
|
app.use(express.static(__dirname + '/public/css'));
|
||||||
app.use(express.static(__dirname + '/public/js'));
|
app.use(express.static(__dirname + '/public/js'));
|
||||||
|
|
||||||
|
//set port
|
||||||
app.set('port', (process.env.PORT || 8000));
|
app.set('port', (process.env.PORT || 8000));
|
||||||
|
|
||||||
app.get('/', function(req, res) {
|
app.get(routes.root, function(req, res) {
|
||||||
res.render('index');
|
// get all the crontabs
|
||||||
//res.sendFile('index.htm');
|
crontab.crontabs( function(docs){
|
||||||
|
console.log(docs);
|
||||||
|
res.render('index', {
|
||||||
|
routes : routes,
|
||||||
|
crontabs : docs
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
app.get(routes.save, function(req, res) {
|
||||||
|
res.render('index');
|
||||||
})
|
})
|
||||||
|
|
||||||
app.listen(app.get('port'), function() {
|
app.listen(app.get('port'), function() {
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
//load database
|
||||||
|
var Datastore = require('nedb');
|
||||||
|
var db = new Datastore({ filename: __dirname + '/crontabs/crontab.db' });
|
||||||
|
db.loadDatabase(function (err) {
|
||||||
|
});
|
||||||
|
|
||||||
|
crontab = function(command, schedule, stopped){
|
||||||
|
var data = {};
|
||||||
|
data.command = command;
|
||||||
|
data.schedule = schedule;
|
||||||
|
data.stopped = stopped;
|
||||||
|
data.timestamp = (new Date()).toString();
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.create_new = function(command, schedule){
|
||||||
|
var tab = crontab(command, schedule, false);
|
||||||
|
db.insert(tab);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.crontabs = function(callback){
|
||||||
|
var finished = false;
|
||||||
|
db.find({}, function(err, docs){
|
||||||
|
finished = true;
|
||||||
|
callback(docs);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
This folder will have all the crontab database files
|
|
@ -8,7 +8,8 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"express": "latest",
|
"express": "latest",
|
||||||
"ejs": "latest"
|
"ejs": "latest",
|
||||||
|
"nedb": "latest"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "latest"
|
"node": "latest"
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
exports.routes = {
|
||||||
|
"root" : "/",
|
||||||
|
"downloads" : "/downloads",
|
||||||
|
"save" : "/save"
|
||||||
|
}
|
|
@ -6,38 +6,7 @@
|
||||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-default">
|
<% include navbar %>
|
||||||
<div class="container-fluid">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="#">Crontab UI</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
|
||||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li><a href="#">Import</a></li>
|
|
||||||
<li class="active"><a href="#">Downloads<span class="sr-only">(current)</span></a></li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Backups <span class="caret"></span></a>
|
|
||||||
<ul class="dropdown-menu" role="menu">
|
|
||||||
<!-- TODO -->
|
|
||||||
<li><a href="#">None</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
|
||||||
<li><a href="https://github.com/alseambusher/crontab-ui">Fork me on Github</a></li>
|
|
||||||
</ul>
|
|
||||||
</div><!-- /.navbar-collapse -->
|
|
||||||
</div><!-- /.container-fluid -->
|
|
||||||
</nav>
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Jobs</h2>
|
<h2>Jobs</h2>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
|
@ -47,26 +16,33 @@
|
||||||
<th>Last Modified</th>
|
<th>Last Modified</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<% crontabs.forEach(function(crontab){ %>
|
||||||
<td>Sample</td>
|
<% if (!crontab.stopped) { %>
|
||||||
<td> testing </td>
|
<tr>
|
||||||
<td>ascasdcas</td>
|
<td><%= crontab.command %></td>
|
||||||
<td>
|
<td><%= crontab.schedule %></td>
|
||||||
<a class="btn btn-primary"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span> Edit</a>
|
<td><%= crontab.timestamp %></td>
|
||||||
<a class="btn btn-info"><span class="glyphicon glyphicon-stop" aria-hidden="true"></span> Stop</a>
|
<td>
|
||||||
<a class="btn btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
|
<a class="btn btn-primary"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span> Edit</a>
|
||||||
</td>
|
<a class="btn btn-info"><span class="glyphicon glyphicon-stop" aria-hidden="true"></span> Stop</a>
|
||||||
</tr>
|
<a class="btn btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% } else { %>
|
||||||
|
<tr style="background:#3A6DA6;color:#fff">
|
||||||
|
<td><%= crontab.command %></td>
|
||||||
|
<td><%= crontab.schedule %></td>
|
||||||
|
<td><%= crontab.timestamp %></td>
|
||||||
|
<td>
|
||||||
|
<a class="btn btn-info"><span class="glyphicon glyphicon-play" aria-hidden="true"></span> Start</a>
|
||||||
|
<a class="btn btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% } %>
|
||||||
|
<% }); %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr style="background:#3A6DA6;color:#fff">
|
|
||||||
<td>/var/spool/cron/crontab -s -l -d</td>
|
|
||||||
<td> testing </td>
|
|
||||||
<td>ascasdcas</td>
|
|
||||||
<td>
|
|
||||||
<a class="btn btn-info"><span class="glyphicon glyphicon-play" aria-hidden="true"></span> Start</a>
|
|
||||||
<a class="btn btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
<a class="btn btn-primary"><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span> New</a>
|
<a class="btn btn-primary"><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span> New</a>
|
||||||
<a class="btn btn-info"><span class="glyphicon glyphicon-floppy-save" aria-hidden="true"></span> Backup</a>
|
<a class="btn btn-info"><span class="glyphicon glyphicon-floppy-save" aria-hidden="true"></span> Backup</a>
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<!-- Brand and toggle get grouped for better mobile display -->
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="<%= routes.root %>">Crontab UI</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="#">Import</a></li>
|
||||||
|
<li><a href="<%= routes.downloads %>">Downloads<span class="sr-only">(current)</span></a></li>
|
||||||
|
<li class="dropdown">
|
||||||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Backups <span class="caret"></span></a>
|
||||||
|
<ul class="dropdown-menu" role="menu">
|
||||||
|
<!-- TODO -->
|
||||||
|
<li><a href="#">None</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="nav navbar-nav navbar-right">
|
||||||
|
<li><a href="https://github.com/alseambusher/crontab-ui">Fork me on Github</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!-- /.navbar-collapse -->
|
||||||
|
</div><!-- /.container-fluid -->
|
||||||
|
</nav>
|
Loading…
Reference in New Issue