mpw 3.2.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.gitignore +1 -0
 - data/.travis.yml +14 -0
 - data/CHANGELOG.md +56 -0
 - data/Gemfile +9 -9
 - data/README.md +99 -80
 - data/VERSION +1 -1
 - data/bin/mpw +23 -193
 - data/bin/mpw-add +61 -0
 - data/bin/mpw-config +108 -0
 - data/bin/mpw-copy +71 -0
 - data/bin/mpw-delete +66 -0
 - data/bin/mpw-export +70 -0
 - data/bin/mpw-genpwd +50 -0
 - data/bin/mpw-import +61 -0
 - data/bin/mpw-list +66 -0
 - data/bin/mpw-update +70 -0
 - data/bin/mpw-wallet +116 -0
 - data/i18n/en.yml +70 -32
 - data/i18n/fr.yml +70 -32
 - data/lib/mpw/cli.rb +333 -220
 - data/lib/mpw/config.rb +53 -40
 - data/lib/mpw/item.rb +13 -13
 - data/lib/mpw/mpw.rb +75 -98
 - data/mpw.gemspec +9 -9
 - data/templates/add_form.erb +9 -0
 - data/templates/update_form.erb +17 -0
 - data/test/files/fixtures.yml +0 -4
 - data/test/init.rb +19 -0
 - data/test/test_config.rb +64 -0
 - data/test/test_item.rb +42 -88
 - data/test/test_mpw.rb +88 -139
 - data/test/test_translate.rb +31 -0
 - data/test/tests.rb +4 -1
 - metadata +96 -27
 - data/CHANGELOG +0 -13
 - data/test/files/test_import.csv +0 -3
 - data/test/files/test_import.yml +0 -23
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 449a8603fbd577dd5cb93ef7beefb0b8e9c45825
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 763ee9163b7d0abac719853bdf48fa3b4a10ec7d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f843a0c0918d63864f01c7929736f75f60bbe97ac3de0b0588b10bc90b50e87abf7f155622653c19947caa11648ac1147e88a38ff8a8756593020fb976d10d50
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 571dc0eb3daa1d425f4ceae5137f1cfc41017828335d6b8fe081428c9d6bd7713badfee3cec0cc49fe45512305bcb176555c6c412c1dc8e13100b35e609b14e5
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.travis.yml
    ADDED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    | 
         @@ -0,0 +1,56 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # CHANGELOG
         
     | 
| 
      
 2 
     | 
    
         
            +
            ## v4.0.0
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
             * feature: set default wallet
         
     | 
| 
      
 5 
     | 
    
         
            +
             * add option for generate a random password when you update an item
         
     | 
| 
      
 6 
     | 
    
         
            +
             * fix encryption when you share an existing wallet
         
     | 
| 
      
 7 
     | 
    
         
            +
             * several bugs fix
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ## v4.0.0-beta1
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
             * add manage share key with new interface
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ## v4.0.0-beta
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
             * new interface with a table
         
     | 
| 
      
 16 
     | 
    
         
            +
             * new command line interface
         
     | 
| 
      
 17 
     | 
    
         
            +
             * use text editor for add or update an item
         
     | 
| 
      
 18 
     | 
    
         
            +
             * fix generate gpg key with RSA
         
     | 
| 
      
 19 
     | 
    
         
            +
             * several bugs fix
         
     | 
| 
      
 20 
     | 
    
         
            +
             * add unit tests
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            ## v3.2.1
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
             * fix bug when add a new item
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            ## v3.2.0
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
             * add support OTP
         
     | 
| 
      
 29 
     | 
    
         
            +
             * fix bug in synchronize
         
     | 
| 
      
 30 
     | 
    
         
            +
             * improve interface
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            ## v3.1.0
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
             * add clipboard
         
     | 
| 
      
 35 
     | 
    
         
            +
             * can change gpg version
         
     | 
| 
      
 36 
     | 
    
         
            +
             * minor change in interface
         
     | 
| 
      
 37 
     | 
    
         
            +
             * several bugs fix
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            ## v3.0.0
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
             * new storage format
         
     | 
| 
      
 42 
     | 
    
         
            +
             * new share system
         
     | 
| 
      
 43 
     | 
    
         
            +
             * remove MPW server
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            ## v2.0.0
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
             * change format csv to yaml
         
     | 
| 
      
 48 
     | 
    
         
            +
             * easy install with gem
         
     | 
| 
      
 49 
     | 
    
         
            +
             * add sync with ftp and ssh
         
     | 
| 
      
 50 
     | 
    
         
            +
             * many improvement
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            ## v1.1.0
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
             * Add sync with MPW Server
         
     | 
| 
      
 55 
     | 
    
         
            +
             * Add MPW Server
         
     | 
| 
      
 56 
     | 
    
         
            +
             * Fix minors bugs
         
     | 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            source 'https://rubygems.org'
         
     | 
| 
       2 
     | 
    
         
            -
            gem  
     | 
| 
       3 
     | 
    
         
            -
            gem  
     | 
| 
       4 
     | 
    
         
            -
            gem  
     | 
| 
       5 
     | 
    
         
            -
            gem  
     | 
| 
       6 
     | 
    
         
            -
            gem  
     | 
| 
       7 
     | 
    
         
            -
            gem  
     | 
| 
       8 
     | 
    
         
            -
            gem  
     | 
| 
       9 
     | 
    
         
            -
            gem  
     | 
