| 63 | | # MacOS X workaround |
|---|
| 64 | | ::Socket.do_not_reverse_lookup = true |
|---|
| 65 | | |
|---|
| 66 | | @sock = ::UDPSocket.new() |
|---|
| 67 | | @sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_REUSEADDR, 1) |
|---|
| 68 | | @sock.bind(datastore['SRVHOST'], @port) |
|---|
| 69 | | @run = true |
|---|
| 70 | | |
|---|
| 71 | | Thread.new { |
|---|
| | 63 | # MacOS X workaround |
|---|
| | 64 | ::Socket.do_not_reverse_lookup = true |
|---|
| | 65 | |
|---|
| | 66 | @sock = ::UDPSocket.new() |
|---|
| | 67 | @sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_REUSEADDR, 1) |
|---|
| | 68 | @sock.bind(datastore['SRVHOST'], @port) |
|---|
| | 69 | @run = true |
|---|
| | 70 | |
|---|
| 86 | | request.qr = 1 |
|---|
| 87 | | request.ra = 1 |
|---|
| 88 | | |
|---|
| 89 | | case tc_s |
|---|
| 90 | | when 'IN::TXT' |
|---|
| 91 | | answer = Resolv::DNS::Resource::IN::TXT.new("#{addr[3]}:#{addr[1]} #{name}") |
|---|
| 92 | | request.add_answer(name, 1, answer) |
|---|
| 93 | | end |
|---|
| 94 | | } |
|---|
| 95 | | print_status("DNS #{addr[3]}:#{addr[1]} XID #{request.id}") |
|---|
| 96 | | |
|---|
| 97 | | @sock.send(request.encode(), 0, addr[3], addr[1]) |
|---|
| 98 | | end |
|---|
| 99 | | |
|---|
| | 82 | request.each_question {|name, typeclass| |
|---|
| | 83 | tc_s = typeclass.to_s().gsub(/^Resolv::DNS::Resource::/, "") |
|---|
| | 84 | |
|---|
| | 85 | request.qr = 1 |
|---|
| | 86 | request.ra = 1 |
|---|
| | 87 | |
|---|
| | 88 | case tc_s |
|---|
| | 89 | when 'IN::TXT' |
|---|
| | 90 | print_status("DNS #{addr[3]}:#{addr[1]} XID #{request.id} #{name}") |
|---|
| | 91 | answer = Resolv::DNS::Resource::IN::TXT.new("#{addr[3]}:#{addr[1]} #{name}") |
|---|
| | 92 | request.add_answer(name, 1, answer) |
|---|
| | 93 | end |
|---|
| | 94 | } |
|---|
| | 95 | |
|---|
| | 96 | @sock.send(request.encode(), 0, addr[3], addr[1]) |
|---|
| | 97 | end |
|---|
| | 98 | |
|---|