const logger = require("./logger.js"); const timediff = require("./timediff.js"); async function isOnline() { const url = global.config.draytek; let online = false; logger.info("checking if draytek is responding on url '" + url + "'..."); const timestamp = Date.now(); try { const controller = new AbortController(); const timeoutId = setTimeout(async function () { logger.debug( "request to draytek timed out after " + timediff.inSeconds(timestamp) + " seconds!" ); controller.abort(); }, global.config.timeouts.request); const result = await fetch(url, { signal: controller.signal, }); clearTimeout(timeoutId); logger.info( "draytek responded with status code '" + result.status + "' after " + timediff.inSeconds(timestamp) + " seconds!" ); online = result.status === 200; } catch (err) { if (err.name !== "AbortError") { logger.error( "encountered an error checking if draytek is responding (" + err + ")" ); } } return online; } // exports module.exports = { isOnline, };