forked from coolaj86/goldilocks.js
		
	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';
 | 
			
		||||
 | 
			
		||||
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 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) {
 | 
			
		||||
  var rpacket = {
 | 
			
		||||
    header: {
 | 
			
		||||
@ -148,7 +120,7 @@ module.exports.start = function (deps, config, mainPort) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var proms = [
 | 
			
		||||
      randomId.get()
 | 
			
		||||
      deps.storage.mdnsId.get()
 | 
			
		||||
    , deps.storage.owners.all().then(function (owners) {
 | 
			
		||||
        // The ID is the sha256 hash of the PPID, which shouldn't be reversible and therefore
 | 
			
		||||
        // should be safe to expose without needing authentication.
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,7 @@ var path = require('path');
 | 
			
		||||
var fs = PromiseA.promisifyAll(require('fs'));
 | 
			
		||||
 | 
			
		||||
module.exports.create = function (deps, conf) {
 | 
			
		||||
  var hrIds = require('human-readable-ids').humanReadableIds;
 | 
			
		||||
  var scmp = require('scmp');
 | 
			
		||||
  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 {
 | 
			
		||||
    owners: owners
 | 
			
		||||
  , config: config
 | 
			
		||||
  , mdnsId: mdnsId
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -46,6 +46,7 @@
 | 
			
		||||
    "finalhandler": "^0.4.0",
 | 
			
		||||
    "greenlock": "git+https://git.daplie.com/Daplie/node-greenlock.git#master",
 | 
			
		||||
    "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",
 | 
			
		||||
    "ipify": "^1.1.0",
 | 
			
		||||
    "js-yaml": "^3.8.3",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user