mirror of
https://git.proxmox.com/git/pve-common
synced 2025-08-14 17:22:24 +00:00
tools: download from url: add option to allow overriding existing files
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
f52ecff957
commit
06c1c13f1c
@ -1842,6 +1842,7 @@ sub safe_compare {
|
|||||||
|
|
||||||
|
|
||||||
# opts is a hash ref with the following known properties
|
# opts is a hash ref with the following known properties
|
||||||
|
# allow_overwrite - if 1, overwriting existing files is allowed, use with care. Default to false
|
||||||
# hash_required - if 1, at least one checksum has to be specified otherwise an error will be thrown
|
# hash_required - if 1, at least one checksum has to be specified otherwise an error will be thrown
|
||||||
# http_proxy
|
# http_proxy
|
||||||
# https_proxy
|
# https_proxy
|
||||||
@ -1862,17 +1863,22 @@ sub download_file_from_url {
|
|||||||
|
|
||||||
print "downloading $url to $dest\n";
|
print "downloading $url to $dest\n";
|
||||||
|
|
||||||
if (-f $dest && $checksum_algorithm) {
|
if (-f $dest) {
|
||||||
print "calculating checksum of existing file...";
|
if ($checksum_algorithm) {
|
||||||
my $checksum_got = get_file_hash($checksum_algorithm, $dest);
|
print "calculating checksum of existing file...";
|
||||||
|
my $checksum_got = get_file_hash($checksum_algorithm, $dest);
|
||||||
|
|
||||||
if (lc($checksum_got) eq lc($checksum_expected)) {
|
if (lc($checksum_got) eq lc($checksum_expected)) {
|
||||||
print "OK, got correct file already, no need to download\n";
|
print "OK, got correct file already, no need to download\n";
|
||||||
return;
|
return;
|
||||||
} else {
|
} elsif ($opts->{allow_overwrite}) {
|
||||||
# we could re-download, but may not be safe so just abort for now..
|
print "checksum mismatch: got '$checksum_got' != expect '$checksum_expected', re-download\n";
|
||||||
print "\n"; # the front end expects the error to reside at the last line without any noise
|
} else {
|
||||||
die "checksum mismatch: got '$checksum_got' != expect '$checksum_expected', aborting\n";
|
print "\n"; # the front end expects the error to reside at the last line without any noise
|
||||||
|
die "checksum mismatch: got '$checksum_got' != expect '$checksum_expected', aborting\n";
|
||||||
|
}
|
||||||
|
} elsif (!$opts->{allow_overwrite}) {
|
||||||
|
die "refusing to override existing file '$dest'\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user