From c55c034f11f1cb342f3f45e3b2dbcf0377024b3b Mon Sep 17 00:00:00 2001 From: tigerbot Date: Wed, 18 Oct 2017 13:48:08 -0600 Subject: [PATCH] started using of the ddns.loopback setting --- lib/ddns/index.js | 19 ++++++++++++++++--- lib/ddns/loopback.js | 8 ++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/lib/ddns/index.js b/lib/ddns/index.js index 27cbfe5..06c39cf 100644 --- a/lib/ddns/index.js +++ b/lib/ddns/index.js @@ -5,6 +5,19 @@ module.exports.create = function (deps, conf) { var loopback = require('./loopback').create(deps, conf); var dnsCtrl = require('./dns-ctrl').create(deps, conf); + var loopbackDomain; + function updateConf() { + loopbackDomain = 'oauth3.org'; + if (conf.ddns && conf.ddns.loopback) { + if (conf.ddns.loopback.type === 'tunnel@oauth3.org' && conf.ddns.loopback.domain) { + loopbackDomain = conf.ddns.loopback.domain; + } else { + console.warn('invalid loopback configuration: bad type or missing domain'); + } + } + } + updateConf(); + var localAddr, gateway; var tunnelActive = false; async function checkNetworkEnv() { @@ -19,7 +32,7 @@ module.exports.create = function (deps, conf) { localAddr = addr; gateway = gw; - var loopResult = await loopback('seth.daplie.me'); + var loopResult = await loopback(loopbackDomain); var notLooped = Object.keys(loopResult.ports).filter(function (port) { return !loopResult.ports[port]; }); @@ -74,8 +87,7 @@ module.exports.create = function (deps, conf) { return; } var session = await getSession(); - var directives = await deps.OAUTH3.discover(session.token.aud); - var addr = await loopback.checkPublicAddr(directives.api); + var addr = await loopback.checkPublicAddr(loopbackDomain); if (publicAddress === addr) { return; @@ -97,5 +109,6 @@ module.exports.create = function (deps, conf) { , setDeviceAddress: dnsCtrl.setDeviceAddress , getDeviceAddresses: dnsCtrl.getDeviceAddresses , recheckPubAddr: recheckPubAddr + , updateConf: updateConf }; }; diff --git a/lib/ddns/loopback.js b/lib/ddns/loopback.js index c35c742..3975f97 100644 --- a/lib/ddns/loopback.js +++ b/lib/ddns/loopback.js @@ -3,7 +3,7 @@ module.exports.create = function (deps, conf) { var pending = {}; - async function checkPublicAddr(host) { + async function _checkPublicAddr(host) { var result = await deps.request({ method: 'GET' , url: deps.OAUTH3.url.normalize(host)+'/api/org.oauth3.tunnel/checkip' @@ -19,6 +19,10 @@ module.exports.create = function (deps, conf) { } return result.body.address; } + async function checkPublicAddr(provider) { + var directives = await deps.OAUTH3.discover(provider); + return _checkPublicAddr(directives.api); + } async function checkSinglePort(host, address, port) { var crypto = require('crypto'); @@ -61,7 +65,7 @@ module.exports.create = function (deps, conf) { async function loopback(provider) { var directives = await deps.OAUTH3.discover(provider); - var address = await checkPublicAddr(directives.api); + var address = await _checkPublicAddr(directives.api); if (conf.debug) { console.log('checking to see if', address, 'gets back to us'); }