switched the mdns ID to be human readable
This commit is contained in:
parent
59c9abca49
commit
10fc80c2b7
30
lib/mdns.js
30
lib/mdns.js
|
@ -1,36 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var PromiseA = require('bluebird');
|
var PromiseA = require('bluebird');
|
||||||
var fs = PromiseA.promisifyAll(require('fs'));
|
|
||||||
var path = require('path');
|
|
||||||
var idFilename = path.join(__dirname, '..', 'var', 'mdns-id');
|
|
||||||
var queryName = '_cloud._tcp.local';
|
var queryName = '_cloud._tcp.local';
|
||||||
|
|
||||||
var randomId = {
|
|
||||||
get: function () {
|
|
||||||
return fs.readFileAsync(idFilename)
|
|
||||||
.catch(function (err) {
|
|
||||||
if (err.code !== 'ENOENT') {
|
|
||||||
return PromiseA.reject(err);
|
|
||||||
}
|
|
||||||
var id = require('crypto').randomBytes(5).toString('hex');
|
|
||||||
return randomId.set(id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
, set: function (value) {
|
|
||||||
return fs.mkdirAsync(path.dirname(idFilename)).catch(function (err) {
|
|
||||||
if (err.code !== 'EEXIST') {
|
|
||||||
console.error('failed to mkdir', path.dirname(idFilename), err.toString());
|
|
||||||
}
|
|
||||||
}).then(function () {
|
|
||||||
return fs.writeFileAsync(idFilename, value).then(function () {
|
|
||||||
return value;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function createResponse(name, ownerIds, packet, ttl, mainPort) {
|
function createResponse(name, ownerIds, packet, ttl, mainPort) {
|
||||||
var rpacket = {
|
var rpacket = {
|
||||||
header: {
|
header: {
|
||||||
|
@ -148,7 +120,7 @@ module.exports.start = function (deps, config, mainPort) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var proms = [
|
var proms = [
|
||||||
randomId.get()
|
deps.storage.mdnsId.get()
|
||||||
, deps.storage.owners.all().then(function (owners) {
|
, deps.storage.owners.all().then(function (owners) {
|
||||||
// The ID is the sha256 hash of the PPID, which shouldn't be reversible and therefore
|
// The ID is the sha256 hash of the PPID, which shouldn't be reversible and therefore
|
||||||
// should be safe to expose without needing authentication.
|
// should be safe to expose without needing authentication.
|
||||||
|
|
|
@ -5,6 +5,7 @@ var path = require('path');
|
||||||
var fs = PromiseA.promisifyAll(require('fs'));
|
var fs = PromiseA.promisifyAll(require('fs'));
|
||||||
|
|
||||||
module.exports.create = function (deps, conf) {
|
module.exports.create = function (deps, conf) {
|
||||||
|
var hrIds = require('human-readable-ids').humanReadableIds;
|
||||||
var scmp = require('scmp');
|
var scmp = require('scmp');
|
||||||
var storageDir = path.join(__dirname, '..', 'var');
|
var storageDir = path.join(__dirname, '..', 'var');
|
||||||
|
|
||||||
|
@ -73,8 +74,31 @@ module.exports.create = function (deps, conf) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var mdnsId = {
|
||||||
|
_filename: 'mdns-id'
|
||||||
|
, get: function () {
|
||||||
|
var self = this;
|
||||||
|
return read("mdns-id").then(function (result) {
|
||||||
|
if (typeof result !== 'string') {
|
||||||
|
throw new Error('mDNS ID not present');
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}).catch(function () {
|
||||||
|
return self.set(hrIds.random());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
, set: function (value) {
|
||||||
|
var self = this;
|
||||||
|
return write(self._filename, value).then(function () {
|
||||||
|
return self.get();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
owners: owners
|
owners: owners
|
||||||
, config: config
|
, config: config
|
||||||
|
, mdnsId: mdnsId
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
"finalhandler": "^0.4.0",
|
"finalhandler": "^0.4.0",
|
||||||
"greenlock": "git+https://git.daplie.com/Daplie/node-greenlock.git#master",
|
"greenlock": "git+https://git.daplie.com/Daplie/node-greenlock.git#master",
|
||||||
"http-proxy": "^1.16.2",
|
"http-proxy": "^1.16.2",
|
||||||
|
"human-readable-ids": "git+https://git.daplie.com/Daplie/human-readable-ids-js#master",
|
||||||
"ipaddr.js": "git+https://github.com/whitequark/ipaddr.js.git#v1.3.0",
|
"ipaddr.js": "git+https://github.com/whitequark/ipaddr.js.git#v1.3.0",
|
||||||
"ipify": "^1.1.0",
|
"ipify": "^1.1.0",
|
||||||
"js-yaml": "^3.8.3",
|
"js-yaml": "^3.8.3",
|
||||||
|
|
Loading…
Reference in New Issue