diff --git a/PVE/API2/Storage/Content.pm b/PVE/API2/Storage/Content.pm index eac6343..349231d 100644 --- a/PVE/API2/Storage/Content.pm +++ b/PVE/API2/Storage/Content.pm @@ -92,6 +92,12 @@ __PACKAGE__->register_method ({ type => 'string', optional => 1, }, + encrypted => { + description => "If whole backup is encrypted, value is the fingerprint or '1' " + ." if encrypted. Only useful for the Proxmox Backup Server storage type.", + type => 'string', + optional => 1, + }, verification => { description => "Last backup verification result, only useful for PBS storages.", type => 'object', diff --git a/PVE/Storage/PBSPlugin.pm b/PVE/Storage/PBSPlugin.pm index 1f576d3..d1db4a9 100644 --- a/PVE/Storage/PBSPlugin.pm +++ b/PVE/Storage/PBSPlugin.pm @@ -528,6 +528,24 @@ sub list_images { return $res; } +my sub snapshot_files_encrypted { + my ($files) = @_; + return 0 if !$files; + + my $any; + my $all = 1; + for my $file (@$files) { + my $fn = $file->{filename}; + next if $fn eq 'client.log.blob' || $fn eq 'index.json.blob'; + + my $crypt = $file->{'crypt-mode'}; + + $all = 0 if !$crypt || $crypt ne 'encrypt'; + $any ||= $crypt eq 'encrypt'; + } + return $any && $all; +} + sub list_volumes { my ($class, $storeid, $scfg, $vmid, $content_types) = @_; @@ -560,6 +578,11 @@ sub list_volumes { $info->{verification} = $item->{verification} if defined($item->{verification}); $info->{notes} = $item->{comment} if defined($item->{comment}); + if (defined($item->{fingerprint})) { + $info->{encrypted} = $item->{fingerprint}; + } elsif (snapshot_files_encrypted($item->{files})) { + $info->{encrypted} = '1'; + } push @$res, $info; }