UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

44 lines (38 loc) 1.53 kB
logger = require 'winston' authorisation = require '../api/authorisation' server = require "../server" config = require "../config/config" config.router = config.get('router') config.api = config.get('api') config.rerun = config.get('rerun') config.polling = config.get('polling') config.tcpAdapter = config.get('tcpAdapter') Keystore = require('../model/keystore').Keystore KeystoreAPI = require "../api/keystore" utils = require "../utils" Q = require 'q' ### # restart the server ### exports.restart = (next) -> # Test if the user is authorised if authorisation.inGroup('admin', this.authenticated) is false utils.logAndSetResponse this, 403, "User #{this.authenticated.email} is not an admin, API access to restart the server denied.", 'info' return try emailAddr = this.authenticated.email result = yield Q.nfcall KeystoreAPI.getCertKeyStatus # valid certificate/key if result server.startRestartServerTimeout -> logger.info 'User ' +emailAddr+ ' has requested a Server Restart. Proceeding to restart servers...' # All ok! So set the result this.body = 'Server being restarted' this.status = 200 else # Not valid logger.info 'User ' +emailAddr+ ' has requested a Server Restart with invalid certificate details. Cancelling restart...' this.body = 'Certificates and Key did not match. Cancelling restart...' this.status = 400 catch e utils.logAndSetResponse this, 400, "Could not restart the servers via the API: #{e}", 'error'