made the loopback check more robust
This commit is contained in:
parent
eda766e48c
commit
b324016056
|
@ -142,8 +142,9 @@ module.exports.create = function (deps, conf) {
|
|||
|
||||
// If we are on a public address or all ports we are listening on are forwarded to us then
|
||||
// we don't need the tunnel and we can set the DNS records for all our domains to our public
|
||||
// address. Otherwise we need to use the tunnel to accept traffic.
|
||||
if (!notLooped.length) {
|
||||
// address. Otherwise we need to use the tunnel to accept traffic. Also since the tunnel will
|
||||
// only be listening on ports 80 and 443 if those are forwarded to us we don't want the tunnel.
|
||||
if (!notLooped.length || (loopResult.ports['80'] && loopResult.ports['443'])) {
|
||||
if (tunnelActive) {
|
||||
await disconnectTunnels();
|
||||
}
|
||||
|
|
|
@ -17,6 +17,9 @@ module.exports.create = function (deps, conf) {
|
|||
// Note that the error on the body will probably have a message that overwrites the default
|
||||
throw Object.assign(new Error('error in check IP response'), result.body.error);
|
||||
}
|
||||
if (!result.body.address) {
|
||||
throw new Error("public address resonse doesn't contain address: "+JSON.stringify(result.body));
|
||||
}
|
||||
return result.body.address;
|
||||
}
|
||||
async function checkPublicAddr(provider) {
|
||||
|
@ -33,12 +36,14 @@ module.exports.create = function (deps, conf) {
|
|||
var reqObj = {
|
||||
method: 'POST'
|
||||
, url: deps.OAUTH3.url.normalize(host)+'/api/org.oauth3.tunnel/loopback'
|
||||
, timeout: 20*1000
|
||||
, json: {
|
||||
address: address
|
||||
, port: port
|
||||
, token: token
|
||||
, keyAuthorization: keyAuth
|
||||
, iat: Date.now()
|
||||
, timeout: 18*1000
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -47,12 +52,18 @@ module.exports.create = function (deps, conf) {
|
|||
result = await deps.request(reqObj);
|
||||
} catch (err) {
|
||||
delete pending[token];
|
||||
throw err;
|
||||
if (conf.debug) {
|
||||
console.log('error making loopback request for port ' + port + ' loopback', err.message);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
delete pending[token];
|
||||
if (!result.body) {
|
||||
throw new Error('No response body in loopback request for port '+port);
|
||||
if (conf.debug) {
|
||||
console.log('No response body in loopback request for port '+port);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// If the loopback requests don't go to us then there are all kinds of ways it could
|
||||
// error, but none of them really provide much extra information so we don't do
|
||||
|
@ -75,7 +86,7 @@ module.exports.create = function (deps, conf) {
|
|||
return checkSinglePort(directives.api, address, port);
|
||||
}));
|
||||
|
||||
if (conf.debug) {
|
||||
if (conf.debug && Object.keys(pending).length) {
|
||||
console.log('remaining loopback tokens', pending);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue