@@ -104,7 +104,7 @@ const internalProxyHost = {
104104 /**
105105 * @param {Access } access
106106 * @param {Object } data
107- * @param {Integer } data.id
107+ * @param {Number } data.id
108108 * @return {Promise }
109109 */
110110 update : ( access , data ) => {
@@ -192,7 +192,7 @@ const internalProxyHost = {
192192 return internalNginx . configure ( proxyHostModel , 'proxy_host' , row )
193193 . then ( new_meta => {
194194 row . meta = new_meta ;
195- row = internalHost . cleanRowCertificateMeta ( row ) ;
195+ row = internalHost . cleanRowCertificateMeta ( row ) ;
196196 return _ . omit ( row , omissions ( ) ) ;
197197 } ) ;
198198 } ) ;
@@ -202,7 +202,7 @@ const internalProxyHost = {
202202 /**
203203 * @param {Access } access
204204 * @param {Object } data
205- * @param {Integer } data.id
205+ * @param {Number } data.id
206206 * @param {Array } [data.expand]
207207 * @param {Array } [data.omit]
208208 * @return {Promise }
@@ -249,7 +249,7 @@ const internalProxyHost = {
249249 /**
250250 * @param {Access } access
251251 * @param {Object } data
252- * @param {Integer } data.id
252+ * @param {Number } data.id
253253 * @param {String } [data.reason]
254254 * @returns {Promise }
255255 */
@@ -291,6 +291,101 @@ const internalProxyHost = {
291291 } ) ;
292292 } ,
293293
294+ /**
295+ * @param {Access } access
296+ * @param {Object } data
297+ * @param {Number } data.id
298+ * @param {String } [data.reason]
299+ * @returns {Promise }
300+ */
301+ enable : ( access , data ) => {
302+ return access . can ( 'proxy_hosts:update' , data . id )
303+ . then ( ( ) => {
304+ return internalProxyHost . get ( access , { id : data . id } ) ;
305+ } )
306+ . then ( row => {
307+ if ( ! row ) {
308+ throw new error . ItemNotFoundError ( data . id ) ;
309+ } else if ( row . enabled ) {
310+ throw new error . ValidationError ( 'Host is already enabled' ) ;
311+ }
312+
313+ row . enabled = 1 ;
314+
315+ return proxyHostModel
316+ . query ( )
317+ . where ( 'id' , row . id )
318+ . patch ( {
319+ enabled : 1
320+ } )
321+ . then ( ( ) => {
322+ // Configure nginx
323+ return internalNginx . configure ( proxyHostModel , 'proxy_host' , row ) ;
324+ } )
325+ . then ( ( ) => {
326+ // Add to audit log
327+ return internalAuditLog . add ( access , {
328+ action : 'enabled' ,
329+ object_type : 'proxy-host' ,
330+ object_id : row . id ,
331+ meta : _ . omit ( row , omissions ( ) )
332+ } ) ;
333+ } ) ;
334+ } )
335+ . then ( ( ) => {
336+ return true ;
337+ } ) ;
338+ } ,
339+
340+ /**
341+ * @param {Access } access
342+ * @param {Object } data
343+ * @param {Number } data.id
344+ * @param {String } [data.reason]
345+ * @returns {Promise }
346+ */
347+ disable : ( access , data ) => {
348+ return access . can ( 'proxy_hosts:update' , data . id )
349+ . then ( ( ) => {
350+ return internalProxyHost . get ( access , { id : data . id } ) ;
351+ } )
352+ . then ( row => {
353+ if ( ! row ) {
354+ throw new error . ItemNotFoundError ( data . id ) ;
355+ } else if ( ! row . enabled ) {
356+ throw new error . ValidationError ( 'Host is already disabled' ) ;
357+ }
358+
359+ row . enabled = 0 ;
360+
361+ return proxyHostModel
362+ . query ( )
363+ . where ( 'id' , row . id )
364+ . patch ( {
365+ enabled : 0
366+ } )
367+ . then ( ( ) => {
368+ // Delete Nginx Config
369+ return internalNginx . deleteConfig ( 'proxy_host' , row )
370+ . then ( ( ) => {
371+ return internalNginx . reload ( ) ;
372+ } ) ;
373+ } )
374+ . then ( ( ) => {
375+ // Add to audit log
376+ return internalAuditLog . add ( access , {
377+ action : 'disabled' ,
378+ object_type : 'proxy-host' ,
379+ object_id : row . id ,
380+ meta : _ . omit ( row , omissions ( ) )
381+ } ) ;
382+ } ) ;
383+ } )
384+ . then ( ( ) => {
385+ return true ;
386+ } ) ;
387+ } ,
388+
294389 /**
295390 * All Hosts
296391 *
@@ -339,7 +434,7 @@ const internalProxyHost = {
339434 /**
340435 * Report use
341436 *
342- * @param {Integer } user_id
437+ * @param {Number } user_id
343438 * @param {String } visibility
344439 * @returns {Promise }
345440 */
0 commit comments