| 
       10 
     | 
    
         
            -
            gem  
     | 
| 
      
 2 
     | 
    
         
            +
            gem "i18n",      "~> 0.7", ">= 0.7.0"
         
     | 
| 
      
 3 
     | 
    
         
            +
            gem "gpgme",     "~> 2.0", ">= 2.0.12"
         
     | 
| 
      
 4 
     | 
    
         
            +
            gem "highline",  "~> 1.7", ">= 1.7.8"
         
     | 
| 
      
 5 
     | 
    
         
            +
            gem "locale",    "~> 2.1", ">= 2.1.2"
         
     | 
| 
      
 6 
     | 
    
         
            +
            gem "colorize",  "~> 0.8", ">= 0.8.1"
         
     | 
| 
      
 7 
     | 
    
         
            +
            gem "net-ssh",   "~> 3.2", ">= 3.2.0"
         
     | 
| 
      
 8 
     | 
    
         
            +
            gem "net-sftp",  "~> 2.1", ">= 2.1.2"
         
     | 
| 
      
 9 
     | 
    
         
            +
            gem "clipboard", "~> 1.1", ">= 1.1.1"
         
     | 
| 
      
 10 
     | 
    
         
            +
            gem "rotp",      "~> 3.1", ">= 3.1.0"
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,128 +1,147 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Manage your passwords!
         
     | 
| 
      
 1 
     | 
    
         
            +
            # MPW: Manage your passwords!
         
     | 
