'use strict'; /* * handle all request error here, * */ const pug = require('pug'); const path = require('path'); const error502PugFn = pug.compileFile(path.join(__dirname, '../resource/502.pug')); const certPugFn = pug.compileFile(path.join(__dirname, '../resource/cert_error.pug')); /** * get error content for certification issues */ function getCertErrorContent(error, fullUrl) { let content; const title = 'The connection is not private. '; let explain = 'There are error with the certfication of the site.'; switch (error.code) { case 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY': { explain = 'The certfication of the site you are visiting is not issued by a known agency, ' + 'It usually happenes when the cert is a self-signed one.
' + 'If you know and trust the site, you can run AnyProxy with option -ignore-unauthorized-ssl to continue.' break; } default: { explain = '' break; } } try { content = certPugFn({ title: title, explain: explain, code: error.code }); } catch (parseErro) { content = error.stack; } return content; } /* * get the default error content */ function getDefaultErrorCotent(error, fullUrl) { let content; try { content = error502PugFn({ error, url: fullUrl, errorStack: error.stack.split(/\n/) }); } catch (parseErro) { content = error.stack; } return content; } /* * get mapped error content for each error */ module.exports.getErrorContent = function (error, fullUrl) { let content = ''; error = error || {}; switch (error.code) { case 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY': { content = getCertErrorContent(error, fullUrl); break; } default: { content = getDefaultErrorCotent(error, fullUrl); break; } } return content; }