From d2747549fee7a92017331f081cebf0902fab7347 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Thu, 18 Jun 2015 06:09:46 +0200 Subject: [PATCH] Support IPv6 addresses This also checks for IPv6-mapped IPv4 addresses. Closes #1. --- lib/dyndnsd.rb | 2 +- lib/dyndnsd/generator/bind.rb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/dyndnsd.rb b/lib/dyndnsd.rb index 508612e..163d4ce 100644 --- a/lib/dyndnsd.rb +++ b/lib/dyndnsd.rb @@ -85,7 +85,7 @@ module Dyndnsd # malformed myip? begin - IPAddr.new(params["myip"], Socket::AF_INET) + IPAddr.new(params["myip"]) rescue ArgumentError params["myip"] = env["REMOTE_ADDR"] end diff --git a/lib/dyndnsd/generator/bind.rb b/lib/dyndnsd/generator/bind.rb index f45d668..3d03e06 100644 --- a/lib/dyndnsd/generator/bind.rb +++ b/lib/dyndnsd/generator/bind.rb @@ -19,8 +19,10 @@ module Dyndnsd out << "@ IN NS #{@dns}" out << "" zone['hosts'].each do |hostname,ip| + ip = IPAddr.new(ip).native + type = ip.ipv6? ? "AAAA" : "A" name = hostname.chomp('.' + @domain) - out << "#{name} IN A #{ip}" + out << "#{name} IN #{type} #{ip}" end out << "" out << @additional_zone_content