You've already forked nginx-proxy-manager
							
							
				mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-04 04:11:42 +03:00 
			
		
		
		
	* 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();
 | 
						|
    }
 | 
						|
};
 |