public inbox for pmg-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pmg-devel] [PATCH pmg-api] postinst: migrate/update APT auth config
@ 2022-09-13 12:30 Fabian Grünbichler
  2022-09-13 15:07 ` Stoiko Ivanov
  0 siblings, 1 reply; 2+ messages in thread
From: Fabian Grünbichler @ 2022-09-13 12:30 UTC (permalink / raw)
  To: pmg-devel

missed when switching over to Proxmox::RS::Subscription, which stores
the same info in the product-specific /etc/apt/auth.conf.d/pmg.conf .

the top-level file might contain non-PMG-managed entries, so only remove
entries matching "our" machine.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
 debian/postinst | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/debian/postinst b/debian/postinst
index fdcecbf..2fbb73f 100644
--- a/debian/postinst
+++ b/debian/postinst
@@ -19,6 +19,36 @@ ucf_register_templates() {
     done
 }
 
+migrate_apt_auth_conf() {
+    output=""
+    removed=""
+    match=0
+
+    while read l; do
+	if echo "$l" | grep -q "^machine enterprise.proxmox.com/debian/pmg"; then
+	    match=1
+	elif echo "$l" | grep -q "machine"; then
+	    match=0
+	fi
+
+	if test "$match" = "1"; then
+	    removed="$removed\n$l"
+	else
+	    output="$output\n$l"
+	fi
+    done < /etc/apt/auth.conf
+
+    if test -n "$removed"; then
+	if test ! -e /etc/apt/auth.conf.d/pmg.conf; then
+	    echo "Migrating APT auth config for enterprise.proxmox.com to /etc/apt/auth.conf.d/pmg.conf .."
+	    echo "$removed" > /etc/apt/auth.conf.d/pmg.conf
+	else
+	    echo "Removing stale APT auth config from /etc/apt/auth.conf"
+	fi
+	echo "$output" > /etc/apt/auth.conf
+    fi
+}
+
 case "$1" in
     triggered)
 
@@ -81,6 +111,12 @@ case "$1" in
 	    # rewrite banner
 	    pmgbanner || true
 	fi
+
+	if test ! -e /proxmox_install_mode && test -n "$2" && dpkg --compare-versions "$2" 'lt' '7.1-7~'; then
+	    if test -e /etc/apt/auth.conf ; then
+		migrate_apt_auth_conf
+	    fi
+	fi
     ;;
 
     abort-upgrade)
-- 
2.30.2





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

* Re: [pmg-devel] [PATCH pmg-api] postinst: migrate/update APT auth config
  2022-09-13 12:30 [pmg-devel] [PATCH pmg-api] postinst: migrate/update APT auth config Fabian Grünbichler
@ 2022-09-13 15:07 ` Stoiko Ivanov
  0 siblings, 0 replies; 2+ messages in thread
From: Stoiko Ivanov @ 2022-09-13 15:07 UTC (permalink / raw)
  To: Fabian Grünbichler; +Cc: pmg-devel

Thanks for the patch!

tested on a machine with /etc/apt/auth.conf.d/pmg.conf already present
(and copied over to /etc/apt/auth.conf)

this works as is - the only cosmetic issue (also mentioned in my reply to
the equivalent patch for pve-manager):

On Tue, 13 Sep 2022 14:30:06 +0200
Fabian Grünbichler <f.gruenbichler@proxmox.com> wrote:

> missed when switching over to Proxmox::RS::Subscription, which stores
> the same info in the product-specific /etc/apt/auth.conf.d/pmg.conf .
> 
> the top-level file might contain non-PMG-managed entries, so only remove
> entries matching "our" machine.
> 
> Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
> ---
>  debian/postinst | 36 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
> 
> diff --git a/debian/postinst b/debian/postinst
> index fdcecbf..2fbb73f 100644
> --- a/debian/postinst
> +++ b/debian/postinst
> @@ -19,6 +19,36 @@ ucf_register_templates() {
>      done
>  }
>  
> +migrate_apt_auth_conf() {
> +    output=""
> +    removed=""
> +    match=0
> +
> +    while read l; do
> +	if echo "$l" | grep -q "^machine enterprise.proxmox.com/debian/pmg"; then
> +	    match=1
> +	elif echo "$l" | grep -q "machine"; then
> +	    match=0
> +	fi
> +
> +	if test "$match" = "1"; then
> +	    removed="$removed\n$l"
> +	else
> +	    output="$output\n$l"
> +	fi
> +    done < /etc/apt/auth.conf
> +
> +    if test -n "$removed"; then
> +	if test ! -e /etc/apt/auth.conf.d/pmg.conf; then
> +	    echo "Migrating APT auth config for enterprise.proxmox.com to /etc/apt/auth.conf.d/pmg.conf .."
> +	    echo "$removed" > /etc/apt/auth.conf.d/pmg.conf
> +	else
> +	    echo "Removing stale APT auth config from /etc/apt/auth.conf"
> +	fi
> +	echo "$output" > /etc/apt/auth.conf
this leaves an emtpy /etc/apt/auth.conf (tested on a pmg-install) if the
only auth.conf entry was the one for our hosts
(maybe `test -n "$output" && echo "$output" > /etc/apt/auth.conf`
also maybe printf might save you the trailing newline)

apart from that:

Reviewed-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-by: Stoiko Ivanov <s.ivanov@proxmox.com>

> +    fi
> +}
> +
>  case "$1" in
>      triggered)
>  
> @@ -81,6 +111,12 @@ case "$1" in
>  	    # rewrite banner
>  	    pmgbanner || true
>  	fi
> +
> +	if test ! -e /proxmox_install_mode && test -n "$2" && dpkg --compare-versions "$2" 'lt' '7.1-7~'; then
> +	    if test -e /etc/apt/auth.conf ; then
> +		migrate_apt_auth_conf
> +	    fi
> +	fi
>      ;;
>  
>      abort-upgrade)





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

end of thread, other threads:[~2022-09-13 15:07 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-13 12:30 [pmg-devel] [PATCH pmg-api] postinst: migrate/update APT auth config Fabian Grünbichler
2022-09-13 15:07 ` Stoiko Ivanov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal