50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
//var config = require('./device.json');
|
||
|
|
||
|
// require('ssl-root-cas').inject();
|
||
|
// TODO try SNI loopback.example.com as result of api.ipify.com with loopback token
|
||
|
|
||
|
function phoneHome() {
|
||
|
var holepunch = require('./holepunch/beacon');
|
||
|
var ports;
|
||
|
|
||
|
ports = [
|
||
|
{ private: 65022
|
||
|
, public: 65022
|
||
|
, protocol: 'tcp'
|
||
|
, ttl: 0
|
||
|
, test: { service: 'ssh' }
|
||
|
, testable: false
|
||
|
}
|
||
|
, { private: 650443
|
||
|
, public: 650443
|
||
|
, protocol: 'tcp'
|
||
|
, ttl: 0
|
||
|
, test: { service: 'https' }
|
||
|
}
|
||
|
, { private: 65080
|
||
|
, public: 65080
|
||
|
, protocol: 'tcp'
|
||
|
, ttl: 0
|
||
|
, test: { service: 'http' }
|
||
|
}
|
||
|
];
|
||
|
|
||
|
// TODO return a middleware
|
||
|
holepunch.run(require('./redirects.json').reduce(function (all, redirect) {
|
||
|
if (!all[redirect.from.hostname]) {
|
||
|
all[redirect.from.hostname] = true;
|
||
|
all.push(redirect.from.hostname);
|
||
|
}
|
||
|
if (!all[redirect.to.hostname]) {
|
||
|
all[redirect.to.hostname] = true;
|
||
|
all.push(redirect.to.hostname);
|
||
|
}
|
||
|
|
||
|
return all;
|
||
|
}, []), ports).catch(function () {
|
||
|
console.error("Couldn't phone home. Oh well");
|
||
|
});
|
||
|
}
|