You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							64 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							64 lines
						
					
					
						
							1.3 KiB
						
					
					
				#!/usr/bin/env node | 
						|
 | 
						|
var mdns = require('./')() | 
						|
var path = require('path') | 
						|
var os = require('os') | 
						|
 | 
						|
var announcing = process.argv.indexOf('--announce') > -1 | 
						|
 | 
						|
if (process.argv.length < 3) { | 
						|
  console.error('Usage: %s <hostname>', path.basename(process.argv[1])) | 
						|
  process.exit(1) | 
						|
} | 
						|
var hostname = process.argv[2] | 
						|
 | 
						|
if (announcing) { | 
						|
  var ip = getIp() | 
						|
  mdns.on('query', function (query) { | 
						|
    query.questions.forEach(function (q) { | 
						|
      if (q.name === hostname) { | 
						|
        console.log('Responding %s -> %s', q.name, ip) | 
						|
        mdns.respond({ | 
						|
          answers: [{ | 
						|
            type: 'A', | 
						|
            name: q.name, | 
						|
            data: ip | 
						|
          }] | 
						|
        }) | 
						|
      } | 
						|
    }) | 
						|
  }) | 
						|
} else { | 
						|
  mdns.on('response', function (response) { | 
						|
    response.answers.forEach(function (answer) { | 
						|
      if (answer.name === hostname) { | 
						|
        console.log(answer.data) | 
						|
        process.exit() | 
						|
      } | 
						|
    }) | 
						|
  }) | 
						|
 | 
						|
  mdns.query(hostname, 'A') | 
						|
 | 
						|
  // Give responses 3 seconds to respond | 
						|
  setTimeout(function () { | 
						|
    console.error('Hostname not found') | 
						|
    process.exit(1) | 
						|
  }, 3000) | 
						|
} | 
						|
 | 
						|
function getIp () { | 
						|
  var networks = os.networkInterfaces() | 
						|
  var found = '127.0.0.1' | 
						|
 | 
						|
  Object.keys(networks).forEach(function (k) { | 
						|
    var n = networks[k] | 
						|
    n.forEach(function (addr) { | 
						|
      if (addr.family === 'IPv4' && !addr.internal) { | 
						|
        found = addr.address | 
						|
      } | 
						|
    }) | 
						|
  }) | 
						|
 | 
						|
  return found | 
						|
}
 | 
						|
 |