bb0f4bfa62
* Fix wrapping when too many hosts are shown (#207) * Update npm packages, fixes CVE-2019-10757 * Revert some breaking packages * Major overhaul - Docker buildx support in CI - Cypress API Testing in CI - Restructured folder layout (insert clean face meme) - Added Swagger documentation and validate API against that (to be completed) - Use common base image for all supported archs, which includes updated nginx with ipv6 support - Updated certbot and changes required for it - Large amount of Hosts names will wrap in UI - Updated packages for frontend - Version bump 2.1.0 * Updated documentation * Fix JWT expire time going crazy. Now set to 1day * Backend JS formatting rules * Remove v1 importer, I doubt anyone is using v1 anymore * Added backend formatting rules and enforce them in Jenkins builds * Fix CI, doesn't need a tty * Thanks bcrypt. Why can't you just be normal. * Cleanup after syntax check Co-authored-by: Marcelo Castagna <margaale@users.noreply.github.com>
435 lines
12 KiB
JavaScript
435 lines
12 KiB
JavaScript
const Backbone = require('backbone');
|
|
const Cache = require('./cache');
|
|
const Tokens = require('./tokens');
|
|
|
|
module.exports = {
|
|
|
|
/**
|
|
* @param {String} route
|
|
* @param {Object} [options]
|
|
* @returns {Boolean}
|
|
*/
|
|
navigate: function (route, options) {
|
|
options = options || {};
|
|
Backbone.history.navigate(route.toString(), options);
|
|
return true;
|
|
},
|
|
|
|
/**
|
|
* Login
|
|
*/
|
|
showLogin: function () {
|
|
window.location = '/login';
|
|
},
|
|
|
|
/**
|
|
* Users
|
|
*/
|
|
showUsers: function () {
|
|
let controller = this;
|
|
if (Cache.User.isAdmin()) {
|
|
require(['./main', './users/main'], (App, View) => {
|
|
controller.navigate('/users');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
} else {
|
|
this.showDashboard();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* User Form
|
|
*
|
|
* @param [model]
|
|
*/
|
|
showUserForm: function (model) {
|
|
if (Cache.User.isAdmin()) {
|
|
require(['./main', './user/form'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* User Permissions Form
|
|
*
|
|
* @param model
|
|
*/
|
|
showUserPermissions: function (model) {
|
|
if (Cache.User.isAdmin()) {
|
|
require(['./main', './user/permissions'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* User Password Form
|
|
*
|
|
* @param model
|
|
*/
|
|
showUserPasswordForm: function (model) {
|
|
if (Cache.User.isAdmin() || model.get('id') === Cache.User.get('id')) {
|
|
require(['./main', './user/password'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* User Delete Confirm
|
|
*
|
|
* @param model
|
|
*/
|
|
showUserDeleteConfirm: function (model) {
|
|
if (Cache.User.isAdmin() && model.get('id') !== Cache.User.get('id')) {
|
|
require(['./main', './user/delete'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Dashboard
|
|
*/
|
|
showDashboard: function () {
|
|
let controller = this;
|
|
|
|
require(['./main', './dashboard/main'], (App, View) => {
|
|
controller.navigate('/');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Nginx Proxy Hosts
|
|
*/
|
|
showNginxProxy: function () {
|
|
if (Cache.User.isAdmin() || Cache.User.canView('proxy_hosts')) {
|
|
let controller = this;
|
|
|
|
require(['./main', './nginx/proxy/main'], (App, View) => {
|
|
controller.navigate('/nginx/proxy');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Nginx Proxy Host Form
|
|
*
|
|
* @param [model]
|
|
*/
|
|
showNginxProxyForm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('proxy_hosts')) {
|
|
require(['./main', './nginx/proxy/form'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Proxy Host Delete Confirm
|
|
*
|
|
* @param model
|
|
*/
|
|
showNginxProxyDeleteConfirm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('proxy_hosts')) {
|
|
require(['./main', './nginx/proxy/delete'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Nginx Redirection Hosts
|
|
*/
|
|
showNginxRedirection: function () {
|
|
if (Cache.User.isAdmin() || Cache.User.canView('redirection_hosts')) {
|
|
let controller = this;
|
|
|
|
require(['./main', './nginx/redirection/main'], (App, View) => {
|
|
controller.navigate('/nginx/redirection');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Nginx Redirection Host Form
|
|
*
|
|
* @param [model]
|
|
*/
|
|
showNginxRedirectionForm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('redirection_hosts')) {
|
|
require(['./main', './nginx/redirection/form'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Proxy Redirection Delete Confirm
|
|
*
|
|
* @param model
|
|
*/
|
|
showNginxRedirectionDeleteConfirm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('redirection_hosts')) {
|
|
require(['./main', './nginx/redirection/delete'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Nginx Stream Hosts
|
|
*/
|
|
showNginxStream: function () {
|
|
if (Cache.User.isAdmin() || Cache.User.canView('streams')) {
|
|
let controller = this;
|
|
|
|
require(['./main', './nginx/stream/main'], (App, View) => {
|
|
controller.navigate('/nginx/stream');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Stream Form
|
|
*
|
|
* @param [model]
|
|
*/
|
|
showNginxStreamForm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('streams')) {
|
|
require(['./main', './nginx/stream/form'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Stream Delete Confirm
|
|
*
|
|
* @param model
|
|
*/
|
|
showNginxStreamDeleteConfirm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('streams')) {
|
|
require(['./main', './nginx/stream/delete'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Nginx Dead Hosts
|
|
*/
|
|
showNginxDead: function () {
|
|
if (Cache.User.isAdmin() || Cache.User.canView('dead_hosts')) {
|
|
let controller = this;
|
|
|
|
require(['./main', './nginx/dead/main'], (App, View) => {
|
|
controller.navigate('/nginx/404');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Dead Host Form
|
|
*
|
|
* @param [model]
|
|
*/
|
|
showNginxDeadForm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('dead_hosts')) {
|
|
require(['./main', './nginx/dead/form'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Dead Host Delete Confirm
|
|
*
|
|
* @param model
|
|
*/
|
|
showNginxDeadDeleteConfirm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('dead_hosts')) {
|
|
require(['./main', './nginx/dead/delete'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Help Dialog
|
|
*
|
|
* @param {String} title
|
|
* @param {String} content
|
|
*/
|
|
showHelp: function (title, content) {
|
|
require(['./main', './help/main'], function (App, View) {
|
|
App.UI.showModalDialog(new View({title: title, content: content}));
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Nginx Access
|
|
*/
|
|
showNginxAccess: function () {
|
|
if (Cache.User.isAdmin() || Cache.User.canView('access_lists')) {
|
|
let controller = this;
|
|
|
|
require(['./main', './nginx/access/main'], (App, View) => {
|
|
controller.navigate('/nginx/access');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Nginx Access List Form
|
|
*
|
|
* @param [model]
|
|
*/
|
|
showNginxAccessListForm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('access_lists')) {
|
|
require(['./main', './nginx/access/form'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Access List Delete Confirm
|
|
*
|
|
* @param model
|
|
*/
|
|
showNginxAccessListDeleteConfirm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('access_lists')) {
|
|
require(['./main', './nginx/access/delete'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Nginx Certificates
|
|
*/
|
|
showNginxCertificates: function () {
|
|
if (Cache.User.isAdmin() || Cache.User.canView('certificates')) {
|
|
let controller = this;
|
|
|
|
require(['./main', './nginx/certificates/main'], (App, View) => {
|
|
controller.navigate('/nginx/certificates');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Nginx Certificate Form
|
|
*
|
|
* @param [model]
|
|
*/
|
|
showNginxCertificateForm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('certificates')) {
|
|
require(['./main', './nginx/certificates/form'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Certificate Renew
|
|
*
|
|
* @param model
|
|
*/
|
|
showNginxCertificateRenew: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('certificates')) {
|
|
require(['./main', './nginx/certificates/renew'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Certificate Delete Confirm
|
|
*
|
|
* @param model
|
|
*/
|
|
showNginxCertificateDeleteConfirm: function (model) {
|
|
if (Cache.User.isAdmin() || Cache.User.canManage('certificates')) {
|
|
require(['./main', './nginx/certificates/delete'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Audit Log
|
|
*/
|
|
showAuditLog: function () {
|
|
let controller = this;
|
|
if (Cache.User.isAdmin()) {
|
|
require(['./main', './audit-log/main'], (App, View) => {
|
|
controller.navigate('/audit-log');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
} else {
|
|
this.showDashboard();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Audit Log Metadata
|
|
*
|
|
* @param model
|
|
*/
|
|
showAuditMeta: function (model) {
|
|
if (Cache.User.isAdmin()) {
|
|
require(['./main', './audit-log/meta'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Settings
|
|
*/
|
|
showSettings: function () {
|
|
let controller = this;
|
|
if (Cache.User.isAdmin()) {
|
|
require(['./main', './settings/main'], (App, View) => {
|
|
controller.navigate('/settings');
|
|
App.UI.showAppContent(new View());
|
|
});
|
|
} else {
|
|
this.showDashboard();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Settings Item Form
|
|
*
|
|
* @param model
|
|
*/
|
|
showSettingForm: function (model) {
|
|
if (Cache.User.isAdmin()) {
|
|
if (model.get('id') === 'default-site') {
|
|
require(['./main', './settings/default-site/main'], function (App, View) {
|
|
App.UI.showModalDialog(new View({model: model}));
|
|
});
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Logout
|
|
*/
|
|
logout: function () {
|
|
Tokens.dropTopToken();
|
|
this.showLogin();
|
|
}
|
|
};
|