Initial work for disabling hosts

This commit is contained in:
Jamie Curnow
2019-01-03 20:27:43 +10:00
parent 48f2bb4cd8
commit 981d5a199f
11 changed files with 368 additions and 31 deletions

View File

@@ -7,7 +7,7 @@ const Tokens = require('./tokens');
/**
* @param {String} message
* @param {*} debug
* @param {Integer} code
* @param {Number} code
* @constructor
*/
const ApiError = function (message, debug, code) {
@@ -129,7 +129,7 @@ function getAllObjects (path, expand, query) {
}
/**
* @param {String} path
* @param {String} path
* @param {FormData} form_data
* @returns {Promise}
*/
@@ -241,7 +241,7 @@ module.exports = {
/**
* @param {Object} data
* @param {Integer} data.id
* @param {Number} data.id
* @returns {Promise}
*/
update: function (data) {
@@ -251,7 +251,7 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @returns {Promise}
*/
delete: function (id) {
@@ -260,7 +260,7 @@ module.exports = {
/**
*
* @param {Integer} id
* @param {Number} id
* @param {Object} auth
* @returns {Promise}
*/
@@ -269,7 +269,7 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @returns {Promise}
*/
loginAs: function (id) {
@@ -278,7 +278,7 @@ module.exports = {
/**
*
* @param {Integer} id
* @param {Number} id
* @param {Object} perms
* @returns {Promise}
*/
@@ -308,7 +308,7 @@ module.exports = {
/**
* @param {Object} data
* @param {Integer} data.id
* @param {Number} data.id
* @returns {Promise}
*/
update: function (data) {
@@ -318,11 +318,35 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @returns {Promise}
*/
delete: function (id) {
return fetch('delete', 'nginx/proxy-hosts/' + id);
},
/**
* @param {Number} id
* @returns {Promise}
*/
get: function (id) {
return fetch('get', 'nginx/proxy-hosts/' + id);
},
/**
* @param {Number} id
* @returns {Promise}
*/
enable: function (id) {
return fetch('post', 'nginx/proxy-hosts/' + id + '/enable');
},
/**
* @param {Number} id
* @returns {Promise}
*/
disable: function (id) {
return fetch('post', 'nginx/proxy-hosts/' + id + '/disable');
}
},
@@ -345,7 +369,7 @@ module.exports = {
/**
* @param {Object} data
* @param {Integer} data.id
* @param {Number} data.id
* @returns {Promise}
*/
update: function (data) {
@@ -355,7 +379,7 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @returns {Promise}
*/
delete: function (id) {
@@ -363,12 +387,28 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @param {FormData} form_data
* @params {Promise}
*/
setCerts: function (id, form_data) {
return FileUpload('nginx/redirection-hosts/' + id + '/certificates', form_data);
},
/**
* @param {Number} id
* @returns {Promise}
*/
enable: function (id) {
return fetch('post', 'nginx/redirection-hosts/' + id + '/enable');
},
/**
* @param {Number} id
* @returns {Promise}
*/
disable: function (id) {
return fetch('post', 'nginx/redirection-hosts/' + id + '/disable');
}
},
@@ -391,7 +431,7 @@ module.exports = {
/**
* @param {Object} data
* @param {Integer} data.id
* @param {Number} data.id
* @returns {Promise}
*/
update: function (data) {
@@ -401,11 +441,27 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @returns {Promise}
*/
delete: function (id) {
return fetch('delete', 'nginx/streams/' + id);
},
/**
* @param {Number} id
* @returns {Promise}
*/
enable: function (id) {
return fetch('post', 'nginx/streams/' + id + '/enable');
},
/**
* @param {Number} id
* @returns {Promise}
*/
disable: function (id) {
return fetch('post', 'nginx/streams/' + id + '/disable');
}
},
@@ -428,7 +484,7 @@ module.exports = {
/**
* @param {Object} data
* @param {Integer} data.id
* @param {Number} data.id
* @returns {Promise}
*/
update: function (data) {
@@ -438,7 +494,7 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @returns {Promise}
*/
delete: function (id) {
@@ -446,12 +502,28 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @param {FormData} form_data
* @params {Promise}
*/
setCerts: function (id, form_data) {
return FileUpload('nginx/dead-hosts/' + id + '/certificates', form_data);
},
/**
* @param {Number} id
* @returns {Promise}
*/
enable: function (id) {
return fetch('post', 'nginx/dead-hosts/' + id + '/enable');
},
/**
* @param {Number} id
* @returns {Promise}
*/
disable: function (id) {
return fetch('post', 'nginx/dead-hosts/' + id + '/disable');
}
},
@@ -474,7 +546,7 @@ module.exports = {
/**
* @param {Object} data
* @param {Integer} data.id
* @param {Number} data.id
* @returns {Promise}
*/
update: function (data) {
@@ -484,7 +556,7 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @returns {Promise}
*/
delete: function (id) {
@@ -511,7 +583,7 @@ module.exports = {
/**
* @param {Object} data
* @param {Integer} data.id
* @param {Number} data.id
* @returns {Promise}
*/
update: function (data) {
@@ -521,7 +593,7 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @returns {Promise}
*/
delete: function (id) {
@@ -529,7 +601,7 @@ module.exports = {
},
/**
* @param {Integer} id
* @param {Number} id
* @param {FormData} form_data
* @params {Promise}
*/

View File

@@ -34,7 +34,9 @@
<td>
<%
var o = isOnline();
if (o === true) { %>
if (!enabled) { %>
<span class="status-icon bg-warning"></span> <%- i18n('str', 'disabled') %>
<% } else if (o === true) { %>
<span class="status-icon bg-success"></span> <%- i18n('str', 'online') %>
<% } else if (o === false) { %>
<span title="<%- getOfflineError() %>"><span class="status-icon bg-danger"></span> <%- i18n('str', 'offline') %></span>
@@ -48,7 +50,7 @@
<a href="#" data-toggle="dropdown" class="icon"><i class="fe fe-more-vertical"></i></a>
<div class="dropdown-menu dropdown-menu-right">
<a href="#" class="edit dropdown-item"><i class="dropdown-icon fe fe-edit"></i> <%- i18n('str', 'edit') %></a>
<!--<a href="#" class="logs dropdown-item"><i class="dropdown-icon fe fe-book"></i> <%- i18n('str', 'logs') %></a>-->
<a href="#" class="able dropdown-item"><i class="dropdown-icon fe fe-power"></i> <%- i18n('str', enabled ? 'disable' : 'enable') %></a>
<div class="dropdown-divider"></div>
<a href="#" class="delete dropdown-item"><i class="dropdown-icon fe fe-trash-2"></i> <%- i18n('str', 'delete') %></a>
</div>

View File

@@ -9,12 +9,25 @@ module.exports = Mn.View.extend({
tagName: 'tr',
ui: {
able: 'a.able',
edit: 'a.edit',
delete: 'a.delete',
host_link: '.host-link'
},
events: {
'click @ui.able': function (e) {
e.preventDefault();
let id = this.model.get('id');
App.Api.Nginx.ProxyHosts[this.model.get('enabled') ? 'disable' : 'enable'](id)
.then(() => {
return App.Api.Nginx.ProxyHosts.get(id)
.then(row => {
this.model.set(row);
});
});
},
'click @ui.edit': function (e) {
e.preventDefault();
App.Controller.showNginxProxyForm(this.model);

View File

@@ -14,6 +14,8 @@
"save": "Save",
"cancel": "Cancel",
"close": "Close",
"enable": "Enable",
"disable": "Disable",
"sure": "Yes I'm Sure",
"disabled": "Disabled",
"choose-file": "Choose file",

View File

@@ -22,6 +22,7 @@ const model = Backbone.Model.extend({
block_exploits: false,
http2_support: false,
advanced_config: '',
enabled: true,
meta: {},
// The following are expansions:
owner: null,