forked from coolaj86/goldilocks.js
		
	started using of the ddns.loopback setting
This commit is contained in:
		
							parent
							
								
									6b2b91ba26
								
							
						
					
					
						commit
						c55c034f11
					
				@ -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
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -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');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user