diff --git a/app.js b/app.js
index 24cdc89..9ff5729 100755
--- a/app.js
+++ b/app.js
@@ -11,6 +11,10 @@ var mime = require('mime-types');
var fs = require('fs');
var busboy = require('connect-busboy'); // for file upload
+// base url
+var base_url = require("./routes").base_url
+app.locals.baseURL = base_url
+
// basic auth
var BASIC_AUTH_USER = process.env.BASIC_AUTH_USER;
var BASIC_AUTH_PWD = process.env.BASIC_AUTH_PWD;
@@ -43,10 +47,10 @@ app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
app.use(busboy()); // to support file uploads
// include all folders
-app.use(express.static(__dirname + '/public'));
-app.use(express.static(__dirname + '/public/css'));
-app.use(express.static(__dirname + '/public/js'));
-app.use(express.static(__dirname + '/config'));
+app.use(base_url, express.static(__dirname + '/public'));
+app.use(base_url, express.static(__dirname + '/public/css'));
+app.use(base_url, express.static(__dirname + '/public/js'));
+app.use(base_url, express.static(__dirname + '/config'));
app.set('views', __dirname + '/views');
// set host to 127.0.0.1 or the value set by environment var HOST
@@ -273,5 +277,5 @@ app.listen(app.get('port'), app.get('host'), function() {
crontab.reload_db();
}
- console.log("Crontab UI is running at http://" + app.get('host') + ":" + app.get('port'));
+ console.log("Crontab UI is running at http://" + app.get('host') + ":" + app.get('port') + base_url);
});
diff --git a/routes.js b/routes.js
index 2fb393f..44f524c 100644
--- a/routes.js
+++ b/routes.js
@@ -1,10 +1,16 @@
-exports.routes = {
- "root" : "/",
- "save" : "/save",
- "run" : "/runjob",
- "crontab" : "/crontab",
- "stop" : "/stop",
- "start" : "/start",
+// base url
+var base_url = process.env.BASE_URL ?? '';
+base_url = base_url.replace(/\/+$/, "").trim();
+
+exports.base_url = base_url;
+
+var routes = {
+ "root": "/",
+ "save": "/save",
+ "run": "/runjob",
+ "crontab": "/crontab",
+ "stop": "/stop",
+ "start": "/start",
"remove": "/remove",
"backup": "/backup",
"restore": "/restore",
@@ -17,5 +23,7 @@ exports.routes = {
"stdout": "/stdout",
};
-exports.relative = Object.keys(exports.routes).reduce((p, c) => ({...p, [c]: exports.routes[c].replace(/^\//, '')}), {});
-exports.relative["root"] = ".";
\ No newline at end of file
+exports.routes = Object.keys(routes).reduce((p, c) => ({...p, [c]: base_url + routes[c]}), {});
+
+exports.relative = Object.keys(routes).reduce((p, c) => ({...p, [c]: routes[c].replace(/^\//, '')}), {});
+exports.relative["root"] = base_url;
diff --git a/views/index.ejs b/views/index.ejs
index d5b28a0..6eedf8a 100644
--- a/views/index.ejs
+++ b/views/index.ejs
@@ -6,7 +6,7 @@
-
+
-
+