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
	
	 Suresh Alse
						Suresh Alse