diff --git a/hooks/update-zone b/hooks/update-zone index b743d74..ba63abb 100755 --- a/hooks/update-zone +++ b/hooks/update-zone @@ -21,7 +21,6 @@ def atomic_write(path, content) FileUtils.mv(temp_path, path) end - class ZoneData def initialize(data) @data = data @@ -59,26 +58,30 @@ class RdnsData end end -json = JSON.load(File.open(CONTAINER_DATA)) -json["zone"]["serial"] += 1 +def main + json = JSON.load(File.open(CONTAINER_DATA)) + json["zone"]["serial"] += 1 -rdns_zone_template = File.read(TEMPLATE_PATH.join("rdns-zone.erb")) -zone_data = ZoneData.new(json) + rdns_zone_template = File.read(TEMPLATE_PATH.join("rdns-zone.erb")) + zone_data = ZoneData.new(json) -lxc_zone_template = File.read(TEMPLATE_PATH.join("lxc-zone.erb")) -zone = ERB.new(lxc_zone_template, nil, '-').result(zone_data.get_binding) + lxc_zone_template = File.read(TEMPLATE_PATH.join("lxc-zone.erb")) + zone = ERB.new(lxc_zone_template, nil, '-').result(zone_data.get_binding) -v4_subnet = NetAddr::CIDR.create(json["zone"]["v4_subnet"]) -v4_rdns_path = ZONE_PATH.join(v4_subnet.arpa.gsub(/\.$/, "")) -v4_rdns_zone = ERB.new(rdns_zone_template, nil, '-').result(RdnsData.new(json, v4_subnet).get_binding) + v4_subnet = NetAddr::CIDR.create(json["zone"]["v4_subnet"]) + v4_rdns_path = ZONE_PATH.join(v4_subnet.arpa.gsub(/\.$/, "")) + v4_rdns_zone = ERB.new(rdns_zone_template, nil, '-').result(RdnsData.new(json, v4_subnet).get_binding) -v6_subnet = NetAddr::CIDR.create(json["zone"]["v6_subnet"]) -v6_rdns_path = ZONE_PATH.join(v6_subnet.arpa.gsub(/\.$/, "")) -v6_rdns_zone = ERB.new(rdns_zone_template, nil, '-').result(RdnsData.new(json, v6_subnet).get_binding) + v6_subnet = NetAddr::CIDR.create(json["zone"]["v6_subnet"]) + v6_rdns_path = ZONE_PATH.join(v6_subnet.arpa.gsub(/\.$/, "")) + v6_rdns_zone = ERB.new(rdns_zone_template, nil, '-').result(RdnsData.new(json, v6_subnet).get_binding) -atomic_write(LXC_ZONE, zone) -atomic_write(v4_rdns_path, v4_rdns_zone) -atomic_write(v6_rdns_path, v6_rdns_zone) -atomic_write(CONTAINER_DATA, JSON.pretty_generate(json)) + atomic_write(LXC_ZONE, zone) + atomic_write(v4_rdns_path, v4_rdns_zone) + atomic_write(v6_rdns_path, v6_rdns_zone) + atomic_write(CONTAINER_DATA, JSON.pretty_generate(json)) -system("lxc-attach", "-e", "-n", DNS_CONTAINER, "--", "rec_control", "reload-zones") + system("lxc-attach", "-e", "-n", DNS_CONTAINER, "--", "rec_control", "reload-zones") +end + +main diff --git a/templates/lxc-zone.erb b/templates/lxc-zone.erb index 8ecebd4..2e5eb81 100644 --- a/templates/lxc-zone.erb +++ b/templates/lxc-zone.erb @@ -10,6 +10,9 @@ <% if value["cname"] -%> <%= name %> CNAME <%= value["cname"] %> <% end -%> +<% if value["srv"] -%> +<%= name %> SRV <%= value["srv"] %> +<% end -%> <% if value["ipv4"] -%> <%= name %> A <%= ip(value["ipv4"]) %> ipv4.<%= name %> A <%= ip(value["ipv4"]) %>