mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2025-04-24 21:09:47 +00:00
DRY up calls to gosuper API, and use empty Host header
This commit is contained in:
parent
f20947c2d2
commit
16e2ec286e
@ -1,3 +1,5 @@
|
|||||||
|
* DRY up calls to gosuper API, and use empty Host header [Pablo]
|
||||||
|
|
||||||
# v2.1.1
|
# v2.1.1
|
||||||
|
|
||||||
* Add iptables rules to allow resin-vpn named interface to be used by VPN [Praneeth]
|
* Add iptables rules to allow resin-vpn named interface to be used by VPN [Praneeth]
|
||||||
|
@ -48,14 +48,24 @@ module.exports = (application) ->
|
|||||||
res.sendStatus(204)
|
res.sendStatus(204)
|
||||||
|
|
||||||
unparsedRouter.post '/v1/reboot', (req, res) ->
|
unparsedRouter.post '/v1/reboot', (req, res) ->
|
||||||
utils.mixpanelTrack('Reboot')
|
new Promise (resolve, reject) ->
|
||||||
request.post(config.gosuperAddress + '/v1/reboot')
|
utils.mixpanelTrack('Reboot')
|
||||||
.pipe(res)
|
utils.gosuper.post('/v1/reboot')
|
||||||
|
.on('error', reject)
|
||||||
|
.on('response', -> resolve())
|
||||||
|
.pipe(res)
|
||||||
|
.catch (err) ->
|
||||||
|
res.status(503).send(err?.message or err or 'Unknown error')
|
||||||
|
|
||||||
unparsedRouter.post '/v1/shutdown', (req, res) ->
|
unparsedRouter.post '/v1/shutdown', (req, res) ->
|
||||||
utils.mixpanelTrack('Shutdown')
|
new Promise (resolve, reject) ->
|
||||||
request.post(config.gosuperAddress + '/v1/shutdown')
|
utils.mixpanelTrack('Shutdown')
|
||||||
.pipe(res)
|
utils.gosuper.post('/v1/shutdown')
|
||||||
|
.on('error', reject)
|
||||||
|
.on('response', -> resolve())
|
||||||
|
.pipe(res)
|
||||||
|
.catch (err) ->
|
||||||
|
res.status(503).send(err?.message or err or 'Unknown error')
|
||||||
|
|
||||||
parsedRouter.post '/v1/purge', (req, res) ->
|
parsedRouter.post '/v1/purge', (req, res) ->
|
||||||
appId = req.body.appId
|
appId = req.body.appId
|
||||||
@ -68,9 +78,9 @@ module.exports = (application) ->
|
|||||||
application.kill(app)
|
application.kill(app)
|
||||||
.then ->
|
.then ->
|
||||||
new Promise (resolve, reject) ->
|
new Promise (resolve, reject) ->
|
||||||
request.post(config.gosuperAddress + '/v1/purge', { json: true, body: applicationId: appId })
|
utils.gosuper.post('/v1/purge', { json: true, body: applicationId: appId })
|
||||||
.on 'error', reject
|
.on('error', reject)
|
||||||
.on 'response', -> resolve()
|
.on('response', -> resolve())
|
||||||
.pipe(res)
|
.pipe(res)
|
||||||
.finally ->
|
.finally ->
|
||||||
application.start(app)
|
application.start(app)
|
||||||
|
@ -8,6 +8,7 @@ utils = require './utils'
|
|||||||
bootstrap = require './bootstrap'
|
bootstrap = require './bootstrap'
|
||||||
config = require './config'
|
config = require './config'
|
||||||
request = require 'request'
|
request = require 'request'
|
||||||
|
_ = require 'lodash'
|
||||||
|
|
||||||
knex.init.then ->
|
knex.init.then ->
|
||||||
utils.mixpanelTrack('Supervisor start')
|
utils.mixpanelTrack('Supervisor start')
|
||||||
@ -50,13 +51,13 @@ knex.init.then ->
|
|||||||
application.initialize()
|
application.initialize()
|
||||||
|
|
||||||
updateIpAddr = ->
|
updateIpAddr = ->
|
||||||
callback = (error, response, body ) ->
|
utils.gosuper.getAsync('/v1/ipaddr', { json: true })
|
||||||
if !error && response.statusCode == 200 && body.Data.IPAddresses?
|
.spread (response, body) ->
|
||||||
|
if response.statusCode == 200 && body.Data.IPAddresses?
|
||||||
device.updateState(
|
device.updateState(
|
||||||
ip_address: body.Data.IPAddresses.join(' ')
|
ip_address: body.Data.IPAddresses.join(' ')
|
||||||
)
|
)
|
||||||
request.get({ url: "#{config.gosuperAddress}/v1/ipaddr", json: true }, callback )
|
.catch(_.noop)
|
||||||
|
|
||||||
console.log('Starting periodic check for IP addresses..')
|
console.log('Starting periodic check for IP addresses..')
|
||||||
setInterval(updateIpAddr, 30 * 1000) # Every 30s
|
setInterval(updateIpAddr, 30 * 1000) # Every 30s
|
||||||
updateIpAddr()
|
updateIpAddr()
|
||||||
|
@ -42,7 +42,7 @@ exports.getID = do ->
|
|||||||
return devices[0].id
|
return devices[0].id
|
||||||
|
|
||||||
exports.reboot = ->
|
exports.reboot = ->
|
||||||
request.postAsync(config.gosuperAddress + '/v1/reboot')
|
utils.gosuper.postAsync('/v1/reboot')
|
||||||
|
|
||||||
exports.hostConfigEnvVarPrefix = 'RESIN_HOST_'
|
exports.hostConfigEnvVarPrefix = 'RESIN_HOST_'
|
||||||
bootConfigEnvVarPrefix = 'RESIN_HOST_CONFIG_'
|
bootConfigEnvVarPrefix = 'RESIN_HOST_CONFIG_'
|
||||||
@ -83,7 +83,7 @@ exports.setHostConfig = (env, logMessage) ->
|
|||||||
setLogToDisplay = (env, logMessage) ->
|
setLogToDisplay = (env, logMessage) ->
|
||||||
if env['RESIN_HOST_LOG_TO_DISPLAY']?
|
if env['RESIN_HOST_LOG_TO_DISPLAY']?
|
||||||
enable = env['RESIN_HOST_LOG_TO_DISPLAY'] != '0'
|
enable = env['RESIN_HOST_LOG_TO_DISPLAY'] != '0'
|
||||||
request.postAsync(config.gosuperAddress + '/v1/set-log-to-display', { json: true, body: Enable: enable })
|
utils.gosuper.postAsync('/v1/set-log-to-display', { json: true, body: Enable: enable })
|
||||||
.spread (response, body) ->
|
.spread (response, body) ->
|
||||||
if response.statusCode != 200
|
if response.statusCode != 200
|
||||||
logMessage("Error setting log to display: #{body.Error}, Status:, #{response.statusCode}", { error: body.Error }, 'Set log to display error')
|
logMessage("Error setting log to display: #{body.Error}, Status:, #{response.statusCode}", { error: body.Error }, 'Set log to display error')
|
||||||
|
@ -177,10 +177,28 @@ exports.resinLogControl = (val) ->
|
|||||||
logger.disableLogPublishing(val == 'false')
|
logger.disableLogPublishing(val == 'false')
|
||||||
console.log('Logs enabled: ' + val)
|
console.log('Logs enabled: ' + val)
|
||||||
|
|
||||||
|
emptyHostRequest = request.defaults({ headers: Host: '' })
|
||||||
|
gosuperRequest = (method, endpoint, options = {}, callback) ->
|
||||||
|
if _.isFunction(options)
|
||||||
|
callback = options
|
||||||
|
options = {}
|
||||||
|
options.method = method
|
||||||
|
options.url = config.gosuperAddress + endpoint
|
||||||
|
emptyHostRequest(options, callback)
|
||||||
|
|
||||||
|
gosuperPost = _.partial(gosuperRequest, 'POST')
|
||||||
|
gosuperGet = _.partial(gosuperRequest, 'GET')
|
||||||
|
|
||||||
|
exports.gosuper = gosuper =
|
||||||
|
post: gosuperPost
|
||||||
|
get: gosuperGet
|
||||||
|
postAsync: Promise.promisify(gosuperPost)
|
||||||
|
getAsync: Promise.promisify(gosuperGet)
|
||||||
|
|
||||||
# Callback function to enable/disable VPN
|
# Callback function to enable/disable VPN
|
||||||
exports.vpnControl = (val) ->
|
exports.vpnControl = (val) ->
|
||||||
enable = val != 'false'
|
enable = val != 'false'
|
||||||
request.postAsync(config.gosuperAddress + '/v1/vpncontrol', { json: true, body: Enable: enable })
|
gosuper.postAsync('/v1/vpncontrol', { json: true, body: Enable: enable })
|
||||||
.spread (response, body) ->
|
.spread (response, body) ->
|
||||||
if response.statusCode == 202
|
if response.statusCode == 202
|
||||||
console.log('VPN enabled: ' + enable)
|
console.log('VPN enabled: ' + enable)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user