| 
      
 2 
     | 
    
         
            +
            [](https://github.com/nishiki/manage-password/releases)
         
     | 
| 
      
 3 
     | 
    
         
            +
            [](https://travis-ci.org/nishiki/manage-password)
         
     | 
| 
      
 4 
     | 
    
         
            +
            [](https://github.com/nishiki/manage-password/blob/master/LICENSE)
         
     | 
| 
       2 
5 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            MPW can synchronize your password with SSH or FTP.
         
     | 
| 
      
 6 
     | 
    
         
            +
            mpw is a little software which stores your passwords in [GnuPG](http://www.gnupg.org/) encrypted files.
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
            ## Features
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             * generate random password
         
     | 
| 
      
 11 
     | 
    
         
            +
             * generate OTP code
         
     | 
| 
      
 12 
     | 
    
         
            +
             * copy your login, password or otp in clipboard
         
     | 
| 
      
 13 
     | 
    
         
            +
             * manage many wallets
         
     | 
| 
      
 14 
     | 
    
         
            +
             * synchronize your passwords with SSH or FTP.
         
     | 
| 
      
 15 
     | 
    
         
            +
             * share a wallet with others GPG keys
         
     | 
| 
       9 
16 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            * install xclip
         
     | 
| 
       12 
     | 
    
         
            -
            * gem install mpw
         
     | 
| 
      
 17 
     | 
    
         
            +
            ## Install
         
     | 
| 
       13 
18 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
            On debian or ubuntu:
         
     | 
| 
      
 20 
     | 
    
         
            +
            ```
         
     | 
| 
      
 21 
     | 
    
         
            +
            apt install ruby ruby-dev xclip
         
     | 
| 
      
 22 
     | 
    
         
            +
            gem install mpw
         
     | 
| 
      
 23 
     | 
    
         
            +
            ```
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            ## How to use
         
     | 
| 
      
 26 
     | 
    
         
            +
            ### First steps
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            Initialize your first wallet:
         
     | 
| 
      
 29 
     | 
    
         
            +
            ```
         
     | 
| 
      
 30 
     | 
    
         
            +
            mpw config --init user@host.com
         
     | 
| 
      
 31 
     | 
    
         
            +
            ```
         
     | 
| 
       15 
32 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
            Add your first item:
         
     | 
| 
       17 
34 
     | 
    
         
             
            ```
         
     | 
| 
       18 
     | 
    
         
            -
            mpw  
     | 
| 
      
 35 
     | 
    
         
            +
            mpw add
         
     | 
| 
       19 
36 
     | 
    
         
             
            ```
         
     | 
| 
       20 
37 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
            And list your items:
         
     | 
| 
       22 
39 
     | 
    
         
             
            ```
         
     | 
| 
       23 
     | 
    
         
            -
            mpw  
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
            mpw list
         
     | 
| 
      
 41 
     | 
    
         
            +
            ```
         
     | 
| 
      
 42 
     | 
    
         
            +
            or search an item with
         
     | 
| 
      
 43 
     | 
    
         
            +
            ```
         
     | 
| 
      
 44 
     | 
    
         
            +
            mpw list --pattern Da
         
     | 
| 
      
 45 
     | 
    
         
            +
            mpw list --group bank
         
     | 
| 
       25 
46 
     | 
    
         
             
            ```
         
     | 
| 
       26 
47 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
            Output:
         
     | 
| 
       28 
49 
     | 
    
         
             
            ```
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 50 
     | 
    
         
            +
            Bank
         
     | 
| 
      
 51 
     | 
    
         
            +
             ==============================================================================
         
     | 
| 
      
 52 
     | 
    
         
            +
              ID | Host          | User      | Protocol | Port | OTP | Comment                
         
     | 
| 
      
 53 
     | 
    
         
            +
             ==============================================================================
         
     | 
| 
      
 54 
     | 
    
         
            +
              1  | bank.com      | 1234456   | https    |      |  X  |                        
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            Linux
         
     | 
| 
      
 57 
     | 
    
         
            +
             ==============================================================================
         
     | 
| 
      
 58 
     | 
    
         
            +
              ID | Host          | User      | Protocol | Port | OTP | Comment                
         
     | 
| 
      
 59 
     | 
    
         
            +
             ==============================================================================
         
     | 
| 
      
 60 
     | 
    
         
            +
              2  | linuxfr.org   | example   | https    |      |     | Da Linux French Site
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
       31 
62 
     | 
    
         
             
            ```
         
     | 
| 
       32 
63 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 64 
     | 
    
         
            +
            Copy a password, login or OTP code:
         
     | 
| 
       34 
65 
     | 
    
         
             
            ```
         
     | 
| 
       35 
     | 
    
         
            -
            mpw  
     | 
| 
       36 
     | 
    
         
            -
            mpw --add --key root@localhost.local --config /path/conf/file.cfg 
         
     | 
| 
       37 
     | 
    
         
            -
            mpw --add --key root@localhost.local --wallet wallet_name
         
     | 
| 
       38 
     | 
    
         
            -
            mpw --add --key root@localhost.local --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
      
 66 
     | 
    
         
            +
            mpw copy -p linuxfr
         
     | 
| 
       39 
67 
     | 
    
         
             
            ```
         
     | 
| 
       40 
68 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 69 
     | 
    
         
            +
            Update an item:
         
     | 
| 
       42 
70 
     | 
    
         
             
            ```
         
     | 
| 
       43 
     | 
    
         
            -
            mpw  
     | 
| 
       44 
     | 
    
         
            -
            mpw --add --key root@localhost.local --file /path/gpg/file.pub --config /path/conf/file.cfg 
         
     | 
| 
       45 
     | 
    
         
            -
            mpw --add --key root@localhost.local --file /path/gpg/file.pub --wallet wallet_name
         
     | 
| 
       46 
     | 
    
         
            -
            mpw --add --key root@localhost.local --file /path/gpg/file.pub --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
      
 71 
     | 
    
         
            +
            mpw update -p linuxfr
         
     | 
| 
       47 
72 
     | 
    
         
             
            ```
         
     | 
| 
       48 
73 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 74 
     | 
    
         
            +
            Delete an item:
         
     | 
| 
       50 
75 
     | 
    
         
             
            ```
         
     | 
| 
       51 
     | 
    
         
            -
            mpw  
     | 
| 
       52 
     | 
    
         
            -
            mpw --delete --key root@localhost.local --wallet wallet_name
         
     | 
| 
       53 
     | 
    
         
            -
            mpw --delete --key root@localhost.local --wallet wallet_name --config /path/conf/file.cfg 
         
     | 
| 
      
 76 
     | 
    
         
            +
            mpw delete -p linuxfr
         
     | 
| 
       54 
77 
     | 
    
         
             
            ```
         
     | 
| 
       55 
78 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 79 
     | 
    
         
            +
            ### Manage wallets
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            List all available wallets:
         
     | 
| 
       57 
82 
     | 
    
         
             
            ```
         
     | 
| 
       58 
     | 
    
         
            -
            mpw -- 
     | 
| 
       59 
     | 
    
         
            -
            mpw --add --config /path/conf/file.cfg
         
     | 
| 
       60 
     | 
    
         
            -
            mpw --add --wallet wallet_name
         
     | 
| 
       61 
     | 
    
         
            -
            mpw --add --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
      
 83 
     | 
    
         
            +
            mpw wallet --list
         
     | 
| 
       62 
84 
     | 
    
         
             
            ```
         
     | 
| 
       63 
85 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
      
 86 
     | 
    
         
            +
            Create an other wallet:
         
     | 
| 
       65 
87 
     | 
    
         
             
            ```
         
     | 
| 
       66 
     | 
    
         
            -
            mpw -- 
     | 
| 
       67 
     | 
    
         
            -
            mpw --update --id uniq_id --config /path/conf/file.cfg
         
     | 
| 
       68 
     | 
    
         
            -
            mpw --update --id uniq_id --wallet wallet_name
         
     | 
| 
       69 
     | 
    
         
            -
            mpw --update --id uniq_id --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
      
 88 
     | 
    
         
            +
            mpw config --wallet work --init user@host.com
         
     | 
| 
       70 
89 
     | 
    
         
             
            ```
         
     | 
| 
       71 
90 
     | 
    
         | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 91 
     | 
    
         
            +
            List all GPG keys in wallet:
         
     | 
| 
       73 
92 
     | 
    
         
             
            ```
         
     | 
| 
       74 
     | 
    
         
            -
            mpw -- 
     | 
| 
       75 
     | 
    
         
            -
            mpw --delete --id uniq_id --config /path/conf/file.cfg
         
     | 
| 
       76 
     | 
    
         
            -
            mpw --delete --id uniq_id --wallet wallet_name
         
     | 
| 
       77 
     | 
    
         
            -
            mpw --delete --id uniq_id --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
      
 93 
     | 
    
         
            +
            mpw wallet --list-keys [--wallet NAME]
         
     | 
| 
       78 
94 
     | 
    
         
             
            ```
         
     | 
| 
       79 
95 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
      
 96 
     | 
    
         
            +
            Share with an other GPG key:
         
     | 
| 
       81 
97 
     | 
    
         
             
            ```
         
     | 
| 
       82 
     | 
    
         
            -
            mpw -- 
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
            mpw -- 
     | 
| 
       85 
     | 
    
         
            -
            mpw --show 'string to search' --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
       86 
     | 
    
         
            -
            mpw --show 'string to search' --group group_name
         
     | 
| 
       87 
     | 
    
         
            -
            mpw --show 'string to search' --group group_name --config /path/conf/file.cfg
         
     | 
| 
       88 
     | 
    
         
            -
            mpw --show 'string to search' --group group_name --wallet wallet_name
         
     | 
| 
       89 
     | 
    
         
            -
            mpw --show 'string to search' --group group_name --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
      
 98 
     | 
    
         
            +
            mpw wallet --add-gpg-key test42@localhost.com
         
     | 
| 
      
 99 
     | 
    
         
            +
             or
         
     | 
| 
      
 100 
     | 
    
         
            +
            mpw wallet --add-gpg-key /path/to/file
         
     | 
| 
       90 
101 
     | 
    
         
             
            ```
         
     | 
| 
       91 
102 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
      
 103 
     | 
    
         
            +
            Remove a GPG key:
         
     | 
| 
       93 
104 
     | 
    
         
             
            ```
         
     | 
| 
       94 
     | 
    
         
            -
            mpw  
     | 
| 
       95 
     | 
    
         
            -
            mpw --export --file /path/file/to/export.yml --config /path/conf/file.cfg
         
     | 
| 
       96 
     | 
    
         
            -
            mpw --export --file /path/file/to/export.yml --wallet wallet_name
         
     | 
| 
       97 
     | 
    
         
            -
            mpw --export --file /path/file/to/export.yml --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
      
 105 
     | 
    
         
            +
            mpw wallet --delete-gpg-key test42@localhost.com
         
     | 
| 
       98 
106 
     | 
    
         
             
            ```
         
     | 
| 
       99 
107 
     | 
    
         | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
      
 108 
     | 
    
         
            +
            Add synchronize:
         
     | 
| 
       101 
109 
     | 
    
         
             
            ```
         
     | 
| 
       102 
     | 
    
         
            -
            mpw -- 
     | 
| 
       103 
     | 
    
         
            -
            mpw --import --file /path/file/to/export.yml --config /path/conf/file.cfg
         
     | 
| 
       104 
     | 
    
         
            -
            mpw --import --file /path/file/to/export.yml --wallet wallet_name
         
     | 
| 
       105 
     | 
    
         
            -
            mpw --import --file /path/file/to/export.yml --config /path/conf/file.cfg --wallet wallet_name
         
     | 
| 
      
 110 
     | 
    
         
            +
            mpw wallet --protocol ssh --host example.com --user test --path /remote/path --password
         
     | 
| 
       106 
111 
     | 
    
         
             
            ```
         
     | 
| 
       107 
112 
     | 
    
         | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
      
 113 
     | 
    
         
            +
            ### Export and import data
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            You can export your data in yaml file with your passwords in clear text:
         
     | 
| 
       109 
116 
     | 
    
         
             
            ```
         
     | 
| 
      
 117 
     | 
    
         
            +
            mpw export --file export.yml
         
     | 
| 
      
 118 
     | 
    
         
            +
            ```
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            Import data from an yaml file:
         
     | 
| 
      
 121 
     | 
    
         
            +
            ```
         
     | 
| 
      
 122 
     | 
    
         
            +
            mpw import --file import.yml
         
     | 
| 
      
 123 
     | 
    
         
            +
            ```
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            Example yaml file for mpw:
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            ```
         
     | 
| 
      
 128 
     | 
    
         
            +
            ---
         
     | 
| 
       110 
129 
     | 
    
         
             
            1:
         
     | 
| 
       111 
     | 
    
         
            -
               
     | 
| 
       112 
     | 
    
         
            -
               
     | 
| 
       113 
     | 
    
         
            -
               
     | 
| 
       114 
     | 
    
         
            -
               
     | 
| 
       115 
     | 
    
         
            -
              user: test
         
     | 
| 
       116 
     | 
    
         
            -
              password: letoortue
         
     | 
| 
       117 
     | 
    
         
            -
              port: 21
         
     | 
| 
       118 
     | 
    
         
            -
              comment: Mysuper website
         
     | 
| 
       119 
     | 
    
         
            -
            2:
         
     | 
| 
       120 
     | 
    
         
            -
              name: Linuxfr
         
     | 
| 
       121 
     | 
    
         
            -
              group: Pro
         
     | 
| 
       122 
     | 
    
         
            -
              host: Linuxfr.org
         
     | 
| 
      
 130 
     | 
    
         
            +
              host: bank.com
         
     | 
| 
      
 131 
     | 
    
         
            +
              user: 123456
         
     | 
| 
      
 132 
     | 
    
         
            +
              group: Bank
         
     | 
| 
      
 133 
     | 
    
         
            +
              password: secret
         
     | 
| 
       123 
134 
     | 
    
         
             
              protocol: https
         
     | 
| 
       124 
     | 
    
         
            -
              user: test
         
     | 
| 
       125 
     | 
    
         
            -
              password: coucou 
         
     | 
| 
       126 
135 
     | 
    
         
             
              port: 
         
     | 
| 
      
 136 
     | 
    
         
            +
              otp_key: 1afg34
         
     | 
| 
       127 
137 
     | 
    
         
             
              comment: 
         
     | 
| 
      
 138 
     | 
    
         
            +
            2:
         
     | 
| 
      
 139 
     | 
    
         
            +
              host: linuxfr.org
         
     | 
| 
      
 140 
     | 
    
         
            +
              user: example
         
     | 
| 
      
 141 
     | 
    
         
            +
              group: 
         
     | 
| 
      
 142 
     | 
    
         
            +
              password: 'complex %- password'
         
     | 
| 
      
 143 
     | 
    
         
            +
              protocol: https
         
     | 
| 
      
 144 
     | 
    
         
            +
              port: 
         
     | 
| 
      
 145 
     | 
    
         
            +
              otp_key: 
         
     | 
| 
      
 146 
     | 
    
         
            +
              comment: Da Linux French Site
         
     | 
| 
       128 
147 
     | 
    
         
             
            ```
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            4.0.0
         
     | 
    
        data/bin/mpw
    CHANGED
    
    | 
         @@ -18,13 +18,10 @@ 
     | 
|
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
            $: << File.expand_path('../../lib', __FILE__)
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            require 'optparse'
         
     | 
| 
       22 
21 
     | 
    
         
             
            require 'locale'
         
     | 
| 
       23 
22 
     | 
    
         
             
            require 'set'
         
     | 
| 
       24 
23 
     | 
    
         
             
            require 'i18n'
         
     | 
| 
       25 
     | 
    
         
            -
            require ' 
     | 
| 
       26 
     | 
    
         
            -
            require 'mpw/config'
         
     | 
| 
       27 
     | 
    
         
            -
            require 'mpw/cli'
         
     | 
| 
      
 24 
     | 
    
         
            +
            require 'colorize'
         
     | 
| 
       28 
25 
     | 
    
         | 
| 
       29 
26 
     | 
    
         
             
            # --------------------------------------------------------- #
         
     | 
| 
       30 
27 
     | 
    
         
             
            # Set local
         
     | 
| 
         @@ -45,195 +42,28 @@ I18n.locale         = lang.to_sym 
     | 
|
| 
       45 
42 
     | 
    
         
             
            # Options
         
     | 
| 
       46 
43 
     | 
    
         
             
            # --------------------------------------------------------- #
         
     | 
| 
       47 
44 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
            bin_dir = File.dirname(__FILE__)
         
     | 
| 
      
 46 
     | 
    
         
            +
            command = "#{bin_dir}/mpw-#{ARGV[0]}"
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            if Dir.glob("#{bin_dir}/mpw-*").include?("#{command}")
         
     | 
| 
      
 49 
     | 
    
         
            +
            	begin
         
     | 
| 
      
 50 
     | 
    
         
            +
            		Kernel.load(command)
         
     | 
| 
      
 51 
     | 
    
         
            +
            	rescue OptionParser::ParseError => e
         
     | 
| 
      
 52 
     | 
    
         
            +
            		puts "#{I18n.t('display.error')}: #{e}".red
         
     | 
| 
      
 53 
     | 
    
         
            +
            	end
         
     | 
| 
      
 54 
     | 
    
         
            +
            else
         
     | 
| 
      
 55 
     | 
    
         
            +
            	puts "#{I18n.t('option.usage')}: mpw COMMAND [options]\n\n"
         
     | 
| 
      
 56 
     | 
    
         
            +
            	puts 'Commands:'
         
     | 
| 
      
 57 
     | 
    
         
            +
            	puts "  add       #{I18n.t('command.add')}"
         
     | 
| 
      
 58 
     | 
    
         
            +
            	puts "  config    #{I18n.t('command.config')}"
         
     | 
| 
      
 59 
     | 
    
         
            +
            	puts "  copy      #{I18n.t('command.copy')}"
         
     | 
| 
      
 60 
     | 
    
         
            +
            	puts "  delete    #{I18n.t('command.delete')}"
         
     | 
| 
      
 61 
     | 
    
         
            +
            	puts "  export    #{I18n.t('command.export')}"
         
     | 
| 
      
 62 
     | 
    
         
            +
            	puts "  genpwd    #{I18n.t('command.genpwd')}"
         
     | 
| 
      
 63 
     | 
    
         
            +
            	puts "  import    #{I18n.t('command.import')}"
         
     | 
| 
      
 64 
     | 
    
         
            +
            	puts "  list      #{I18n.t('command.list')}"
         
     | 
| 
      
 65 
     | 
    
         
            +
            	puts "  update    #{I18n.t('command.update')}"
         
     | 
| 
      
 66 
     | 
    
         
            +
            	puts "  wallet    #{I18n.t('command.wallet')}"
         
     | 
| 
       58 
67 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
            OptionParser.new do |opts|
         
     | 
| 
       60 
     | 
    
         
            -
            	opts.banner = "#{I18n.t('option.usage')}: mpw [options]"
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
            	opts.on('-a', '--add', I18n.t('option.add')) do
         
     | 
| 
       63 
     | 
    
         
            -
            		options[:add] = true
         
     | 
| 
       64 
     | 
    
         
            -
            	end
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
            	opts.on('-A', '--show-all', I18n.t('option.show_all')) do
         
     | 
| 
       67 
     | 
    
         
            -
            		options[:type] = nil
         
     | 
| 
       68 
     | 
    
         
            -
            		options[:show] = ''
         
     | 
| 
       69 
     | 
    
         
            -
            	end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
            	opts.on('-c', '--config CONFIG', I18n.t('option.config')) do |config|
         
     | 
| 
       72 
     | 
    
         
            -
            		options[:config] = config
         
     | 
| 
       73 
     | 
    
         
            -
            	end
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
            	opts.on('-C', '--no-clipboard', I18n.t('option.clipboard')) do
         
     | 
| 
       76 
     | 
    
         
            -
            		options[:clipboard] = false
         
     | 
| 
       77 
     | 
    
         
            -
            	end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
            	opts.on('-d', '--delete', I18n.t('option.remove')) do
         
     | 
| 
       80 
     | 
    
         
            -
            		options[:delete] = true
         
     | 
| 
       81 
     | 
    
         
            -
            	end
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
            	opts.on('-e', '--export', I18n.t('option.export')) do
         
     | 
| 
       84 
     | 
    
         
            -
            		options[:export] = true
         
     | 
| 
       85 
     | 
    
         
            -
            	end
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
            	opts.on('-E', '--editor', I18n.t('option.editor')) do
         
     | 
| 
       88 
     | 
    
         
            -
            		options[:editor] = true
         
     | 
| 
       89 
     | 
    
         
            -
            	end
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
            	opts.on('-f', '--file FILE', I18n.t('option.file')) do |file|
         
     | 
| 
       92 
     | 
    
         
            -
            		options[:file] = file
         
     | 
| 
       93 
     | 
    
         
            -
            	end
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
            	opts.on('-F', '--force', I18n.t('option.force')) do
         
     | 
| 
       96 
     | 
    
         
            -
            		options[:force] = true
         
     | 
| 
       97 
     | 
    
         
            -
            	end
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
            	opts.on('-g', '--group GROUP', I18n.t('option.group')) do |group|
         
     | 
| 
       100 
     | 
    
         
            -
            		options[:group] = group
         
     | 
| 
       101 
     | 
    
         
            -
            	end
         
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
            	opts.on('-G', '--generate-password [LENGTH]', I18n.t('option.generate_password')) do |length|
         
     | 
| 
       104 
     | 
    
         
            -
            		options_password[:length] = length
         
     | 
| 
       105 
     | 
    
         
            -
            	end
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
            	opts.on('-h', '--help', I18n.t('option.help')) do
         
     | 
| 
       108 
     | 
    
         
            -
            		puts opts
         
     | 
| 
       109 
     | 
    
         
            -
            		exit 0
         
     | 
| 
       110 
     | 
    
         
            -
            	end
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
            	opts.on('-i', '--id ID', I18n.t('option.id')) do |id|
         
     | 
| 
       113 
     | 
    
         
            -
            		options[:id] = id
         
     | 
| 
       114 
     | 
    
         
            -
            	end
         
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
            	opts.on('-I', '--import', I18n.t('option.import')) do
         
     | 
| 
       117 
     | 
    
         
            -
            		options[:import] = true
         
     | 
| 
       118 
     | 
    
         
            -
            	end
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
            	opts.on('-k', '--key KEY', I18n.t('option.key')) do |key|
         
     | 
| 
       121 
     | 
    
         
            -
            		options[:key] = key
         
     | 
| 
       122 
     | 
    
         
            -
            	end
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
            	opts.on('-n', '--numeric', I18n.t('option.numeric')) do
         
     | 
| 
       125 
     | 
    
         
            -
            		options_password[:numeric] = true
         
     | 
| 
       126 
     | 
    
         
            -
            	end
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
            	opts.on('-N', '--no-sync', I18n.t('option.no_sync')) do
         
     | 
| 
       129 
     | 
    
         
            -
            		options[:sync] = false
         
     | 
| 
       130 
     | 
    
         
            -
            	end
         
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
            	opts.on('-O', '--otp', I18n.t('option.otp')) do
         
     | 
| 
       133 
     | 
    
         
            -
            		options[:otp] = true
         
     | 
| 
       134 
     | 
    
         
            -
            	end
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
            	opts.on('-s', '--show [SEARCH]', I18n.t('option.show')) do |search|
         
     | 
| 
       137 
     | 
    
         
            -
            		search.nil? ? (options[:show]  = '')  : (options[:show] = search)
         
     | 
| 
       138 
     | 
    
         
            -
            	end
         
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
       140 
     | 
    
         
            -
            	opts.on('-S', '--setup', I18n.t('option.setup')) do
         
     | 
| 
       141 
     | 
    
         
            -
            		options[:setup] = true
         
     | 
| 
       142 
     | 
    
         
            -
            	end
         
     | 
| 
       143 
     | 
    
         
            -
             
     | 
| 
       144 
     | 
    
         
            -
            	opts.on('-u', '--update', I18n.t('option.update')) do
         
     | 
| 
       145 
     | 
    
         
            -
            		options[:update] = true
         
     | 
| 
       146 
     | 
    
         
            -
            	end
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
     | 
    
         
            -
            	opts.on('-w', '--wallet WALLET', I18n.t('option.wallet')) do |wallet|
         
     | 
| 
       149 
     | 
    
         
            -
            		options[:wallet] = wallet
         
     | 
| 
       150 
     | 
    
         
            -
            	end
         
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
            	opts.on('-W', '--setup-wallet', I18n.t('option.setup_wallet')) do
         
     | 
| 
       153 
     | 
    
         
            -
            		options[:setup_wallet] = true
         
     | 
| 
       154 
     | 
    
         
            -
            	end
         
     | 
| 
       155 
     | 
    
         
            -
             
     | 
| 
       156 
     | 
    
         
            -
            	opts.on('-x', '--special-chars', I18n.t('option.special_chars')) do
         
     | 
| 
       157 
     | 
    
         
            -
            		options_password[:special] = true
         
     | 
| 
       158 
     | 
    
         
            -
            	end
         
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
       160 
     | 
    
         
            -
            	opts.on('-y', '--alpha', I18n.t('option.alpha')) do
         
     | 
| 
       161 
     | 
    
         
            -
            		options_password[:alpha] = true
         
     | 
| 
       162 
     | 
    
         
            -
            	end
         
     | 
| 
       163 
     | 
    
         
            -
            end.parse!
         
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
            # --------------------------------------------------------- #
         
     | 
| 
       166 
     | 
    
         
            -
            # Main
         
     | 
| 
       167 
     | 
    
         
            -
            # --------------------------------------------------------- #
         
     | 
| 
       168 
     | 
    
         
            -
             
     | 
| 
       169 
     | 
    
         
            -
            # Generate password
         
     | 
| 
       170 
     | 
    
         
            -
            if not options_password.empty?
         
     | 
| 
       171 
     | 
    
         
            -
            	puts MPW::MPW::password(options_password)
         
     | 
| 
       172 
     | 
    
         
            -
            	exit 0
         
     | 
| 
       173 
     | 
    
         
            -
            end
         
     | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
       175 
     | 
    
         
            -
            begin
         
     | 
| 
       176 
     | 
    
         
            -
            	config = MPW::Config.new(options[:config])
         
     | 
| 
       177 
     | 
    
         
            -
            	cli    = MPW::Cli.new(config, options[:clipboard], options[:sync], options[:otp])
         
     | 
| 
       178 
     | 
    
         
            -
            		
         
     | 
| 
       179 
     | 
    
         
            -
            	# Setup a new config 
         
     | 
| 
       180 
     | 
    
         
            -
            	if not options[:setup].nil?
         
     | 
| 
       181 
     | 
    
         
            -
            		cli.setup(lang)
         
     | 
| 
       182 
     | 
    
         
            -
            		exit 0
         
     | 
| 
       183 
     | 
    
         
            -
            	end
         
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
            	cli.setup(lang)   if not config.is_valid?
         
     | 
| 
       186 
     | 
    
         
            -
            	cli.setup_gpg_key if not config.check_gpg_key?
         
     | 
| 
       187 
     | 
    
         
            -
            	
         
     | 
| 
       188 
     | 
    
         
            -
            	cli.get_wallet(options[:wallet])
         
     | 
| 
       189 
     | 
    
         
            -
            	cli.decrypt
         
     | 
| 
       190 
     | 
    
         
            -
            	
         
     | 
| 
       191 
     | 
    
         
            -
            	# Display the item's informations
         
     | 
| 
       192 
     | 
    
         
            -
            	if not options[:show].nil?
         
     | 
| 
       193 
     | 
    
         
            -
            		opts = {search:    options[:show],
         
     | 
| 
       194 
     | 
    
         
            -
            		        group:     options[:group],
         
     | 
| 
       195 
     | 
    
         
            -
            		       }
         
     | 
| 
       196 
     | 
    
         
            -
            	
         
     | 
| 
       197 
     | 
    
         
            -
            		cli.display(opts)
         
     | 
| 
       198 
     | 
    
         
            -
            	
         
     | 
| 
       199 
     | 
    
         
            -
            	# Remove an item
         
     | 
| 
       200 
     | 
    
         
            -
            	elsif not options[:delete].nil? and not options[:id].nil?
         
     | 
| 
       201 
     | 
    
         
            -
            		cli.delete(options[:id], options[:force])
         
     | 
| 
       202 
     | 
    
         
            -
            	
         
     | 
| 
       203 
     | 
    
         
            -
            	# Update an item
         
     | 
| 
       204 
     | 
    
         
            -
            	elsif not options[:update].nil? and not options[:id].nil?
         
     | 
| 
       205 
     | 
    
         
            -
            		cli.update(options[:id])
         
     | 
| 
       206 
     | 
    
         
            -
            	
         
     | 
| 
       207 
     | 
    
         
            -
            	# Add a new item
         
     | 
| 
       208 
     | 
    
         
            -
            	elsif not options[:add].nil? and options[:key].nil?
         
     | 
| 
       209 
     | 
    
         
            -
            		cli.add
         
     | 
| 
       210 
     | 
    
         
            -
            	
         
     | 
| 
       211 
     | 
    
         
            -
            	# Add a new public key in wallet
         
     | 
| 
       212 
     | 
    
         
            -
            	elsif not options[:add].nil? and not options[:key].nil?
         
     | 
| 
       213 
     | 
    
         
            -
            		cli.add_key(options[:key], options[:file])
         
     | 
| 
       214 
     | 
    
         
            -
            	
         
     | 
| 
       215 
     | 
    
         
            -
            	# Delete a public key in wallet
         
     | 
| 
       216 
     | 
    
         
            -
            	elsif not options[:delete].nil? and not options[:key].nil?
         
     | 
| 
       217 
     | 
    
         
            -
            		cli.delete_key(options[:key])
         
     | 
| 
       218 
     | 
    
         
            -
            	
         
     | 
| 
       219 
     | 
    
         
            -
            	# Export
         
     | 
| 
       220 
     | 
    
         
            -
            	elsif not options[:export].nil? and not options[:file].nil?
         
     | 
| 
       221 
     | 
    
         
            -
            		cli.export(options[:file])
         
     | 
| 
       222 
     | 
    
         
            -
            	
         
     | 
| 
       223 
     | 
    
         
            -
            	# Add a new item
         
     | 
| 
       224 
     | 
    
         
            -
            	elsif not options[:import].nil? and not options[:file].nil?
         
     | 
| 
       225 
     | 
    
         
            -
            		cli.import(options[:file])
         
     | 
| 
       226 
     | 
    
         
            -
            	
         
     | 
| 
       227 
     | 
    
         
            -
            	# Setup wallet config
         
     | 
| 
       228 
     | 
    
         
            -
            	elsif not options[:setup_wallet].nil?
         
     | 
| 
       229 
     | 
    
         
            -
            		cli.setup_wallet_config
         
     | 
| 
       230 
     | 
    
         
            -
            	
         
     | 
| 
       231 
     | 
    
         
            -
            	end
         
     | 
| 
       232 
     | 
    
         
            -
            	
         
     | 
| 
       233 
     | 
    
         
            -
            	cli = nil
         
     | 
| 
       234 
     | 
    
         
            -
            	
         
     | 
| 
       235 
     | 
    
         
            -
            	exit 0
         
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
       237 
     | 
    
         
            -
            rescue SystemExit, Interrupt
         
     | 
| 
       238 
68 
     | 
    
         
             
            	exit 3
         
     | 
| 
       239 
69 
     | 
    
         
             
            end
         
     | 
    
        data/bin/mpw-add
    ADDED
    
    | 
         @@ -0,0 +1,61 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # MPW is a software to crypt and manage your passwords
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright (C) 2016  Adrien Waksberg <mpw@yae.im>
         
     | 
| 
      
 4 
     | 
    
         
            +
            # 
         
     | 
| 
      
 5 
     | 
    
         
            +
            # This program is free software; you can redistribute it and/or
         
     | 
| 
      
 6 
     | 
    
         
            +
            # modify it under the terms of the GNU General Public License
         
     | 
| 
      
 7 
     | 
    
         
            +
            # as published by the Free Software Foundation; either version 2
         
     | 
| 
      
 8 
     | 
    
         
            +
            # of the License, or (at your option) any later version.
         
     | 
| 
      
 9 
     | 
    
         
            +
            # 
         
     | 
| 
      
 10 
     | 
    
         
            +
            # This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 11 
     | 
    
         
            +
            # but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 12 
     | 
    
         
            +
            # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         
     | 
| 
      
 13 
     | 
    
         
            +
            # GNU General Public License for more details.
         
     | 
| 
      
 14 
     | 
    
         
            +
            # 
         
     | 
| 
      
 15 
     | 
    
         
            +
            # You should have received a copy of the GNU General Public License
         
     | 
| 
      
 16 
     | 
    
         
            +
            # along with this program; if not, write to the Free Software
         
     | 
| 
      
 17 
     | 
    
         
            +
            # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            require 'optparse'
         
     | 
| 
      
 20 
     | 
    
         
            +
            require 'mpw/config'
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'mpw/cli'
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            # --------------------------------------------------------- #
         
     | 
| 
      
 24 
     | 
    
         
            +
            # Options
         
     | 
| 
      
 25 
     | 
    
         
            +
            # --------------------------------------------------------- #
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            options        = {}
         
     | 
| 
      
 28 
     | 
    
         
            +
            options[:sync] = true
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            OptionParser.new do |opts|
         
     | 
| 
      
 31 
     | 
    
         
            +
            	opts.banner = "#{I18n.t('option.usage')}: mpw add [options]"
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            	opts.on('-c', '--config PATH', I18n.t('option.config')) do |config|
         
     | 
| 
      
 34 
     | 
    
         
            +
            		options[:config] = config
         
     | 
| 
      
 35 
     | 
    
         
            +
            	end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            	opts.on('-h', '--help', I18n.t('option.help')) do
         
     | 
| 
      
 38 
     | 
    
         
            +
            		puts opts
         
     | 
| 
      
 39 
     | 
    
         
            +
            		exit 0
         
     | 
| 
      
 40 
     | 
    
         
            +
            	end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            	opts.on('-n', '--no-sync', I18n.t('option.no_sync')) do
         
     | 
| 
      
 43 
     | 
    
         
            +
            		options[:sync] = false
         
     | 
| 
      
 44 
     | 
    
         
            +
            	end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            	opts.on('-r', '--random', I18n.t('option.random_password')) do
         
     | 
| 
      
 47 
     | 
    
         
            +
            		options[:password] = true
         
     | 
| 
      
 48 
     | 
    
         
            +
            	end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            	opts.on('-w', '--wallet NAME', I18n.t('option.wallet')) do |wallet|
         
     | 
| 
      
 51 
     | 
    
         
            +
            		options[:wallet] = wallet
         
     | 
| 
      
 52 
     | 
    
         
            +
            	end
         
     | 
| 
      
 53 
     | 
    
         
            +
            end.parse!
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            config = MPW::Config.new(options[:config])
         
     | 
| 
      
 56 
     | 
    
         
            +
            cli    = MPW::Cli.new(config, options[:sync])
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            cli.load_config
         
     | 
| 
      
 59 
     | 
    
         
            +
            cli.get_wallet(options[:wallet])
         
     | 
| 
      
 60 
     | 
    
         
            +
            cli.decrypt
         
     | 
| 
      
 61 
     | 
    
         
            +
            cli.add(options[:password])
         
     |