App-PasswordManager

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

{
   "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",

META.yml  view on Meta::CPAN

---
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'],
);

README.md  view on Meta::CPAN

# 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.

README.md  view on Meta::CPAN


### 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:

README.md  view on Meta::CPAN

```
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 )