all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pmg-devel] [PATCH pmg-api v4] fix #4410: Remove non-null host bits from CIDR when writing postfix config
@ 2022-12-29  9:45 Christoph Heiss
  2022-12-29 16:54 ` [pmg-devel] applied: " Stoiko Ivanov
  0 siblings, 1 reply; 2+ messages in thread
From: Christoph Heiss @ 2022-12-29  9:45 UTC (permalink / raw)
  To: pmg-devel

This will drop non-null host bits from `mynetworks` CIDRs when writing
the `main.cf` postfix template.
Backwards-compatibility with old entries in `/etc/pmg/mynetworks` is
thus also preserved.

Add an additional comment to the mynetworks API, indicating that unused
fields can/should be dropped with the next PMG version.

No GUI changes. The entries are written to `/etc/pmg/mynetworks` as the
user enters them. Suggested by Stoiko, see discussion in v2 thread [0].

[0] https://lists.proxmox.com/pipermail/pmg-devel/2022-December/002247.html

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---

 Changes v3 -> v4:
 * Added warning on CIDR parse failures

 Changes v2 -> v3:
 * Dropped validation of host-bits of new entries on creation
 * Entries are now again written verbatim to `/etc/pmg/mynetworks`
 * Host bits are now dropped when writing the postfix template

 Changes v1 -> v2:
 * Reverted unneeded loop iterator change
 * Display CIDRs in GUI as the user entered them

 src/PMG/Config.pm | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/PMG/Config.pm b/src/PMG/Config.pm
index 9ba5c76..a0b1866 100755
--- a/src/PMG/Config.pm
+++ b/src/PMG/Config.pm
@@ -8,6 +8,7 @@ use Data::Dumper;
 use PVE::Tools;
 use PVE::JSONSchema qw(get_standard_option);
 use PVE::SectionConfig;
+use PVE::Network;

 use base qw(PVE::SectionConfig);

@@ -1011,6 +1012,7 @@ sub read_pmg_mynetworks {
 	    if ($line =~ m!^((?:$IPV4RE|$IPV6RE))/(\d+)\s*(?:#(.*)\s*)?$!) {
 		my ($network, $prefix_size, $comment) = ($1, $2, $3);
 		my $cidr = "$network/${prefix_size}";
+		# FIXME: Drop unused `network_address` and `prefix_size` with PMG 8.0
 		$mynetworks->{$cidr} = {
 		    cidr => $cidr,
 		    network_address => $network,
@@ -1337,10 +1339,15 @@ sub get_template_vars {

     my $netlist = PVE::INotify::read_file('mynetworks');
     foreach my $cidr (keys %$netlist) {
-	if ($cidr =~ m/^($IPV6RE)\/(\d+)$/) {
-	    $mynetworks->{"[$1]/$2"} = 1;
+	my $ip = PVE::Network::IP_from_cidr($cidr);
+
+	if (!$ip) {
+	    warn "failed to parse mynetworks entry '$cidr', ignoring\n";
+	} elsif ($ip->version() == 4) {
+	    $mynetworks->{$ip->prefix()} = 1;
 	} else {
-	    $mynetworks->{$cidr} = 1;
+	    my $address = '[' . $ip->short() . ']/' . $ip->prefixlen();
+	    $mynetworks->{$address} = 1;
 	}
     }

--
2.30.2





^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pmg-devel] applied: [PATCH pmg-api v4] fix #4410: Remove non-null host bits from CIDR when writing postfix config
  2022-12-29  9:45 [pmg-devel] [PATCH pmg-api v4] fix #4410: Remove non-null host bits from CIDR when writing postfix config Christoph Heiss
@ 2022-12-29 16:54 ` Stoiko Ivanov
  0 siblings, 0 replies; 2+ messages in thread
From: Stoiko Ivanov @ 2022-12-29 16:54 UTC (permalink / raw)
  To: Christoph Heiss; +Cc: pmg-devel

Thanks for the patch!

On Thu, 29 Dec 2022 10:45:17 +0100
Christoph Heiss <c.heiss@proxmox.com> wrote:

> This will drop non-null host bits from `mynetworks` CIDRs when writing
> the `main.cf` postfix template.
> Backwards-compatibility with old entries in `/etc/pmg/mynetworks` is
> thus also preserved.
> 
> Add an additional comment to the mynetworks API, indicating that unused
> fields can/should be dropped with the next PMG version.
> 
> No GUI changes. The entries are written to `/etc/pmg/mynetworks` as the
> user enters them. Suggested by Stoiko, see discussion in v2 thread [0].
> 
> [0] https://lists.proxmox.com/pipermail/pmg-devel/2022-December/002247.html
> 
> Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
> ---
> 
>  Changes v3 -> v4:
>  * Added warning on CIDR parse failures
> 
>  Changes v2 -> v3:
>  * Dropped validation of host-bits of new entries on creation
>  * Entries are now again written verbatim to `/etc/pmg/mynetworks`
>  * Host bits are now dropped when writing the postfix template
> 
>  Changes v1 -> v2:
>  * Reverted unneeded loop iterator change
>  * Display CIDRs in GUI as the user entered them
> 
>  src/PMG/Config.pm | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/src/PMG/Config.pm b/src/PMG/Config.pm
> index 9ba5c76..a0b1866 100755
> --- a/src/PMG/Config.pm
> +++ b/src/PMG/Config.pm
> @@ -8,6 +8,7 @@ use Data::Dumper;
>  use PVE::Tools;
>  use PVE::JSONSchema qw(get_standard_option);
>  use PVE::SectionConfig;
> +use PVE::Network;
> 
>  use base qw(PVE::SectionConfig);
> 
> @@ -1011,6 +1012,7 @@ sub read_pmg_mynetworks {
>  	    if ($line =~ m!^((?:$IPV4RE|$IPV6RE))/(\d+)\s*(?:#(.*)\s*)?$!) {
>  		my ($network, $prefix_size, $comment) = ($1, $2, $3);
>  		my $cidr = "$network/${prefix_size}";
> +		# FIXME: Drop unused `network_address` and `prefix_size` with PMG 8.0
>  		$mynetworks->{$cidr} = {
>  		    cidr => $cidr,
>  		    network_address => $network,
> @@ -1337,10 +1339,15 @@ sub get_template_vars {
> 
>      my $netlist = PVE::INotify::read_file('mynetworks');
>      foreach my $cidr (keys %$netlist) {
> -	if ($cidr =~ m/^($IPV6RE)\/(\d+)$/) {
> -	    $mynetworks->{"[$1]/$2"} = 1;
> +	my $ip = PVE::Network::IP_from_cidr($cidr);
> +
> +	if (!$ip) {
> +	    warn "failed to parse mynetworks entry '$cidr', ignoring\n";
> +	} elsif ($ip->version() == 4) {
> +	    $mynetworks->{$ip->prefix()} = 1;
>  	} else {
> -	    $mynetworks->{$cidr} = 1;
> +	    my $address = '[' . $ip->short() . ']/' . $ip->prefixlen();
> +	    $mynetworks->{$address} = 1;
>  	}
>      }
> 
> --
> 2.30.2
> 
> 
> 
> _______________________________________________
> pmg-devel mailing list
> pmg-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pmg-devel
> 
> 





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-12-29 16:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-29  9:45 [pmg-devel] [PATCH pmg-api v4] fix #4410: Remove non-null host bits from CIDR when writing postfix config Christoph Heiss
2022-12-29 16:54 ` [pmg-devel] applied: " Stoiko Ivanov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal