#!/usr/bin/env ruby
require 'rubygems'
require 'rubydns'
require 'ipaddr'
$VERBOSE = true
DNS1 = '62.236.255.181'
DNS2 = '62.236.255.182'
DOMAIN = 'ip.fi'
def main
socket_ntp1 = UDPSocket.new
#socket_ntp2 = UDPSocket.new
socket_ntp1.bind(DNS1, 53)
#socket_ntp2.bind(DNS2, 53)
RubyDNS::run_server(:listen => [socket_ntp1]) do
match(/\.ip\.fi$/, :AAAA) do |m,t|
name = t.question.to_s
answer = IPAddr.new(name.split(/\.ip\.fi.*/).first.to_i(36), family=Socket::AF_INET6).to_s
t.respond!(answer)
end
match(//, :PTR) do |m,t|
addr = t.question.to_s
addr = addr.split('.ip6.arpa').first.delete('.').reverse.scan(/..../).join(':')
answer = [IPAddr.new(addr).to_i.to_s(36), DOMAIN].join('.')
t.respond!(Resolv::DNS::Name.create(answer))
end
end
end