| #!/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 | 
| } |