diff options
Diffstat (limited to 'perl-install/fs')
-rw-r--r-- | perl-install/fs/mount.pm | 3 | ||||
-rw-r--r-- | perl-install/fs/remote/davfs.pm | 16 |
2 files changed, 19 insertions, 0 deletions
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())); |