From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 34A2568F3D for ; Fri, 28 Aug 2020 14:37:52 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E422221110 for ; Fri, 28 Aug 2020 14:37:19 +0200 (CEST) Received: from mailpro.odiso.net (mailpro.odiso.net [89.248.211.110]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 98E1320E5A for ; Fri, 28 Aug 2020 14:37:01 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mailpro.odiso.net (Postfix) with ESMTP id D86C415F9E19; Fri, 28 Aug 2020 14:36:58 +0200 (CEST) Received: from mailpro.odiso.net ([127.0.0.1]) by localhost (mailpro.odiso.net [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id sgKeej4gd967; Fri, 28 Aug 2020 14:36:58 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mailpro.odiso.net (Postfix) with ESMTP id BFA2515F9E16; Fri, 28 Aug 2020 14:36:58 +0200 (CEST) X-Virus-Scanned: amavisd-new at mailpro.odiso.com Received: from mailpro.odiso.net ([127.0.0.1]) by localhost (mailpro.odiso.net [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id d8vcQtIJX0ew; Fri, 28 Aug 2020 14:36:58 +0200 (CEST) Received: from pve.fritz.box (unknown [213.211.148.86]) by mailpro.odiso.net (Postfix) with ESMTPSA id 8E31D15F9E19; Fri, 28 Aug 2020 14:36:58 +0200 (CEST) From: Alexandre Derumier To: pve-devel@lists.proxmox.com Date: Fri, 28 Aug 2020 14:36:49 +0200 Message-Id: <20200828123649.11125-22-aderumier@odiso.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200828123649.11125-1-aderumier@odiso.com> References: <20200828123649.11125-1-aderumier@odiso.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SPAM-LEVEL: Spam detection results: 0 AWL 0.000 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [in-addr.arpa, subnets.pm, powerdnsplugin.pm, subnetplugin.pm] Subject: [pve-devel] [PATCH v7 pve-network 21/21] dns: fix reverse dns X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Aug 2020 12:37:52 -0000 --- PVE/Network/SDN/Dns/PowerdnsPlugin.pm | 12 +++---- PVE/Network/SDN/SubnetPlugin.pm | 1 + PVE/Network/SDN/Subnets.pm | 50 ++++++++++++++++++--------- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/PVE/Network/SDN/Dns/PowerdnsPlugin.pm b/PVE/Network/SDN/Dns/= PowerdnsPlugin.pm index 8c5dd90..f02c2f1 100644 --- a/PVE/Network/SDN/Dns/PowerdnsPlugin.pm +++ b/PVE/Network/SDN/Dns/PowerdnsPlugin.pm @@ -79,12 +79,12 @@ sub add_ptr_record { my $key =3D $plugin_config->{key}; my $ttl =3D $plugin_config->{ttl} ? $plugin_config->{ttl} : 14400; my $headers =3D ['Content-Type' =3D> 'application/json; charset=3DUT= F-8', 'X-API-Key' =3D> $key]; + $hostname .=3D "."; =20 - my $reverseip =3D join(".", reverse(split(/\./, $ip)))."in-addr.arpa= ."; - my $fqdn =3D $hostname.".".$zone."."; + my $reverseip =3D join(".", reverse(split(/\./, $ip))).".in-addr.arp= a."; my $type =3D "PTR"; =20 - my $record =3D { content =3D> $fqdn,=20 + my $record =3D { content =3D> $hostname,=20 disabled =3D> JSON::false,=20 name =3D> $reverseip,=20 type =3D> $type,=20 @@ -109,13 +109,13 @@ sub add_ptr_record { } =20 sub del_a_record { - my ($class, $plugin_config, $zone, $hostname) =3D @_; + my ($class, $plugin_config, $zone, $hostname, $ip) =3D @_; =20 my $url =3D $plugin_config->{url}; my $key =3D $plugin_config->{key}; my $headers =3D ['Content-Type' =3D> 'application/json; charset=3DUT= F-8', 'X-API-Key' =3D> $key]; my $fqdn =3D $hostname.".".$zone."."; - my $type =3D "PTR"; + my $type =3D Net::IP::ip_is_ipv6($ip) ? "AAAA" : "A"; =20 my $rrset =3D { name =3D> $fqdn,=20 type =3D> $type,=20 @@ -140,7 +140,7 @@ sub del_ptr_record { my $key =3D $plugin_config->{key}; my $headers =3D ['Content-Type' =3D> 'application/json; charset=3DUT= F-8', 'X-API-Key' =3D> $key]; =20 - my $reverseip =3D join(".", reverse(split(/\./, $ip)))."in-addr.arpa= ."; + my $reverseip =3D join(".", reverse(split(/\./, $ip))).".in-addr.arp= a."; my $type =3D "PTR"; =20 my $rrset =3D { name =3D> $reverseip,=20 diff --git a/PVE/Network/SDN/SubnetPlugin.pm b/PVE/Network/SDN/SubnetPlug= in.pm index 6237867..b236c3f 100644 --- a/PVE/Network/SDN/SubnetPlugin.pm +++ b/PVE/Network/SDN/SubnetPlugin.pm @@ -142,6 +142,7 @@ sub on_update_hook { raise_param_exc({ dnszone =3D> "missing dns zone"}) if $dns && !$dns= zone; raise_param_exc({ reversedns =3D> "missing dns provider"}) if $rever= sednszone && !$reversedns; raise_param_exc({ reversednszone =3D> "missing dns zone"}) if $rever= sedns && !$reversednszone; + raise_param_exc({ reversedns =3D> "missing forward dns zone"}) if $r= eversednszone && !$dnszone; =20 if ($ipam) { my $ipam_cfg =3D PVE::Network::SDN::Ipams::config(); diff --git a/PVE/Network/SDN/Subnets.pm b/PVE/Network/SDN/Subnets.pm index d20af9e..626b71d 100644 --- a/PVE/Network/SDN/Subnets.pm +++ b/PVE/Network/SDN/Subnets.pm @@ -87,24 +87,33 @@ my $verify_dns_zone =3D sub { }; =20 my $add_dns_record =3D sub { - my ($zone, $dns, $hostname, $dnszoneprefix, $ip, $reverse) =3D @_; - - return if !$zone || !$dns || !$hostname || !$ip; + my ($zone, $dns, $hostname, $dnszoneprefix, $ip) =3D @_; + return if !$zone || !$dns || !$hostname || !$ip; =20 $hostname .=3D ".$dnszoneprefix" if $dnszoneprefix; =20 my $dns_cfg =3D PVE::Network::SDN::Dns::config(); my $plugin_config =3D $dns_cfg->{ids}->{$dns}; my $plugin =3D PVE::Network::SDN::Dns::Plugin->lookup($plugin_config= ->{type}); - if($reverse) { - $plugin->add_ptr_record($plugin_config, $zone, $hostname, $ip); - } else { - $plugin->add_a_record($plugin_config, $zone, $hostname, $ip); - } + $plugin->add_a_record($plugin_config, $zone, $hostname, $ip); + +}; + +my $add_dns_ptr_record =3D sub { + my ($reversezone, $zone, $dns, $hostname, $dnszoneprefix, $ip) =3D @= _; + + return if !$zone || !$reversezone || !$dns || !$hostname || !$ip; + + $hostname .=3D ".$dnszoneprefix" if $dnszoneprefix; + $hostname .=3D ".$zone"; + my $dns_cfg =3D PVE::Network::SDN::Dns::config(); + my $plugin_config =3D $dns_cfg->{ids}->{$dns}; + my $plugin =3D PVE::Network::SDN::Dns::Plugin->lookup($plugin_config= ->{type}); + $plugin->add_ptr_record($plugin_config, $reversezone, $hostname, $ip= ); }; =20 my $del_dns_record =3D sub { - my ($zone, $dns, $hostname, $dnszoneprefix, $ip, $reverse) =3D @_; + my ($zone, $dns, $hostname, $dnszoneprefix, $ip) =3D @_; =20 return if !$zone || !$dns || !$hostname || !$ip; =20 @@ -113,11 +122,18 @@ my $del_dns_record =3D sub { my $dns_cfg =3D PVE::Network::SDN::Dns::config(); my $plugin_config =3D $dns_cfg->{ids}->{$dns}; my $plugin =3D PVE::Network::SDN::Dns::Plugin->lookup($plugin_config= ->{type}); - if($reverse) { - $plugin->del_ptr_record($plugin_config, $zone, $ip); - } else { - $plugin->del_a_record($plugin_config, $zone, $hostname); - } + $plugin->del_a_record($plugin_config, $zone, $hostname, $ip); +}; + +my $del_dns_ptr_record =3D sub { + my ($reversezone, $dns, $ip) =3D @_; + + return if !$reversezone || !$dns || !$ip; + + my $dns_cfg =3D PVE::Network::SDN::Dns::config(); + my $plugin_config =3D $dns_cfg->{ids}->{$dns}; + my $plugin =3D PVE::Network::SDN::Dns::Plugin->lookup($plugin_config= ->{type}); + $plugin->del_ptr_record($plugin_config, $reversezone, $ip); }; =20 sub next_free_ip { @@ -152,7 +168,7 @@ sub next_free_ip { #add dns &$add_dns_record($dnszone, $dns, $hostname, $dnszoneprefix, $ip); #add reverse dns - &$add_dns_record($reversednszone, $reversedns, $hostname, $dnszoneprefi= x, $ip, 1); + &$add_dns_ptr_record($reversednszone, $dnszone, $reversedns, $hostname,= $dnszoneprefix, $ip); }; if ($@) { #rollback @@ -195,7 +211,7 @@ sub add_ip { #add dns &$add_dns_record($dnszone, $dns, $hostname, $dnszoneprefix, $ip); #add reverse dns - &$add_dns_record($reversednszone, $reversedns, $hostname, $dnszoneprefi= x, $ip, 1); + &$add_dns_ptr_record($reversednszone, $dnszone, $reversedns, $hostname,= $dnszoneprefix, $ip); }; if ($@) { #rollback @@ -231,7 +247,7 @@ sub del_ip { =20 eval { &$del_dns_record($dnszone, $dns, $hostname, $dnszoneprefix, $ip); - &$del_dns_record($reversednszone, $reversedns, $hostname, $dnszoneprefi= x, $ip, 1); + &$del_dns_ptr_record($reversednszone, $reversedns, $ip); }; if ($@) { warn $@; --=20 2.20.1