diff --git a/config/default.js b/config/default.js index acd1f53d..e36936b2 100755 --- a/config/default.js +++ b/config/default.js @@ -339,6 +339,7 @@ module.exports = { }, proxy: { enable: false, + test: 'https://api.ipify.org?format=json', host: '', port: 8888, hostnames: [], diff --git a/src/app.js b/src/app.js index 88bf87b6..aae58dec 100755 --- a/src/app.js +++ b/src/app.js @@ -112,6 +112,16 @@ async function startMemorySample(snapshotTriggers = []) { }, config.memorySampling.sampleDuration); } +async function testProxy() { + if (config.proxy.enable && argv.testProxy) { + const res = await unprint.get(argv.testProxy); + + if (!res.ok) { + throw new Error(`Proxy is offline (${res.status})`); + } + } +} + async function init() { try { await redis.connect(); @@ -186,6 +196,8 @@ async function init() { console.log(res.status, res.body); } + await testProxy(); + const actorsFromFile = argv.actorsFile && await getFileEntries(argv.actorsFile); const actorNames = (argv.actors || []).concat(actorsFromFile || []); diff --git a/src/argv.js b/src/argv.js index c49982f8..9ca22ff0 100755 --- a/src/argv.js +++ b/src/argv.js @@ -40,6 +40,11 @@ const { argv } = yargs type: 'boolean', alias: 'web', }) + .option('test-proxy', { + describe: 'Test URL to ensure proxy is online', + type: 'string', + default: config.proxy.test, + }) .option('include-networks', { describe: 'Network to scrape all channels from (overrides configuration)', type: 'array',