1234567891011121314151617181920212223 |
- const { create, parse } = require('dns.js')
- const { udp, net } = just
- const { loop } = just.factory
- const dnsServer = just.env().DNS_SERVER || '127.0.0.11'
- function lookup (query = 'www.google.com', onRecord = () => {}, address = dnsServer, port = 53, buf = new ArrayBuffer(65536)) {
- const fd = net.socket(net.AF_INET, net.SOCK_DGRAM | net.SOCK_NONBLOCK, 0)
- net.bind(fd, address, port)
- loop.add(fd, (fd, event) => {
- const answer = []
- const len = udp.recvmsg(fd, buf, answer)
- const [address, port] = answer
- const message = { length: len, address, port, message: parse(buf, len) }
- loop.remove(fd)
- net.close(fd)
- onRecord(message)
- })
- const len = create(query, buf, 1)
- udp.sendmsg(fd, buf, address, port, len)
- }
- module.exports = { lookup }
|