App-PasswordManager
view release on metacpan or search on metacpan
{
"abstract" : "Simple password manager for adding, listing, editing, deleting, and copying passwords to the clipboard",
"author" : [
"Luiz Felipe de Castro Vilas Boas <luizfelipecastrovb@gmail.com>"
],
"dynamic_config" : 1,
"generated_by" : "ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 2.150010",
"license" : [
"mit"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
---
abstract: 'Simple password manager for adding, listing, editing, deleting, and copying passwords to the clipboard'
author:
- 'Luiz Felipe de Castro Vilas Boas <luizfelipecastrovb@gmail.com>'
build_requires:
ExtUtils::MakeMaker: '0'
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 1
generated_by: 'ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 2.150010'
license: mit
meta-spec:
Makefile.PL view on Meta::CPAN
WriteMakefile(
NAME => 'App::PasswordManager',
VERSION_FROM => 'lib/App/PasswordManager.pm',
PREREQ_PM => {
'Crypt::PBKDF2' => 0,
'File::HomeDir' => 0,
'File::Spec' => 0,
'JSON' => 0,
},
ABSTRACT => 'Simple password manager for adding, listing, editing, deleting, and copying passwords to the clipboard',
AUTHOR => 'Luiz Felipe de Castro Vilas Boas <luizfelipecastrovb@gmail.com>',
LICENSE => 'MIT',
META_MERGE => {
resources => {
repository => 'https://gitlab.com/olooeez/app-passmanager',
},
},
INSTALLDIRS => 'site',
EXE_FILES => ['script/password_manager'],
);
# App-PasswordManager
`App::PasswordManager` is a command-line password manager written in Perl. It allows users to securely add, list, edit, remove, and copy passwords. The passwords are stored in an encrypted format using PBKDF2 and saved in a JSON file located in the u...
## Features
- **Add Password**: Add a new password entry for a specific login.
- **List Passwords**: Display a list of all stored logins.
- **Edit Password**: Edit the password for an existing login.
- **Remove Password**: Delete a password entry for a specific login.
- **Copy to Clipboard**: Copy the password to the clipboard for easy use.
- **Encrypted Storage**: Passwords are securely stored in an encrypted format in a JSON file in the user's home directory.
## Installation
You can install `App::PasswordManager` manually.
### Manual Installation
1. Clone or download the repository.
2. Navigate to the project directory.
### Command-Line Tool
After installation, you can use the password manager via the command-line interface. The following options are available:
```
password_manager --add <login> <password> # Add a new password
password_manager --list # List all passwords
password_manager --edit <login> <new_password> # Edit a password
password_manager --remove <login> # Remove a password
password_manager --copy <login> # Copy the password to the clipboard
```
For example, to add a password:
```
password_manager --add "user1" "mysecretpassword"
```
To list all passwords:
```
password_manager --edit "user1" "newpassword"
```
To remove a password:
```
password_manager --remove "user1"
```
To copy a password to the clipboard:
```
password_manager --copy "user1"
```
## Dependencies
- `Crypt::PBKDF2`
- `File::HomeDir`
- `File::Spec`
lib/App/PasswordManager.pm view on Meta::CPAN
my ( $self, $login, $new_password ) = @_;
die "Login '$login' not found!\n" unless exists $self->{passwords}{$login};
my $hashed_password = $self->{pbkdf2}->generate( $new_password, $self->{salt} );
$self->{passwords}{$login}{password} = $hashed_password;
$self->{passwords}{$login}{salt} = $self->{salt};
$self->_save_passwords();
return 1;
}
sub copy_to_clipboard {
my ( $self, $login ) = @_;
die "Login '$login' not found!\n" unless exists $self->{passwords}{$login};
my $password = $self->{passwords}{$login}{password};
open my $clip, '|-', 'xclip -selection clipboard'
or die "Could not copy: $!";
print $clip $password;
close $clip;
return 1;
}
sub _load_passwords {
my ($self) = @_;
if ( -e $self->{data_file} ) {
open my $fh, '<', $self->{data_file} or die "Could not open file '$self->{data_file}': $!";
lib/App/PasswordManager.pm view on Meta::CPAN
close $fh;
}
1;
__END__
=encoding utf-8
=head1 NAME
password_manager - Simple password manager for adding, listing, editing, deleting, and copying passwords to the clipboard.
=head1 SYNOPSIS
password_manager [options]
=head1 DESCRIPTION
This script allows you to manage passwords in a simple way. Available operations include adding a new password, listing stored passwords, deleting an existing password, editing a password, and copying a password to the clipboard.
=head1 OPTIONS
=over 4
=item --add <login> <password>
Add a new password associated with the specified login.
Example:
lib/App/PasswordManager.pm view on Meta::CPAN
=item --edit <login> <new_password>
Edit the password associated with the specified login.
Example:
password_manager --edit "my_login" "new_password"
=item --copy <login>
Copy the password associated with the specified login to the clipboard.
Example:
password_manager --copy "my_login"
=item --help
Display this help message.
=back
lib/App/PasswordManager.pm view on Meta::CPAN
password_manager --list
Delete a password:
password_manager --delete "my_login"
Edit a password:
password_manager --edit "my_login" "new_password"
Copy a password to the clipboard:
password_manager --copy "my_login"
=head1 ERRORS
If there is an error during any operation (such as adding, editing, or removing passwords), an error message will be displayed indicating the issue.
=head1 DEPENDENCIES
This script requires the L<Getopt::Long> module for command-line argument handling and the L<App::PasswordManager> module for password management operations.
script/password_manager view on Meta::CPAN
sub show_help {
print <<"END_HELP";
Usage: $0 [options]
Options:
--add <login> <password> Add a new password
--list List all stored logins
--delete <login> Delete a password for a specific login
--edit <login> <new_password> Edit an existing password
--copy <login> Copy password to clipboard
--help Show this help message
Examples:
$0 --add "my_login" "my_password"
$0 --list
$0 --delete "my_login"
$0 --edit "my_login" "new_password"
$0 --copy "my_login"
END_HELP
exit;
script/password_manager view on Meta::CPAN
my ($login, $new_password) = @edit_args;
eval {
$manager->edit_password($login, $new_password);
print "Password for '$login' updated successfully.\n";
};
if ($@) {
print "Error: $@\n";
}
} elsif ($copy) {
eval {
$manager->copy_to_clipboard($copy);
print "Password for '$copy' copied to clipboard.\n";
};
if ($@) {
print "Error: $@\n";
}
} else {
print "No valid options provided. Use --help for usage information.\n";
exit 1;
}
( run in 2.454 seconds using v1.01-cache-2.11-cpan-df04353d9ac )