reading crontab from db done
parent
9dd4c607d0
commit
4700ddb4a5
|
@ -1,2 +1,3 @@
|
|||
*.swp
|
||||
node_modules
|
||||
crontabs/*.db
|
||||
|
|
22
app.js
22
app.js
|
@ -1,5 +1,9 @@
|
|||
var express = require('express');
|
||||
var app = express();
|
||||
var crontab = require("./crontab");
|
||||
|
||||
// include the routes
|
||||
var routes = require("./routes").routes;
|
||||
|
||||
// set the view engine to 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/css'));
|
||||
app.use(express.static(__dirname + '/public/js'));
|
||||
|
||||
//set port
|
||||
app.set('port', (process.env.PORT || 8000));
|
||||
|
||||
app.get('/', function(req, res) {
|
||||
res.render('index');
|
||||
//res.sendFile('index.htm');
|
||||
app.get(routes.root, function(req, res) {
|
||||
// get all the crontabs
|
||||
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() {
|
||||
|
|
|
@ -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": {
|
||||
"express": "latest",
|
||||
"ejs": "latest"
|
||||
"ejs": "latest",
|
||||
"nedb": "latest"
|
||||
},
|
||||
"engines": {
|
||||
"node": "latest"
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
exports.routes = {
|
||||
"root" : "/",
|
||||
"downloads" : "/downloads",
|
||||
"save" : "/save"
|
||||
}
|
|
@ -6,38 +6,7 @@
|
|||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
</head>
|
||||
<body>
|
||||
<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="#">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>
|
||||
<% include navbar %>
|
||||
<div class="container">
|
||||
<h2>Jobs</h2>
|
||||
<table class="table">
|
||||
|
@ -47,26 +16,33 @@
|
|||
<th>Last Modified</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Sample</td>
|
||||
<td> testing </td>
|
||||
<td>ascasdcas</td>
|
||||
<td>
|
||||
<a class="btn btn-primary"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span> Edit</a>
|
||||
<a class="btn btn-info"><span class="glyphicon glyphicon-stop" aria-hidden="true"></span> Stop</a>
|
||||
<a class="btn btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
|
||||
</td>
|
||||
</tr>
|
||||
<% crontabs.forEach(function(crontab){ %>
|
||||
<% if (!crontab.stopped) { %>
|
||||
<tr>
|
||||
<td><%= crontab.command %></td>
|
||||
<td><%= crontab.schedule %></td>
|
||||
<td><%= crontab.timestamp %></td>
|
||||
<td>
|
||||
<a class="btn btn-primary"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span> Edit</a>
|
||||
<a class="btn btn-info"><span class="glyphicon glyphicon-stop" aria-hidden="true"></span> Stop</a>
|
||||
<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>
|
||||
<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>
|
||||
|
|
|
@ -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