summaryrefslogtreecommitdiff
path: root/lib/App/Raps2.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/App/Raps2.pm')
-rw-r--r--lib/App/Raps2.pm31
1 files changed, 19 insertions, 12 deletions
diff --git a/lib/App/Raps2.pm b/lib/App/Raps2.pm
index 073ff33..d173adc 100644
--- a/lib/App/Raps2.pm
+++ b/lib/App/Raps2.pm
@@ -6,7 +6,7 @@ use 5.010;
use App::Raps2::Password;
use App::Raps2::UI;
-use Carp qw(confess);
+use Carp qw(cluck confess);
use Config::Tiny;
use File::BaseDir qw(config_home data_home);
use File::Path qw(make_path);
@@ -155,15 +155,10 @@ sub load_defaults {
return;
}
-sub cost {
- my ( $self, $cost ) = @_;
+sub conf {
+ my ( $self, $key ) = @_;
- if ($cost) {
- $self->{default}{cost} = $cost;
- $self->write_config();
- }
-
- return $self->{default}{cost};
+ return $self->{default}{$key};
}
sub pw {
@@ -187,6 +182,18 @@ sub ui {
return $self->{ui};
}
+sub generate_password {
+ my ($self) = @_;
+
+ open( my $pwgen, q{-|}, $self->conf('pwgen_cmd') ) or return;
+ my $password = <$pwgen>;
+ close($pwgen) or cluck("Cannot close pwgen pipe: $!");
+
+ chomp $password;
+
+ return $password;
+}
+
sub pw_save {
my ( $self, %data ) = @_;
@@ -236,9 +243,9 @@ sub pw_load {
# use the one of the master password
return {
- url => $key->{url},
- login => $key->{login},
- cost => $key->{cost} // $self->{master_cost},
+ url => $key->{url},
+ login => $key->{login},
+ cost => $key->{cost} // $self->{master_cost},
password => $self->pw->decrypt(
data => $key->{hash},
salt => $key->{salt},