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);