[pve-devel] [PATCH pve-storage 2/3] CIFSPlugin.pm: fix crediential handling using new on_update_hook
Dietmar Maurer
dietmar at proxmox.com
Thu Feb 20 12:33:59 CET 2020
---
PVE/Storage/CIFSPlugin.pm | 32 ++++++++++++++++++++++++++------
1 file changed, 26 insertions(+), 6 deletions(-)
diff --git a/PVE/Storage/CIFSPlugin.pm b/PVE/Storage/CIFSPlugin.pm
index 6115a96..6c8cd72 100644
--- a/PVE/Storage/CIFSPlugin.pm
+++ b/PVE/Storage/CIFSPlugin.pm
@@ -34,6 +34,15 @@ sub cifs_cred_file_name {
return "/etc/pve/priv/${storeid}.cred";
}
+sub cifs_delete_credentials {
+ my ($storeid) = @_;
+
+ my $cred_file = cifs_cred_file_name($storeid);
+ if (-f $cred_file) {
+ unlink($cred_file) or warn "removing cifs credientials '$cred_file' failed: $!\n";
+ }
+}
+
sub cifs_set_credentials {
my ($password, $storeid) = @_;
@@ -145,18 +154,29 @@ sub check_config {
sub on_add_hook {
my ($class, $storeid, $scfg, %param) = @_;
- if (my $password = $param{password}) {
- cifs_set_credentials($password, $storeid);
+ if (defined($param{password})) {
+ cifs_set_credentials($param{password}, $storeid);
+ } else {
+ cifs_delete_credentials($storeid);
+ }
+}
+
+sub on_update_hook {
+ my ($class, $storeid, $scfg, %param) = @_;
+
+ return if !exists($param{password});
+
+ if (defined($param{password})) {
+ cifs_set_credentials($param{password}, $storeid);
+ } else {
+ cifs_delete_credentials($storeid);
}
}
sub on_delete_hook {
my ($class, $storeid, $scfg) = @_;
- my $cred_file = cifs_cred_file_name($storeid);
- if (-f $cred_file) {
- unlink($cred_file) or warn "removing cifs credientials '$cred_file' failed: $!\n";
- }
+ cifs_delete_credentials($storeid);
}
sub status {
--
2.20.1
More information about the pve-devel
mailing list