diff options
-rw-r--r-- | perl-install/NEWS | 1 | ||||
-rw-r--r-- | perl-install/fs/mount.pm | 3 | ||||
-rw-r--r-- | perl-install/fs/remote/davfs.pm | 16 |
3 files changed, 20 insertions, 0 deletions
diff --git a/perl-install/NEWS b/perl-install/NEWS index 0d1a0a7a5..e8ff46afe 100644 --- a/perl-install/NEWS +++ b/perl-install/NEWS @@ -1,5 +1,6 @@ - diskdrake o never pass username/password as options with davfs2 + o store credentials in davfs2 secret file before mounting - adduserdrake o now use password weakness display - added password weakness display feature in interactive diff --git a/perl-install/fs/mount.pm b/perl-install/fs/mount.pm index 3e2d36938..f7bea2ae4 100644 --- a/perl-install/fs/mount.pm +++ b/perl-install/fs/mount.pm @@ -73,6 +73,9 @@ sub mount { } elsif ($fs eq 'ext2' && !$b_rdonly) { fsck_ext2($dev, $o_wait_message); } elsif ($fs eq 'davfs2') { + require fs::remote::davfs; + # We have to store credentials in davfs2 secret file before mounting + fs::remote::davfs::mountpoint_credentials_save($where, \@mount_opt); # username and password options should be handled by /etc/davfs2/secrets file @mount_opt = grep { !/^(username|password)=/ } @mount_opt; } diff --git a/perl-install/fs/remote/davfs.pm b/perl-install/fs/remote/davfs.pm index a35955827..8c2062c19 100644 --- a/perl-install/fs/remote/davfs.pm +++ b/perl-install/fs/remote/davfs.pm @@ -26,6 +26,22 @@ sub save_credentials { map { to_double_quoted($_->{mntpoint}, $_->{username}, $_->{password}, $_->{comment}) . "\n" } @$credentials); } +sub mountpoint_credentials_save { + my ($mntpoint, $mount_opt) = @_; + my @entries = read_credentials_raw(); + my $entry = find { $mntpoint eq $_->{mntpoint} } @entries; + die "mountpoint not found" if !$entry; + my %h; + foreach (@$mount_opt) { + my @var = split(/=/); + $h{$var[0]} = $var[1]; + } + foreach my $key qw(username password) { + $entry->{$key} = $h{$key}; + } + save_credentials(\@entries); +} + sub read_credentials_raw { from_double_quoted(cat_(secrets_file())); |