httpx/examples/resolv_tcp.rb
2023-04-26 23:05:45 +01:00

41 lines
1.2 KiB
Ruby

# frozen_string_literal: true
require "resolv"
require "httpx"
host = "127.0.0.11"
port = 53
# srv_hostname = "aerserv-bc-us-east.bidswitch.net"
record_type = Resolv::DNS::Resource::IN::A
# # addresses = nil
# # Resolv::DNS.open(nameserver: host) do |dns|
# # require "pry-byebug"; binding.pry
# # addresses = dns.getresources(srv_hostname, record_type)
# # end
# message_id = 1
# buffer = HTTPX::Resolver.encode_dns_query(srv_hostname, type: record_type, message_id: message_id)
# io = TCPSocket.new(host, port)
# buffer[0, 2] = [buffer.size, message_id].pack("nn")
# io.write(buffer.to_s)
# data, _ = io.readpartial(2048)
# size = data[0, 2].unpack1("n")
# answer = data[2..-1]
# answer << io.readpartial(size) if size > answer.bytesize
# addresses = HTTPX::Resolver.decode_dns_answer(answer)
# puts "(#{srv_hostname}) addresses: #{addresses}"
srv_hostname = "www.sfjewjfwigiewpgwwg-native-1.com"
socket = UDPSocket.new
buffer = HTTPX::Resolver.encode_dns_query(srv_hostname, type: record_type)
socket.send(buffer.to_s, 0, host, port)
recv, _ = socket.recvfrom(512)
puts "received #{recv.bytesize} bytes..."
addresses = HTTPX::Resolver.decode_dns_answer(recv)
puts "(#{srv_hostname}) addresses: #{addresses}"