Merge branch 'hasanbasri1993-master' into master

pull/181/head
alse 2021-10-17 17:56:50 -07:00
commit 6cf4ce4eb8
5 changed files with 15 additions and 5 deletions

View File

@ -1,5 +1,5 @@
# docker run -d -p 8000:8000 alseambusher/crontab-ui # docker run -d -p 8000:8000 alseambusher/crontab-ui
FROM alpine:3.10 FROM alpine:3.13.5
ENV CRON_PATH /etc/crontabs ENV CRON_PATH /etc/crontabs

View File

@ -1,4 +1,4 @@
VER=0.3.13 VER=0.3.15
release: release:
sed -i '' "s/version\": \".*/version\": \"$(VER)\",/" package.json sed -i '' "s/version\": \".*/version\": \"$(VER)\",/" package.json

View File

@ -11,7 +11,6 @@ exports.crontab_db_file = path.join(exports.db_folder, 'crontab.db');
var db = new Datastore({ filename: exports.crontab_db_file}); var db = new Datastore({ filename: exports.crontab_db_file});
var cronPath = "/tmp"; var cronPath = "/tmp";
if(process.env.CRON_PATH !== undefined) { if(process.env.CRON_PATH !== undefined) {
console.log(`Path to crond files set using env variables ${process.env.CRON_PATH}`); console.log(`Path to crond files set using env variables ${process.env.CRON_PATH}`);
cronPath = process.env.CRON_PATH; cronPath = process.env.CRON_PATH;
@ -24,6 +23,8 @@ db.loadDatabase(function (err) {
var exec = require('child_process').exec; var exec = require('child_process').exec;
var fs = require('fs'); var fs = require('fs');
var cron_parser = require("cron-parser"); var cron_parser = require("cron-parser");
var cronstrue = require('cronstrue/i18n');
var humanCronLocate = process.env.HUMANCRON ?? "en"
crontab = function(name, command, schedule, stopped, logging, mailing){ crontab = function(name, command, schedule, stopped, logging, mailing){
@ -71,6 +72,7 @@ exports.crontabs = function(callback){
docs[i].next = "Next Reboot"; docs[i].next = "Next Reboot";
else else
try { try {
docs[i].human = cronstrue.toString(docs[i].schedule, { locale: humanCronLocate });
docs[i].next = cron_parser.parseExpression(docs[i].schedule).next().toString(); docs[i].next = cron_parser.parseExpression(docs[i].schedule).next().toString();
} catch(err) { } catch(err) {
console.error(err); console.error(err);

View File

@ -1,6 +1,6 @@
{ {
"name": "crontab-ui", "name": "crontab-ui",
"version": "0.3.14", "version": "0.3.15",
"description": "Easy and safe way to manage your crontab file", "description": "Easy and safe way to manage your crontab file",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -11,6 +11,7 @@
"body-parser": "latest", "body-parser": "latest",
"connect-busboy": "latest", "connect-busboy": "latest",
"cron-parser": "latest", "cron-parser": "latest",
"cronstrue": "latest",
"ejs": "latest", "ejs": "latest",
"express": "latest", "express": "latest",
"express-basic-auth": "^1.2.0", "express-basic-auth": "^1.2.0",

View File

@ -82,7 +82,14 @@
<% } %> <% } %>
</td> </td>
<td><%= crontab.command %></td> <td><%= crontab.command %></td>
<td><span style="cursor:pointer" data-toggle="tooltip" data-placement="bottom" title="<%= crontab.next %>"><%= crontab.schedule %></span></td> <td>
<span style="cursor:pointer" data-toggle="tooltip" data-placement="bottom" title="<%= crontab.next %>">
<%= crontab.schedule %>
</span>
<a class="btn" data-toggle="tooltip" data-placement="right" title="<%= crontab.human %>">
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
</a>
</td>
<td style="width:20%" title="<%= crontab.timestamp %>"><%= moment(new Date(crontab.timestamp)).fromNow() %></td> <td style="width:20%" title="<%= crontab.timestamp %>"><%= moment(new Date(crontab.timestamp)).fromNow() %></td>
<td> <td>