Compare commits
3 commits
Author | SHA1 | Date | |
---|---|---|---|
40d96c0776 | |||
586a612388 | |||
d72e124a47 |
17 changed files with 75 additions and 40 deletions
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
language: go
|
|
||||||
script:
|
|
||||||
- go test ./...
|
|
||||||
- go get git.yaegashi.fr/nishiki/gpm/cmd/gpm
|
|
12
CHANGELOG.md
12
CHANGELOG.md
|
@ -7,6 +7,16 @@ Which is based on [Keep A Changelog](http://keepachangelog.com/)
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Replace deprecated ioutil lib
|
||||||
|
|
||||||
|
## v2.0.1 - 2024-10-12
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Update libs
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Choice box for generate new password was ignored
|
- Choice box for generate new password was ignored
|
||||||
|
@ -52,7 +62,7 @@ Which is based on [Keep A Changelog](http://keepachangelog.com/)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Prefix error message with ERROR
|
- Prefix error message with ERROR
|
||||||
- Fix new line with clear input
|
- Fix new line with clear input
|
||||||
- Replace sha1 to sha512 in pbkdf2.Key function
|
- Replace sha1 to sha512 in pbkdf2.Key function
|
||||||
- Replace default config directory
|
- Replace default config directory
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
# gpm: Go Passwords Manager
|
# gpm: Go Passwords Manager
|
||||||
|
|
||||||
[](https://git.yaegashi.fr/nishiki/gpm/releases)
|
[](https://code.waks.be/nishiki/gpm/releases)
|
||||||
[](https://travis-ci.org/nishiki/gpm)
|
[](https://travis-ci.org/nishiki/gpm)
|
||||||
[](https://goreportcard.com/report/git.yaegashi.fr/nishiki/gpm)
|
[](https://goreportcard.com/report/code.waks.be/nishiki/gpm)
|
||||||
[](https://git.yaegashi.fr/nishiki/gpm/src/branch/master/LICENSE)
|
[](https://code.waks.be/nishiki/gpm/src/branch/master/LICENSE)
|
||||||
|
|
||||||
gpm is passwords manager write in go and use AES-256 to encrypt the wallets
|
gpm is passwords manager write in go and use AES-256 to encrypt the wallets
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ gpm is passwords manager write in go and use AES-256 to encrypt the wallets
|
||||||
- Download and build
|
- Download and build
|
||||||
|
|
||||||
```text
|
```text
|
||||||
go get git.yaegashi.fr/nishiki/gpm/cmd/gpm
|
go get code.waks.be/nishiki/gpm/cmd/gpm
|
||||||
```
|
```
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
module git.yaegashi.fr/nishiki/gpm/cmd/gpm
|
|
||||||
|
|
||||||
require git.yaegashi.fr/nishiki/gpm/gpm v0.0.0
|
|
||||||
replace git.yaegashi.fr/nishiki/gpm/gpm => ../../gpm
|
|
17
go.mod
Normal file
17
go.mod
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
module code.waks.be/nishiki/gpm
|
||||||
|
|
||||||
|
go 1.23.1
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/atotto/clipboard v0.1.4
|
||||||
|
github.com/gizak/termui/v3 v3.1.0
|
||||||
|
github.com/pquerna/otp v1.4.0
|
||||||
|
golang.org/x/crypto v0.28.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect
|
||||||
|
github.com/mattn/go-runewidth v0.0.2 // indirect
|
||||||
|
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect
|
||||||
|
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect
|
||||||
|
)
|
23
go.sum
Normal file
23
go.sum
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
|
||||||
|
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
||||||
|
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI=
|
||||||
|
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc=
|
||||||
|
github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY=
|
||||||
|
github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o=
|
||||||
|
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
|
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM=
|
||||||
|
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
||||||
|
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840=
|
||||||
|
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg=
|
||||||
|
github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
|
||||||
|
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
|
@ -1 +0,0 @@
|
||||||
module git.yaegashi.fr/nishiki/gpm
|
|
|
@ -1,15 +1,14 @@
|
||||||
package gpm
|
package gpm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"flag"
|
"flag"
|
||||||
"io/ioutil"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/atotto/clipboard"
|
||||||
ui "github.com/gizak/termui/v3"
|
ui "github.com/gizak/termui/v3"
|
||||||
"github.com/gizak/termui/v3/widgets"
|
"github.com/gizak/termui/v3/widgets"
|
||||||
"github.com/atotto/clipboard"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Options
|
// Options
|
||||||
|
@ -104,7 +103,7 @@ func (c *Cli) InputBox(title string, input string, hidden bool) string {
|
||||||
|
|
||||||
if hidden {
|
if hidden {
|
||||||
secret = ""
|
secret = ""
|
||||||
for i := 1; i <= int(float64(len(input)) * 1.75); i++ {
|
for i := 1; i <= int(float64(len(input))*1.75); i++ {
|
||||||
secret = secret + "*"
|
secret = secret + "*"
|
||||||
}
|
}
|
||||||
p.Text = secret
|
p.Text = secret
|
||||||
|
@ -472,7 +471,7 @@ func (c *Cli) ImportWallet() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := ioutil.ReadFile(*IMPORT)
|
data, err := os.ReadFile(*IMPORT)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -497,7 +496,7 @@ func (c *Cli) ExportWallet() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ioutil.WriteFile(*EXPORT, data, 0600)
|
err = os.WriteFile(*EXPORT, data, 0600)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -553,12 +552,12 @@ func Run() {
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case res := <-c1:
|
case res := <-c1:
|
||||||
if res {
|
if res {
|
||||||
return
|
|
||||||
}
|
|
||||||
case <-time.After(300 * time.Second):
|
|
||||||
return
|
return
|
||||||
|
}
|
||||||
|
case <-time.After(300 * time.Second):
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -17,7 +17,6 @@ package gpm
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"os/user"
|
"os/user"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
@ -69,7 +68,7 @@ func (c *Config) Load(path string) error {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := ioutil.ReadFile(path)
|
data, err := os.ReadFile(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -95,7 +94,7 @@ func (c *Config) Save(path string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ioutil.WriteFile(path, []byte(data), 0644)
|
err = os.WriteFile(path, []byte(data), 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
package gpm
|
package gpm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
@ -38,7 +37,7 @@ func TestInit(t *testing.T) {
|
||||||
func TestSave(t *testing.T) {
|
func TestSave(t *testing.T) {
|
||||||
var config Config
|
var config Config
|
||||||
|
|
||||||
tmpFile, _ := ioutil.TempFile(os.TempDir(), "gpm_test-")
|
tmpFile, _ := os.CreateTemp(os.TempDir(), "gpm_test-")
|
||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
|
|
||||||
config.Init()
|
config.Init()
|
||||||
|
@ -51,7 +50,7 @@ func TestSave(t *testing.T) {
|
||||||
func TestLoadWithFile(t *testing.T) {
|
func TestLoadWithFile(t *testing.T) {
|
||||||
var config Config
|
var config Config
|
||||||
|
|
||||||
tmpFile, _ := ioutil.TempFile(os.TempDir(), "gpm_test-")
|
tmpFile, _ := os.CreateTemp(os.TempDir(), "gpm_test-")
|
||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
|
|
||||||
config.Init()
|
config.Init()
|
|
@ -17,7 +17,6 @@ package gpm
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
|
@ -49,7 +48,7 @@ func (w *Wallet) Load() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
content, err := ioutil.ReadFile(w.Path)
|
content, err := os.ReadFile(w.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -95,7 +94,7 @@ func (w *Wallet) Save() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ioutil.WriteFile(w.Path, content, 0600)
|
err = os.WriteFile(w.Path, content, 0600)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
|
@ -2,7 +2,6 @@ package gpm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
@ -173,7 +172,7 @@ func TestExportAndImport(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSaveWallet(t *testing.T) {
|
func TestSaveWallet(t *testing.T) {
|
||||||
tmpFile, _ := ioutil.TempFile(os.TempDir(), "gpm_test-")
|
tmpFile, _ := os.CreateTemp(os.TempDir(), "gpm_test-")
|
||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
|
|
||||||
wallet := generateWalletWithEntries()
|
wallet := generateWalletWithEntries()
|
||||||
|
@ -189,7 +188,7 @@ func TestSaveWallet(t *testing.T) {
|
||||||
func TestLoadWalletWithGoodPassword(t *testing.T) {
|
func TestLoadWalletWithGoodPassword(t *testing.T) {
|
||||||
var loadWallet Wallet
|
var loadWallet Wallet
|
||||||
|
|
||||||
tmpFile, _ := ioutil.TempFile(os.TempDir(), "gpm_test-")
|
tmpFile, _ := os.CreateTemp(os.TempDir(), "gpm_test-")
|
||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
|
|
||||||
wallet := generateWalletWithEntries()
|
wallet := generateWalletWithEntries()
|
||||||
|
@ -213,7 +212,7 @@ func TestLoadWalletWithGoodPassword(t *testing.T) {
|
||||||
func TestLoadWalletWithBadPassword(t *testing.T) {
|
func TestLoadWalletWithBadPassword(t *testing.T) {
|
||||||
var loadWallet Wallet
|
var loadWallet Wallet
|
||||||
|
|
||||||
tmpFile, _ := ioutil.TempFile(os.TempDir(), "gpm_test-")
|
tmpFile, _ := os.CreateTemp(os.TempDir(), "gpm_test-")
|
||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
|
|
||||||
wallet := generateWalletWithEntries()
|
wallet := generateWalletWithEntries()
|
|
@ -15,7 +15,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.yaegashi.fr/nishiki/gpm/gpm"
|
"code.waks.be/nishiki/gpm/internal/gpm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
Loading…
Add table
Add a link
Reference in a new issue