diff --git a/app.js b/app.js index aecd8db..3aad94f 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 @@ -271,5 +275,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 804b4ba..907d70b 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -6,7 +6,7 @@ - + - +