From: Dietmar Maurer Date: Thu, 25 Jul 2013 07:58:14 +0000 (+0200) Subject: add parser for "/etc/apt/auth.conf" X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=commitdiff_plain;h=6c3aef09cb56c7fa411b4c6c806d96a2fade1dd9 add parser for "/etc/apt/auth.conf" bump version to 3.0-5 --- diff --git a/Makefile b/Makefile index 2cff805..4c7aaaf 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ RELEASE=3.0 VERSION=3.0 -PKGREL=4 +PKGREL=5 PACKAGE=libpve-common-perl diff --git a/data/PVE/INotify.pm b/data/PVE/INotify.pm index 850668a..f18a10b 100644 --- a/data/PVE/INotify.pm +++ b/data/PVE/INotify.pm @@ -973,4 +973,74 @@ sub read_iscsi_initiatorname { register_file('initiatorname', "/etc/iscsi/initiatorname.iscsi", \&read_iscsi_initiatorname); +sub read_apt_auth { + my ($filename, $fd) = @_; + + local $/; + + my $raw = <$fd>; + + $raw =~ s/^\s+//; + + + my @tokens = split(/\s+/, $raw); + + my $data = {}; + + my $machine; + while (defined(my $tok = shift @tokens)) { + + $machine = shift @tokens if $tok eq 'machine'; + next if !$machine; + $data->{$machine} = {} if !$data->{$machine}; + + $data->{$machine}->{login} = shift @tokens if $tok eq 'login'; + $data->{$machine}->{password} = shift @tokens if $tok eq 'password'; + }; + + return $data; +} + +my $format_apt_auth_data = sub { + my $data = shift; + + my $raw = ''; + + foreach my $machine (sort keys %$data) { + my $d = $data->{$machine}; + $raw .= "machine $machine\n"; + $raw .= " login $d->{login}\n" if $d->{login}; + $raw .= " password $d->{password}\n" if $d->{password}; + $raw .= "\n"; + } + + return $raw; +}; + +sub write_apt_auth { + my ($filename, $fh, $data) = @_; + + my $raw = &$format_apt_auth_data($data); + + die "write failed: $!" unless print $fh "$raw\n"; + + return $data; +} + +sub update_apt_auth { + my ($filename, $fh, $data) = @_; + + my $orig = read_apt_auth($filename, $fh); + + foreach my $machine (keys %$data) { + $orig->{$machine} = $data->{$machine}; + } + + return &$format_apt_auth_data($orig); +} + +register_file('apt-auth', "/etc/apt/auth.conf", + \&read_apt_auth, \&write_apt_auth, + \&update_apt_auth); + 1; diff --git a/debian/changelog b/debian/changelog index 4cbda1d..a728616 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libpve-common-perl (3.0-5) unstable; urgency=low + + * add parser for "/etc/apt/auth.conf" + + -- Proxmox Support Team Thu, 25 Jul 2013 09:57:55 +0200 + libpve-common-perl (3.0-4) unstable; urgency=low * fix bug #381: use persistent reservation file for ports