From eed2ae8b0814ffdcb05b4d463d5547564929186d Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Thu, 28 Feb 2019 19:51:33 +0100 Subject: [PATCH] Breaking: Password v2.0.0 (#5) - Fix broken vendoring for library users (closes #4) - Move command to `cmd/password` subdir - Drop support for Alfred workflow - Add support for Go 1.11+ modules --- .gitignore | 5 +- .gitmodules | 3 - .repo-runner.yaml | 9 +- .travis.yml | 7 +- Dockerfile | 4 +- Gopkg.lock | 106 - Gopkg.toml | 51 - Makefile | 11 +- README.md | 23 +- alfred-workflow/.gitignore | 1 - alfred-workflow/exec.py | 75 - alfred-workflow/icon.png | Bin 13094 -> 0 bytes alfred-workflow/info.plist | 120 - alfred-workflow/lib | 1 - build-workflow.sh | 34 - bindata.go => cmd/password/bindata.go | 110 +- cmdGet.go => cmd/password/cmdGet.go | 0 cmdServe.go => cmd/password/cmdServe.go | 0 cmdVersion.go => cmd/password/cmdVersion.go | 0 flags.go => cmd/password/flags.go | 0 cmd/password/go.mod | 14 + cmd/password/go.sum | 17 + main.go => cmd/password/main.go | 0 frontend/index.html | 3 - generateXKCDWordList.sh | 6 +- lib/go.mod | 8 + lib/xkcd.go | 2 +- lib/xkcd_words.go | 7744 ++++++++--------- vendor/github.com/Luzifer/go_helpers/LICENSE | 202 - .../go_helpers/accessLogger/accessLogger.go | 37 - .../Luzifer/go_helpers/http/digest.go | 55 - .../Luzifer/go_helpers/http/gzip.go | 47 - .../Luzifer/go_helpers/http/logHandler.go | 57 - .../Luzifer/go_helpers/str/slice.go | 21 - vendor/github.com/gorilla/context/LICENSE | 27 - vendor/github.com/gorilla/context/context.go | 143 - vendor/github.com/gorilla/context/doc.go | 88 - vendor/github.com/gorilla/mux/LICENSE | 27 - .../github.com/gorilla/mux/context_gorilla.go | 26 - .../github.com/gorilla/mux/context_native.go | 24 - vendor/github.com/gorilla/mux/doc.go | 306 - vendor/github.com/gorilla/mux/middleware.go | 72 - vendor/github.com/gorilla/mux/mux.go | 588 -- vendor/github.com/gorilla/mux/regexp.go | 332 - vendor/github.com/gorilla/mux/route.go | 763 -- vendor/github.com/gorilla/mux/test_helpers.go | 19 - .../inconshreveable/mousetrap/LICENSE | 13 - .../inconshreveable/mousetrap/trap_others.go | 15 - .../inconshreveable/mousetrap/trap_windows.go | 98 - .../mousetrap/trap_windows_1.4.go | 46 - vendor/github.com/pkg/errors/LICENSE | 23 - vendor/github.com/pkg/errors/errors.go | 282 - vendor/github.com/pkg/errors/stack.go | 147 - vendor/github.com/spf13/cobra/LICENSE.txt | 174 - vendor/github.com/spf13/cobra/args.go | 89 - .../spf13/cobra/bash_completions.go | 584 -- vendor/github.com/spf13/cobra/cobra.go | 200 - .../cobra/cobra/cmd/testdata/LICENSE.golden | 202 - vendor/github.com/spf13/cobra/command.go | 1517 ---- .../github.com/spf13/cobra/command_notwin.go | 5 - vendor/github.com/spf13/cobra/command_win.go | 20 - .../github.com/spf13/cobra/zsh_completions.go | 126 - vendor/github.com/spf13/pflag/LICENSE | 28 - vendor/github.com/spf13/pflag/bool.go | 94 - vendor/github.com/spf13/pflag/bool_slice.go | 147 - vendor/github.com/spf13/pflag/bytes.go | 209 - vendor/github.com/spf13/pflag/count.go | 96 - vendor/github.com/spf13/pflag/duration.go | 86 - .../github.com/spf13/pflag/duration_slice.go | 128 - vendor/github.com/spf13/pflag/flag.go | 1227 --- vendor/github.com/spf13/pflag/float32.go | 88 - vendor/github.com/spf13/pflag/float64.go | 84 - vendor/github.com/spf13/pflag/golangflag.go | 105 - vendor/github.com/spf13/pflag/int.go | 84 - vendor/github.com/spf13/pflag/int16.go | 88 - vendor/github.com/spf13/pflag/int32.go | 88 - vendor/github.com/spf13/pflag/int64.go | 84 - vendor/github.com/spf13/pflag/int8.go | 88 - vendor/github.com/spf13/pflag/int_slice.go | 128 - vendor/github.com/spf13/pflag/ip.go | 94 - vendor/github.com/spf13/pflag/ip_slice.go | 148 - vendor/github.com/spf13/pflag/ipmask.go | 122 - vendor/github.com/spf13/pflag/ipnet.go | 98 - vendor/github.com/spf13/pflag/string.go | 80 - vendor/github.com/spf13/pflag/string_array.go | 103 - vendor/github.com/spf13/pflag/string_slice.go | 149 - .../github.com/spf13/pflag/string_to_int.go | 149 - .../spf13/pflag/string_to_string.go | 160 - vendor/github.com/spf13/pflag/uint.go | 88 - vendor/github.com/spf13/pflag/uint16.go | 88 - vendor/github.com/spf13/pflag/uint32.go | 88 - vendor/github.com/spf13/pflag/uint64.go | 88 - vendor/github.com/spf13/pflag/uint8.go | 88 - vendor/github.com/spf13/pflag/uint_slice.go | 126 - vendor/github.com/tredoe/osutil/AUTHORS.md | 16 - .../github.com/tredoe/osutil/CONTRIBUTORS.md | 18 - .../github.com/tredoe/osutil/LICENSE-MPL.txt | 374 - .../tredoe/osutil/user/crypt/AUTHORS.md | 8 - .../tredoe/osutil/user/crypt/LICENSE | 27 - .../user/crypt/apr1_crypt/apr1_crypt.go | 62 - .../tredoe/osutil/user/crypt/common/base64.go | 60 - .../tredoe/osutil/user/crypt/common/doc.go | 13 - .../tredoe/osutil/user/crypt/common/salt.go | 105 - .../tredoe/osutil/user/crypt/crypt.go | 108 - .../osutil/user/crypt/md5_crypt/md5_crypt.go | 166 - .../user/crypt/sha256_crypt/sha256_crypt.go | 243 - .../user/crypt/sha512_crypt/sha512_crypt.go | 254 - vendor/golang.org/x/crypto/AUTHORS | 3 - vendor/golang.org/x/crypto/CONTRIBUTORS | 3 - vendor/golang.org/x/crypto/LICENSE | 27 - vendor/golang.org/x/crypto/PATENTS | 22 - vendor/golang.org/x/crypto/bcrypt/base64.go | 35 - vendor/golang.org/x/crypto/bcrypt/bcrypt.go | 295 - vendor/golang.org/x/crypto/blowfish/block.go | 159 - vendor/golang.org/x/crypto/blowfish/cipher.go | 91 - vendor/golang.org/x/crypto/blowfish/const.go | 199 - 116 files changed, 3997 insertions(+), 17541 deletions(-) delete mode 100644 Gopkg.lock delete mode 100644 Gopkg.toml delete mode 100644 alfred-workflow/.gitignore delete mode 100644 alfred-workflow/exec.py delete mode 100644 alfred-workflow/icon.png delete mode 100644 alfred-workflow/info.plist delete mode 160000 alfred-workflow/lib delete mode 100644 build-workflow.sh rename bindata.go => cmd/password/bindata.go (99%) rename cmdGet.go => cmd/password/cmdGet.go (100%) rename cmdServe.go => cmd/password/cmdServe.go (100%) rename cmdVersion.go => cmd/password/cmdVersion.go (100%) rename flags.go => cmd/password/flags.go (100%) create mode 100644 cmd/password/go.mod create mode 100644 cmd/password/go.sum rename main.go => cmd/password/main.go (100%) create mode 100644 lib/go.mod delete mode 100644 vendor/github.com/Luzifer/go_helpers/LICENSE delete mode 100644 vendor/github.com/Luzifer/go_helpers/accessLogger/accessLogger.go delete mode 100644 vendor/github.com/Luzifer/go_helpers/http/digest.go delete mode 100644 vendor/github.com/Luzifer/go_helpers/http/gzip.go delete mode 100644 vendor/github.com/Luzifer/go_helpers/http/logHandler.go delete mode 100644 vendor/github.com/Luzifer/go_helpers/str/slice.go delete mode 100644 vendor/github.com/gorilla/context/LICENSE delete mode 100644 vendor/github.com/gorilla/context/context.go delete mode 100644 vendor/github.com/gorilla/context/doc.go delete mode 100644 vendor/github.com/gorilla/mux/LICENSE delete mode 100644 vendor/github.com/gorilla/mux/context_gorilla.go delete mode 100644 vendor/github.com/gorilla/mux/context_native.go delete mode 100644 vendor/github.com/gorilla/mux/doc.go delete mode 100644 vendor/github.com/gorilla/mux/middleware.go delete mode 100644 vendor/github.com/gorilla/mux/mux.go delete mode 100644 vendor/github.com/gorilla/mux/regexp.go delete mode 100644 vendor/github.com/gorilla/mux/route.go delete mode 100644 vendor/github.com/gorilla/mux/test_helpers.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/LICENSE delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_others.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_windows.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go delete mode 100644 vendor/github.com/pkg/errors/LICENSE delete mode 100644 vendor/github.com/pkg/errors/errors.go delete mode 100644 vendor/github.com/pkg/errors/stack.go delete mode 100644 vendor/github.com/spf13/cobra/LICENSE.txt delete mode 100644 vendor/github.com/spf13/cobra/args.go delete mode 100644 vendor/github.com/spf13/cobra/bash_completions.go delete mode 100644 vendor/github.com/spf13/cobra/cobra.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/testdata/LICENSE.golden delete mode 100644 vendor/github.com/spf13/cobra/command.go delete mode 100644 vendor/github.com/spf13/cobra/command_notwin.go delete mode 100644 vendor/github.com/spf13/cobra/command_win.go delete mode 100644 vendor/github.com/spf13/cobra/zsh_completions.go delete mode 100644 vendor/github.com/spf13/pflag/LICENSE delete mode 100644 vendor/github.com/spf13/pflag/bool.go delete mode 100644 vendor/github.com/spf13/pflag/bool_slice.go delete mode 100644 vendor/github.com/spf13/pflag/bytes.go delete mode 100644 vendor/github.com/spf13/pflag/count.go delete mode 100644 vendor/github.com/spf13/pflag/duration.go delete mode 100644 vendor/github.com/spf13/pflag/duration_slice.go delete mode 100644 vendor/github.com/spf13/pflag/flag.go delete mode 100644 vendor/github.com/spf13/pflag/float32.go delete mode 100644 vendor/github.com/spf13/pflag/float64.go delete mode 100644 vendor/github.com/spf13/pflag/golangflag.go delete mode 100644 vendor/github.com/spf13/pflag/int.go delete mode 100644 vendor/github.com/spf13/pflag/int16.go delete mode 100644 vendor/github.com/spf13/pflag/int32.go delete mode 100644 vendor/github.com/spf13/pflag/int64.go delete mode 100644 vendor/github.com/spf13/pflag/int8.go delete mode 100644 vendor/github.com/spf13/pflag/int_slice.go delete mode 100644 vendor/github.com/spf13/pflag/ip.go delete mode 100644 vendor/github.com/spf13/pflag/ip_slice.go delete mode 100644 vendor/github.com/spf13/pflag/ipmask.go delete mode 100644 vendor/github.com/spf13/pflag/ipnet.go delete mode 100644 vendor/github.com/spf13/pflag/string.go delete mode 100644 vendor/github.com/spf13/pflag/string_array.go delete mode 100644 vendor/github.com/spf13/pflag/string_slice.go delete mode 100644 vendor/github.com/spf13/pflag/string_to_int.go delete mode 100644 vendor/github.com/spf13/pflag/string_to_string.go delete mode 100644 vendor/github.com/spf13/pflag/uint.go delete mode 100644 vendor/github.com/spf13/pflag/uint16.go delete mode 100644 vendor/github.com/spf13/pflag/uint32.go delete mode 100644 vendor/github.com/spf13/pflag/uint64.go delete mode 100644 vendor/github.com/spf13/pflag/uint8.go delete mode 100644 vendor/github.com/spf13/pflag/uint_slice.go delete mode 100644 vendor/github.com/tredoe/osutil/AUTHORS.md delete mode 100644 vendor/github.com/tredoe/osutil/CONTRIBUTORS.md delete mode 100644 vendor/github.com/tredoe/osutil/LICENSE-MPL.txt delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/AUTHORS.md delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/LICENSE delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/apr1_crypt/apr1_crypt.go delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/common/base64.go delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/common/doc.go delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/common/salt.go delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/crypt.go delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/md5_crypt/md5_crypt.go delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/sha256_crypt/sha256_crypt.go delete mode 100644 vendor/github.com/tredoe/osutil/user/crypt/sha512_crypt/sha512_crypt.go delete mode 100644 vendor/golang.org/x/crypto/AUTHORS delete mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/crypto/LICENSE delete mode 100644 vendor/golang.org/x/crypto/PATENTS delete mode 100644 vendor/golang.org/x/crypto/bcrypt/base64.go delete mode 100644 vendor/golang.org/x/crypto/bcrypt/bcrypt.go delete mode 100644 vendor/golang.org/x/crypto/blowfish/block.go delete mode 100644 vendor/golang.org/x/crypto/blowfish/cipher.go delete mode 100644 vendor/golang.org/x/crypto/blowfish/const.go diff --git a/.gitignore b/.gitignore index 3f134dd..7b50011 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ +cmd/password/.build +cmd/password/password dist frontend/assets/* js/node_modules/* -password -password_darwin_amd64 -PasswordGenerator.alfredworkflow diff --git a/.gitmodules b/.gitmodules index 82a6236..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "alfred-workflow/lib"] - path = alfred-workflow/lib - url = https://github.com/deanishe/alfred-workflow.git diff --git a/.repo-runner.yaml b/.repo-runner.yaml index 7719755..5c300ad 100644 --- a/.repo-runner.yaml +++ b/.repo-runner.yaml @@ -1,12 +1,11 @@ --- -image: "quay.io/luzifer/repo-runner-image" -checkout_dir: /go/src/github.com/Luzifer/password +image: "reporunner/golang-alpine" +checkout_dir: /src commands: - - apk --update add zip - - git submodule update --init --recursive - - make publish workflow + - make publish environment: CGO_ENABLED: 0 + PACKAGES: . diff --git a/.travis.yml b/.travis.yml index 2719233..97aae24 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,10 @@ language: go go: - - 1.7.x - - 1.8.x - - 1.9.x - 1.10.x - 1.11.x + - 1.12.x - tip -script: go test -v --bench=. github.com/Luzifer/password github.com/Luzifer/password/lib +install: go get -v github.com/Luzifer/password/lib +script: go test -v --bench=. github.com/Luzifer/password/lib diff --git a/Dockerfile b/Dockerfile index 582cfbd..d8b9e16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM golang:alpine as builder -COPY . /go/src/github.com/Luzifer/password -WORKDIR /go/src/github.com/Luzifer/password +COPY . /src/github.com/Luzifer/password +WORKDIR /src/github.com/Luzifer/password/cmd/password RUN set -ex \ && apk add --update git \ diff --git a/Gopkg.lock b/Gopkg.lock deleted file mode 100644 index 0f54fbc..0000000 --- a/Gopkg.lock +++ /dev/null @@ -1,106 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:70792ca3a262117f2135feb54379a0399fc8afb267edc64a16ee278dd431a619" - name = "github.com/Luzifer/go_helpers" - packages = [ - "accessLogger", - "http", - "str", - ] - pruneopts = "NUT" - revision = "bbca4398656b348ce285438ca3dffb1fce6a3f4b" - version = "v2.8.1" - -[[projects]] - digest = "1:c01767916c59f084bb7c41a7d5877c0f3099b1595cfa066e84ec6ad6b084dd89" - name = "github.com/gorilla/context" - packages = ["."] - pruneopts = "NUT" - revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42" - version = "v1.1.1" - -[[projects]] - digest = "1:bf5cf1d53d703332e9bd8984c69784645b73a938317bf5ace9aadf20ac49379a" - name = "github.com/gorilla/mux" - packages = ["."] - pruneopts = "NUT" - revision = "e3702bed27f0d39777b0b37b664b6280e8ef8fbf" - version = "v1.6.2" - -[[projects]] - digest = "1:406338ad39ab2e37b7f4452906442a3dbf0eb3379dd1f06aafb5c07e769a5fbb" - name = "github.com/inconshreveable/mousetrap" - packages = ["."] - pruneopts = "NUT" - revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" - version = "v1.0" - -[[projects]] - digest = "1:14715f705ff5dfe0ffd6571d7d201dd8e921030f8070321a79380d8ca4ec1a24" - name = "github.com/pkg/errors" - packages = ["."] - pruneopts = "NUT" - revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4" - version = "v0.8.1" - -[[projects]] - digest = "1:343d44e06621142ab09ae0c76c1799104cdfddd3ffb445d78b1adf8dc3ffaf3d" - name = "github.com/spf13/cobra" - packages = ["."] - pruneopts = "NUT" - revision = "ef82de70bb3f60c65fb8eebacbb2d122ef517385" - version = "v0.0.3" - -[[projects]] - digest = "1:9d8420bbf131d1618bde6530af37c3799340d3762cc47210c1d9532a4c3a2779" - name = "github.com/spf13/pflag" - packages = ["."] - pruneopts = "NUT" - revision = "298182f68c66c05229eb03ac171abe6e309ee79a" - version = "v1.0.3" - -[[projects]] - branch = "master" - digest = "1:e762d2447df27cace4112a07ddc64e7c71dc0bc5d512a59f5d2b98c5133e8e71" - name = "github.com/tredoe/osutil" - packages = [ - "user/crypt", - "user/crypt/apr1_crypt", - "user/crypt/common", - "user/crypt/md5_crypt", - "user/crypt/sha256_crypt", - "user/crypt/sha512_crypt", - ] - pruneopts = "NUT" - revision = "7d3ee1afa71c90fd1514c8f557ae6c5f414208eb" - -[[projects]] - branch = "master" - digest = "1:1ecf2a49df33be51e757d0033d5d51d5f784f35f68e5a38f797b2d3f03357d71" - name = "golang.org/x/crypto" - packages = [ - "bcrypt", - "blowfish", - ] - pruneopts = "NUT" - revision = "505ab145d0a99da450461ae2c1a9f6cd10d1f447" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/Luzifer/go_helpers/http", - "github.com/Luzifer/go_helpers/str", - "github.com/gorilla/mux", - "github.com/pkg/errors", - "github.com/spf13/cobra", - "github.com/tredoe/osutil/user/crypt", - "github.com/tredoe/osutil/user/crypt/apr1_crypt", - "github.com/tredoe/osutil/user/crypt/sha256_crypt", - "github.com/tredoe/osutil/user/crypt/sha512_crypt", - "golang.org/x/crypto/bcrypt", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml deleted file mode 100644 index e90d525..0000000 --- a/Gopkg.toml +++ /dev/null @@ -1,51 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - - -[[constraint]] - name = "github.com/Luzifer/go_helpers" - version = "2.8.1" - -[[constraint]] - name = "github.com/gorilla/mux" - version = "1.6.2" - -[[constraint]] - name = "github.com/spf13/cobra" - version = "0.0.3" - -[[constraint]] - branch = "master" - name = "github.com/tredoe/osutil" - -[[constraint]] - branch = "master" - name = "golang.org/x/crypto" - -[prune] - non-go = true - go-tests = true - unused-packages = true diff --git a/Makefile b/Makefile index fc026ea..f24ce18 100644 --- a/Makefile +++ b/Makefile @@ -10,16 +10,13 @@ compile_js: sh -c "yarn && npx webpack" debug: - go-bindata --debug frontend/... + go-bindata --debug -o cmd/password/bindata.go --pkg=main frontend/... go run *.go serve pack: compile_js - go-bindata -modtime 1 frontend/... + go-bindata -modtime 1 -o cmd/password/bindata.go --pkg=main frontend/... bash generateXKCDWordList.sh publish: - curl -sSLo golang.sh https://raw.githubusercontent.com/Luzifer/github-publish/master/golang.sh - bash golang.sh - -workflow: - bash build-workflow.sh + curl -sSLo cmd/password/golang.sh https://raw.githubusercontent.com/Luzifer/github-publish/master/golang.sh + cd cmd/password && bash golang.sh diff --git a/README.md b/README.md index 6de3e87..1050065 100644 --- a/README.md +++ b/README.md @@ -20,17 +20,6 @@ For the security of the passwords there are several assertions: My service [Secure Password](https://passwd.fyi/) is powered by this app and will provide you with secure passwords. -### Via [Alfred](https://www.alfredapp.com/) - -_(No longer actively maintained as I no longer use OSX / Alfred. The current version stays until it gets reported to be broken and will then get removed.)_ - -1. Ensure you do have Alfred 3 and have enabled the Powerpack -2. Download and open the `PasswordGenerator.alfredworkflow` from [Github releases](https://github.com/Luzifer/password/releases/latest) -3. Let Alfred install the workflow -4. Generate passwords using `pwd 12`, with special characters `pwd 12 s` or [XKCD style](https://xkcd.com/936/) `pwd 4 x` - -The workflow is set up to automatically check for updates once a day. If you want to check for updates manually open Alfred, enter `pwd workflow:update` and press enter. - ### Via CLI 1. Download the compiled binary from [Github releases](https://github.com/Luzifer/password/releases/latest) @@ -95,6 +84,18 @@ $ curl https://passwd.fyi/v1/getPassword?length=20&special=true 0M4L-1[lT:@2&7,p,o-; ``` +#### As library in your own code + +```go +package main + +import pwd "github.com/Luzifer/password/v2/lib" + +func getPassword() (string, error) { + return pwd.NewSecurePassword().GeneratePassword(16, false) +} +``` + ## Benchmark / Test Tests and benchmark are run by Travis CI at every push to this repository: diff --git a/alfred-workflow/.gitignore b/alfred-workflow/.gitignore deleted file mode 100644 index 0d20b64..0000000 --- a/alfred-workflow/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.pyc diff --git a/alfred-workflow/exec.py b/alfred-workflow/exec.py deleted file mode 100644 index 8673dc6..0000000 --- a/alfred-workflow/exec.py +++ /dev/null @@ -1,75 +0,0 @@ -# encoding: utf-8 - -import subprocess -import sys -import json -from workflow import Workflow, ICON_WEB, web - -descriptions = { - "htpasswd_apr1": "APR1 (htpasswd)", - "htpasswd_bcrypt": "bcrypt (htpasswd)", - "htpasswd_sha256": "SHA256 (htpasswd)", - "htpasswd_sha512": "SHA512 (htpasswd)", - "password": "Password", - "sha1": "SHA1", - "sha256": "SHA256", - "sha512": "SHA512", -} - - -def main(wf): - password_length = 20 - use_special = False - use_xkcd = False - - if len(wf.args): - for arg in wf.args[0].split(): - if arg.isdigit(): - password_length = int(arg) - elif arg == 's': - use_special = True - elif arg == 'x': - use_xkcd = True - - if password_length < 4 or password_length > 256: - wf.add_item(title="Password length out of bounds", - subtitle="Please use a reasonable password length between 4 and 256") - wf.send_feedback() - return 1 - - command = ["./password_darwin_amd64", - "get", "-j", "-l", - str(password_length)] - if use_special: - command.append("-s") - if use_xkcd: - command.append("-x") - result = json.loads(subprocess.check_output(command).strip()) - - hashed = [] - for key, value in result.iteritems(): - hashed.append("{}: {}".format(key, value)) - - wf.add_item(title=result['password'], - subtitle="Press Cmd+C to copy", - arg=result['password'], - valid=True) - wf.add_item(title="Copy hashed versions", - subtitle="Press Cmd+C to copy", - arg="\n".join(hashed), - valid=True) - wf.send_feedback() - - return 0 - - -if __name__ == "__main__": - wf = Workflow(update_settings={ - 'github_slug': 'Luzifer/password', - }) - - if wf.update_available: - # Download new version and tell Alfred to install it - wf.start_update() - - sys.exit(wf.run(main)) diff --git a/alfred-workflow/icon.png b/alfred-workflow/icon.png deleted file mode 100644 index 32c10c2f6c270c42746506eba74f1fa0719f22d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13094 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 A8vp - - - - bundleid - io.luzifer.pwd - category - Tools - connections - - F8CBCF9B-3B33-400E-B6AD-6B8500938BA4 - - - destinationuid - F417810A-4CC7-4844-9B6E-DA2D6B40543C - modifiers - 0 - modifiersubtext - - vitoclose - - - - - createdby - Knut Ahlers - description - Generate secure passwords using Luzifer/password tool - disabled - - name - Password Generator - objects - - - config - - autopaste - - clipboardtext - {query} - transient - - - type - alfred.workflow.output.clipboard - uid - F417810A-4CC7-4844-9B6E-DA2D6B40543C - version - 2 - - - config - - alfredfiltersresults - - argumenttrimmode - 0 - argumenttype - 1 - escaping - 0 - keyword - pwd - queuedelaycustom - 1 - queuedelayimmediatelyinitially - - queuedelaymode - 0 - queuemode - 1 - runningsubtext - Generating password... - script - python exec.py "$1" - scriptargtype - 1 - scriptfile - - subtext - Generates a secure password with <n> length - title - Password Generator - type - 0 - withspace - - - type - alfred.workflow.input.scriptfilter - uid - F8CBCF9B-3B33-400E-B6AD-6B8500938BA4 - version - 2 - - - readme - - uidata - - F417810A-4CC7-4844-9B6E-DA2D6B40543C - - xpos - 700 - ypos - 170 - - F8CBCF9B-3B33-400E-B6AD-6B8500938BA4 - - xpos - 300 - ypos - 170 - - - webaddress - https://github.com/Luzifer/password - - diff --git a/alfred-workflow/lib b/alfred-workflow/lib deleted file mode 160000 index 183a232..0000000 --- a/alfred-workflow/lib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 183a2326cfe4fa11af3c1cd186579a35cef1792b diff --git a/build-workflow.sh b/build-workflow.sh deleted file mode 100644 index f845573..0000000 --- a/build-workflow.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -set -euxo pipefail - -# Check for a publishable version -VERSION=$(git describe --tags --exact-match || echo "notag") - -# Collect assets to pack -mkdir -p dist -unzip ./.build/password_darwin_amd64.zip -d dist -cp -r \ - alfred-workflow/exec.py \ - alfred-workflow/icon.png \ - alfred-workflow/info.plist \ - alfred-workflow/lib/workflow \ - dist - -# In order to have a valid version number on no tags for testing -git describe --tags >dist/version - -# Create ZIP -cd dist -zip -r -9 ../PasswordGenerator.alfredworkflow * -cd - - -# If there is no version tag the artifact is not to be published -if (test "${VERSION}" == "notag"); then - echo "No exact tag found, no publishing required." - exit 0 -fi - -# Upload to Github releases -github-release upload --user luzifer --repo password --tag ${VERSION} \ - --name PasswordGenerator.alfredworkflow \ - --file PasswordGenerator.alfredworkflow diff --git a/bindata.go b/cmd/password/bindata.go similarity index 99% rename from bindata.go rename to cmd/password/bindata.go index 6604577..05bda7a 100644 --- a/bindata.go +++ b/cmd/password/bindata.go @@ -20193,60 +20193,60 @@ func bindataFrontendAssetsFfcc050b2d92d4b14a4fcb527ee0bcc8woff() (*asset, error) } var _bindataFrontendIndexhtml = []byte( - "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\xef\x8e\xdb\xb8\x11\xff\x9e\xa7\x98\x53\x50\xf4\xcb\xc9\x4a\x2e" + - "\xc1\xe1\x9a\x4a\x2e\x82\xcd\xb5\xd9\x36\x87\xa4\xd8\x14\x68\x3e\x15\x23\x71\x24\x31\xa6\x48\x81\x1c\xda\xeb\xbe" + - "\x48\x1f\xa8\x2f\x56\x90\x92\xbc\x96\x2d\xdf\x7a\x0f\x45\xf6\x8b\xb9\xe4\x8f\xe4\xfc\xfb\xcd\x0c\x95\x7f\xf7\xee" + - "\xe3\xcd\xe7\x2f\x9f\x7e\x86\x96\x3b\xb5\x7e\x96\x87\x1f\x50\xa8\x9b\x22\x21\x9d\xac\x9f\x01\xe4\x2d\xa1\x08\x03" + - "\x80\xbc\x23\x46\xa8\x5a\xb4\x8e\xb8\x48\x3c\xd7\xe9\x4f\xc9\xf1\x92\xc6\x8e\x8a\x64\x2b\x69\xd7\x1b\xcb\x09\x54" + - "\x46\x33\x69\x2e\x92\x9d\x14\xdc\x16\x82\xb6\xb2\xa2\x34\xfe\xf3\x3d\x48\x2d\x59\xa2\x4a\x5d\x85\x8a\x8a\x97\xdf" + - "\x83\x6b\xad\xd4\x9b\x94\x4d\x5a\x4b\x2e\xb4\x99\x8e\x66\xc9\x8a\xd6\x77\x54\x79\x4b\xf0\x09\x9d\xdb\x19\x2b\xf2" + - "\x6c\x98\x7e\x36\x60\xbe\x4b\x53\xf8\x60\x50\x00\xf6\x3d\xb8\xca\xca\x9e\x81\xd0\xaa\x3d\xb0\x81\xde\xd2\x96\x34" + - "\x43\xa9\x50\x6f\xe0\xfd\xe7\x5f\x3e\xc0\x4e\x72\x6b\x3c\x83\xe3\xbd\x92\xba\x81\x34\x1d\x2f\x1b\xf7\x3a\x5b\x15" + - "\x09\x3a\x47\xec\xb2\xd2\x6b\xa1\x68\xf5\xd5\x25\xeb\x3c\x1b\xd6\xa3\x61\xb2\xc9\x32\x79\x69\xc4\x7e\xdc\xaf\x71" + - "\x0b\x95\x42\xe7\x8a\x44\xe3\xb6\x44\x0b\xc3\x4f\x4a\xf7\x3d\x6a\x91\xaa\x66\x9a\x50\xb2\x69\x19\xca\x66\x18\x8c" + - "\xca\x02\xe4\x38\xdf\x9f\x96\x16\xb5\x48\xa0\xb5\x54\x17\xc9\xf3\xe4\xdc\x10\x78\xd8\x5a\x7a\x66\xa3\x4f\xf6\xb3" + - "\x69\x1a\x45\x36\x01\xde\xf7\x54\x24\x03\x26\x01\x81\x8c\xe3\x5a\x91\x54\x46\x29\xec\x1d\x4d\xd3\x68\x9b\xe0\xe1" + - "\xe7\xc3\x11\x77\xbe\x0f\xfe\x24\x71\x33\xf8\x33\x01\xb4\x12\xd3\xe0\x5d\x6b\xd4\xe1\xa6\x0b\xb0\x41\x71\x12\x45" + - "\x52\xa3\x0a\x57\xc4\x59\x85\x25\xa9\x22\xf9\x1c\x05\x08\x26\x91\x0d\xb2\x34\xfa\x60\x87\xe0\x8b\x1e\x2f\x28\x93" + - "\xca\x2a\x40\xf3\x2c\x40\x0e\xea\x67\x83\x6e\x63\x4c\x00\xe4\x42\x1e\x9c\x31\x69\x38\x59\xff\x41\x63\x29\x2e\x2a" + - "\x70\x24\x8b\x57\x27\x92\x04\x47\x77\x36\x45\xcf\xe6\x08\x07\x90\x2b\x79\x84\x4c\x25\x53\x37\x5b\x3f\xf1\x70\xaa" + - "\xa4\xde\x4c\xde\x6d\x99\x7b\xf7\x26\xcb\x1a\xc9\xad\x2f\x57\x95\xe9\xb2\x0f\xfe\xdf\xb2\x26\x9b\xf5\xa3\xbb\x9f" + - "\x6f\x25\xa6\xa8\x6a\x4b\x22\x59\xbf\x8d\xbf\xf0\xf3\x3d\x93\x76\xd2\xe8\xa3\x58\x18\x0c\xa2\xe4\x37\x17\xad\x97" + - "\xc9\xfa\xed\xa7\x5b\x78\x67\x2a\xdf\x91\xe6\xe8\xd5\x5f\x15\x2c\xcf\xbc\x3a\xf8\xec\x82\xa9\x9f\x6a\xe2\x91\x09" + - "\xf3\x90\x1f\xf7\x94\xac\xa1\x64\x9d\x0a\xaa\xd1\x2b\x9e\x22\xa2\xe4\x53\x56\x74\x46\xa0\x3a\xa5\x84\x23\x66\xa9" + - "\x1b\xf7\x4b\x5c\x9c\x5f\x0b\x90\x1f\x24\xab\xd1\x41\x1d\x48\xd2\x8c\x11\xdf\x4a\x21\x48\x17\x09\x5b\x4f\x21\x74" + - "\xe5\x1a\xee\xc6\xb3\xe6\xb2\x1f\xc2\xf8\xd7\x0d\x36\x8d\x85\xdc\x8e\xb9\x27\xd3\xb8\x9d\x12\xe2\x2c\xf4\x35\xa3" + - "\xd4\x64\xa1\xe3\xf4\xf5\x43\xa2\x39\x82\x58\xb3\x83\xaf\xde\xb1\xac\xf7\xe9\x98\xb4\xd3\x4e\xa4\x15\x69\x26\x7b" + - "\x4c\x83\x39\xa3\xd2\x7b\x97\xbe\xfc\x01\xc2\xc8\x75\xe9\x4f\x71\xd0\x89\xf4\xc7\xe4\xc8\x9d\xf3\x4d\x5f\x7d\x57" + - "\x1a\xb6\x33\x9e\x47\x4c\x3f\x21\x14\xa1\x80\xb3\x8b\x87\xbf\x5b\xd8\x49\xa5\xa0\x21\x4d\x16\x99\x00\x41\xd3\x0e" + - "\xdc\x90\x10\xa7\x30\x04\xda\x92\xdd\xc3\xab\x17\x61\xc1\x68\xe1\x56\xf0\x57\xef\x18\x2a\x25\xab\x0d\x70\x7b\x84" + - "\x64\x03\x1b\xa2\x3e\x4e\x56\xde\xda\x50\x24\x8c\xa6\x15\x9c\x38\xa4\x9f\xfb\x22\x5a\xfc\x82\x82\x15\x5a\x01\x5d" + - "\x99\xbe\x3a\x55\xf0\x04\x93\x86\xe2\xb1\xa0\xe2\x17\xe3\xed\x41\xc0\x13\x31\x0e\x9e\xbe\x78\x68\x28\x44\xe7\x31" + - "\x79\x84\xaa\x8d\xed\xd2\xc6\x1a\xdf\x9f\xc1\x42\xf0\xea\xde\xf3\x0c\x3a\xe6\xf8\xc9\x21\x31\x59\xd6\xa6\xf2\x8e" + - "\xc4\x6d\x00\x4f\x55\x85\xe9\x9e\x13\xd8\xa2\xf2\x54\x24\xab\xd5\xea\x5c\x88\x05\xe9\xaf\x50\xa8\x36\x66\x29\x10" + - "\x8e\x71\xbd\x35\x8d\x25\xe7\x96\x14\x5a\x80\xa5\x25\xda\x24\xd6\x7d\x1a\xfb\x92\x37\xf0\xf2\xc5\x8b\xdf\xfd\x31" + - "\x70\xf2\x4c\xa0\xeb\x04\x7f\x3c\x24\x7e\x63\x34\xfc\xf9\xed\xdf\xff\x4f\x31\xf0\x90\x31\x8e\x26\x95\x5c\xe7\x2e" + - "\xb0\xb1\x59\xbf\x33\xb0\x37\x1e\x1c\x1b\x4b\xd0\xed\x0f\x21\xf8\xa7\x3c\x1b\x11\x79\x69\xcf\x8f\xf8\x62\x3c\x08" + - "\xaa\xa4\x20\xd8\xb5\xb2\x6a\x03\x7d\x02\xad\x18\x37\x04\xa8\x05\xec\x68\xe0\xac\x36\x3c\x1e\x8e\x7a\x0f\xa6\x8e" + - "\x9c\x9b\x88\x2c\x0e\xd7\xb9\x15\x7c\x6e\x91\x61\x87\xfb\x28\x4f\x85\x1a\x4a\x02\x17\x08\x6e\xb4\x1a\x26\x37\xda" + - "\xec\xc6\xeb\x0e\x54\x8e\xe0\xd6\x38\x5a\x9d\xab\x79\x52\x06\xcf\x95\x7f\x6f\x0e\x59\x04\x2d\x05\xd1\xdc\x43\x96" + - "\x70\x8f\x98\xe0\xad\x52\x0f\xd8\xb8\xbf\x6a\xa9\xda\x90\x00\x6c\x50\x6a\xc7\x80\xe0\x88\x83\xce\xd6\x2b\x72\xc1" + - "\x3c\xa4\xa3\x46\xdc\xd2\x1e\x84\x21\x17\xcd\x33\xe6\x69\xe8\x91\x99\xac\x76\xa3\x8a\x3b\xe3\x95\x80\x2e\x18\x54" + - "\x86\xa6\xd6\xed\xa1\x36\x16\x62\x3c\x63\x17\x8f\x6b\x3c\x39\x37\x4b\x6d\xbf\xc5\x0a\x37\xa8\xe1\x16\x6c\xc8\xbf" + - "\xe1\x28\x67\xbc\xad\x08\x2a\x23\xe8\x11\x0b\x7c\xac\xa1\x32\xde\x3a\x9a\x5c\xb6\x82\x5b\xfe\xbd\x83\xde\x97\x4a" + - "\xba\x96\x04\x18\x1d\x5a\x8b\xab\x3b\x89\x64\xfd\x17\xc9\xef\x7d\x19\xda\x06\x60\xd3\x10\xb7\x64\x63\xcf\x0e\x08" + - "\x4c\x8e\xc1\x79\xc9\x34\xb7\xe4\x89\x13\x1c\xd6\x57\xc6\xc2\x71\x39\x9d\x66\x1e\x21\xf8\x0c\x30\x2b\xc1\x0f\xb8" + - "\x63\x62\x8e\x9d\x44\xc8\x9e\xf3\xfe\x01\xac\x09\x79\x48\x48\x54\xa6\x59\x2c\xcd\x71\x6b\x3a\x02\x26\xf8\xd8\x5b" + - "\x5d\xa8\xcc\xc3\x96\xea\xac\x89\x5d\x42\x2d\x26\x9e\xbc\x7d\x3d\x47\xc5\xb7\x56\x78\x7a\x0c\xb2\xe7\x59\xfb\xfa" + - "\x09\x0d\x57\xa5\xcc\xe1\x69\x21\xa4\xeb\xe4\x91\x49\x16\x5a\xa3\xff\xfe\x67\xb9\x05\x3a\xf5\xc9\x99\x2e\x0b\x99" + - "\xef\xca\xda\x97\xc7\xe7\x48\xe0\x55\x91\x4c\x61\xf4\x81\x74\xc3\xed\xc7\x3e\xbe\x4a\x8e\x7b\x29\x6b\xd4\xf0\x7c" + - "\x49\xd6\xd3\x23\x0c\x54\x04\xbf\xc9\xb3\xb8\x70\xde\x15\xc6\xc2\x3a\x18\x47\xfb\xae\x0c\xa5\x74\xa1\xcc\x1e\x2a" + - "\xe8\x0f\x2f\x86\x60\x59\x94\xe5\x49\x55\xf4\x51\xa5\x2f\xb6\x01\x83\xb4\x31\x97\x95\xe6\x7e\x90\xc7\x3b\xba\xeb" + - "\xa9\x92\xa8\x26\x59\xe0\x1f\x8e\xc0\x0d\x73\xf1\xd3\x00\x56\x4c\xd6\x9d\x51\x6c\xe1\xae\x6f\x2d\xf9\x3f\xff\x76" + - "\xf3\x6e\x26\xf6\x59\x4a\xba\xdf\x54\x22\x26\xa4\x3f\xbc\xfa\x31\x4b\x60\xea\xf9\xff\x15\x3f\x1c\x24\xeb\x70\xc0" + - "\xd0\x39\x3c\xe4\x9a\x93\x97\xcd\xf5\xca\x5e\x11\xcf\x8b\xcd\xcf\x53\x9e\x36\xcb\x9c\x5b\xdf\x04\x3e\x2e\x71\xec" + - "\xca\xd3\x7b\x2b\x3b\xb4\xfb\xc1\xb0\x26\x5a\xf4\x0e\xb7\x21\x3f\xe0\x36\x54\x3f\xd4\x0d\xb9\x2b\x38\xfc\x78\x16" + - "\xcd\xb3\xe1\xd3\x4a\x9e\x0d\xdf\xa7\xfe\x17\x00\x00\xff\xff\xf5\xdc\xbb\xb3\xb0\x12\x00\x00") + "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\xdb\x8e\xdc\xb8\x11\x7d\xf7\x57\xd4\xca\x08\xf2\xb2\x6a\xd9\x6b" + + "\x63\xb1\x71\xa4\x0e\x8c\x71\x12\x4f\xe2\x85\x1d\x8c\x03\xc4\x4f\x41\x49\xac\x96\xe8\xa6\x48\x81\x2c\x76\x4f\xe7" + + "\x47\xf2\x41\xf9\xb1\x80\xd4\x65\xa4\x6e\x4d\xa6\xbd\x08\xd6\x2f\x23\x93\x87\x64\x5d\x4e\x1d\x16\x3b\xff\xee\xdd" + + "\xc7\x9b\xcf\x5f\x3e\xfd\x11\x1a\x6e\xd5\xf6\x59\x1e\xfe\x80\x42\x5d\x17\x09\xe9\x64\xfb\x0c\x20\x6f\x08\x45\xf8" + + "\x00\xc8\x5b\x62\x84\xaa\x41\xeb\x88\x8b\xc4\xf3\x2e\xfd\x29\x99\x4f\x69\x6c\xa9\x48\x0e\x92\x8e\x9d\xb1\x9c\x40" + + "\x65\x34\x93\xe6\x22\x39\x4a\xc1\x4d\x21\xe8\x20\x2b\x4a\xe3\x7f\xbe\x07\xa9\x25\x4b\x54\xa9\xab\x50\x51\xf1\xf2" + + "\x7b\x70\x8d\x95\x7a\x9f\xb2\x49\x77\x92\x0b\x6d\xc6\xad\x59\xb2\xa2\xed\x1d\x55\xde\x12\x7c\x42\xe7\x8e\xc6\x8a" + + "\x3c\xeb\x87\x9f\xf5\x98\xef\xd2\x14\x3e\x18\x14\x80\x5d\x07\xae\xb2\xb2\x63\x20\xb4\xea\x04\x6c\xa0\xb3\x74\x20" + + "\xcd\x50\x2a\xd4\x7b\x78\xff\xf9\xe7\x0f\x70\x94\xdc\x18\xcf\xe0\xf8\xa4\xa4\xae\x21\x4d\x87\xc3\x86\xb5\xce\x56" + + "\x45\x82\xce\x11\xbb\xac\xf4\x5a\x28\xda\x7c\x75\xc9\x36\xcf\xfa\xf9\x18\x98\x6c\x8c\x4c\x5e\x1a\x71\x1a\xd6\x6b" + + "\x3c\x40\xa5\xd0\xb9\x22\xd1\x78\x28\xd1\x42\xff\x27\xa5\xfb\x0e\xb5\x48\x55\x3d\x0e\x28\x59\x37\x0c\x65\xdd\x7f" + + "\x0c\xce\x02\xe4\xb8\x5c\x9f\x96\x16\xb5\x48\xa0\xb1\xb4\x2b\x92\xe7\xc9\x65\x20\x70\x5a\x5a\x7a\x66\xa3\xcf\xd6" + + "\xb3\xa9\x6b\x45\x36\x01\x3e\x75\x54\x24\x3d\x26\x01\x81\x8c\xc3\x5c\x91\x54\x46\x29\xec\x1c\x8d\xc3\x68\xeb\x90" + + "\xe1\xe7\xfd\x16\x77\xbe\x0b\xf9\x24\x71\xd3\xe7\x33\x01\xb4\x12\xd3\x90\x5d\x6b\xd4\x74\xd2\x23\xb0\xde\x71\x12" + + "\x45\xb2\x43\x15\x8e\x88\xa3\x0a\x4b\x52\x45\xf2\x39\x1a\x10\x42\x22\x6b\x64\x69\xf4\x14\x87\x90\x8b\x0e\x1f\x71" + + "\x26\x95\x55\x80\xe6\x59\x80\x4c\xee\x67\xbd\x6f\x03\x27\x00\x72\x21\xa7\x64\x8c\x1e\x8e\xd1\x7f\xf0\x58\x8a\x47" + + "\x1d\x98\xd9\xe2\xd5\x99\x25\x21\xd1\xad\x4d\xd1\xb3\x99\xe1\x00\x72\x25\x67\xc8\x54\x32\xb5\x8b\xf9\xb3\x0c\xa7" + + "\x4a\xea\xfd\x98\xdd\x86\xb9\x73\x6f\xb2\xac\x96\xdc\xf8\x72\x53\x99\x36\xfb\xe0\xff\x25\x77\x64\xb3\x6e\x48\xf7" + + "\xf3\x83\xc4\x14\x3b\x99\x6c\xdf\x7e\xba\x85\x77\xa6\xf2\x2d\x69\x8e\xa1\x9b\x31\xa1\x0f\x87\x92\x33\x07\x32\xaf" + + "\xa6\xc0\x3c\xe2\xcf\xb7\xfa\x31\xd0\x6d\xc9\xab\x61\x4d\xc9\x1a\x4a\xd6\xa9\xa0\x1d\x7a\xc5\x63\xd8\x4b\x3e\xa7" + + "\x5e\x6b\x04\xaa\x73\xde\x39\x62\x96\xba\x76\x3f\xc7\xc9\xe5\xb1\x00\xf9\x64\xd9\x0e\x1d\xec\x02\x13\xeb\x81\x56" + + "\x8d\x14\x82\x74\x91\xb0\xf5\x14\xf8\x21\xb7\x70\x37\xec\xb5\xb4\x7d\xe2\xca\xff\x0e\xd8\xf8\x2d\xe4\x61\x28\xf0" + + "\x4c\xe3\x61\x54\x9d\x05\xbf\x34\xa3\xd4\x64\xa1\xe5\xf4\xf5\x43\x35\xcf\x20\xd6\x1c\xe1\xab\x77\x2c\x77\xa7\x74" + + "\x50\xc6\xb4\x15\x69\x45\x9a\xc9\xce\xb9\xb6\xa4\x6d\x7a\xef\xd2\x97\x3f\x40\xf8\x72\x6d\xfa\x53\xfc\x68\x45\xfa" + + "\x63\x32\x4b\xe7\x72\xd1\x57\xdf\x96\x86\xed\xa2\x98\x22\xa6\x1b\x11\x8a\x50\xc0\xc5\xc1\xfd\xbf\x5b\x38\x4a\xa5" + + "\xa0\x26\x4d\x16\x99\x00\x41\xd3\x11\x5c\xaf\x3a\x23\x0d\x81\x0e\x64\x4f\xf0\xea\x45\x98\x30\x5a\xb8\x0d\xfc\xc5" + + "\x3b\x86\x4a\xc9\x6a\x0f\xdc\xcc\x90\x6c\x60\x4f\xd4\xc5\xc1\xca\x5b\x1b\x94\xd8\x68\xda\xc0\x59\x42\xba\x65\x2e" + + "\x62\xc4\x1f\x71\xb0\x42\x2b\xa0\x2d\xd3\x57\xe7\x0e\x9e\x61\xd2\xa0\xd0\x2b\x2e\x7e\x31\xde\x4e\x06\x9e\x99\x31" + + "\x65\xfa\xd1\x4d\x83\xda\x5f\x72\x72\x86\xda\x19\xdb\xa6\xb5\x35\xbe\xbb\x80\x05\xf2\xea\xce\xf3\x02\x3a\x08\xe9" + + "\x98\x90\xa8\x48\x3b\x53\x79\x47\xe2\x36\x80\x47\xe9\x66\xba\xe7\x04\x0e\xa8\x3c\x15\xc9\x66\xb3\xb9\x34\x62\xc5" + + "\xfa\x2b\x1c\xda\x19\xb3\x46\x84\x39\xae\xb3\xa6\xb6\xe4\xdc\x9a\x43\x2b\xb0\xb4\x44\x9b\xc4\xcb\x95\x86\xcb\xff" + + "\x0d\xbc\x7c\xf1\xe2\x37\xbf\x0f\x35\x79\x61\xd0\x75\x86\x3f\x4d\x89\x5f\xc8\x86\x3f\xbd\xfd\xdb\xff\x89\x03\x0f" + + "\x8a\x31\x1b\x54\x72\x9b\xbb\x50\x8d\xf5\xf6\x9d\x81\x93\xf1\xe0\xd8\x58\x82\xf6\x34\x51\xf0\x0f\x79\x36\x20\xf2" + + "\xd2\x5e\x6e\xf1\xc5\x78\x10\x54\x49\x41\x70\x6c\x64\xd5\x84\xf2\x09\x65\xc5\xb8\x27\x40\x2d\xe0\x48\x7d\xcd\x6a" + + "\xc3\xc3\xe6\xa8\x4f\x60\x76\xb1\xe6\xc6\x42\x16\xd3\x71\x6e\x03\x9f\x1b\x64\x38\xe2\x29\xda\x53\xa1\x86\x92\xc0" + + "\x85\x02\x37\x5a\xf5\x83\x7b\x6d\x8e\xc3\x71\x53\x29\x47\x70\x63\x1c\x6d\x2e\xdd\x5c\x88\xe7\x9a\xf3\xef\xcd\xa4" + + "\x22\x68\x29\x98\xe6\x1e\x54\xc2\x3d\x11\x82\xb7\x4a\x3d\x60\xe3\xfa\xaa\xa1\x6a\x4f\x02\xb0\x46\xa9\x1d\x03\x82" + + "\x23\x0e\x3e\x5b\xaf\xc8\x85\xf0\x90\x8e\x1e\x71\x43\x27\x10\x86\x5c\x0c\xcf\xa0\xd3\xd0\x21\x33\x59\xed\x06\x17" + + "\x8f\xc6\x2b\x01\x6d\x08\xa8\x0c\x9d\xa3\x3b\xc1\xce\x58\x88\x7c\xc6\x36\x6e\x57\x7b\x72\x6e\x21\x6d\xbf\x24\x0a" + + "\x37\xa8\xe1\x16\x6c\xd0\xdf\xb0\x95\x33\xde\x56\x04\x95\x11\xf4\x44\x04\x3e\xee\xa0\x32\xde\x3a\x1a\x53\xb6\x81" + + "\x5b\xfe\xad\x83\xce\x97\x4a\xba\x86\x04\x18\x1d\x5a\x8b\xab\x3b\x89\x64\xfb\x67\xc9\xef\x7d\x19\xda\x06\x60\x53" + + "\x13\x37\x64\x63\x63\x0c\x08\x4c\x8e\xc1\x79\xc9\xb4\x8c\xe4\x59\x12\x1c\xee\xae\xe4\xc2\xfc\x3a\x1d\x47\x9e\x28" + + "\xf0\x05\x60\x71\x05\x3f\xe0\xe6\x85\x39\x74\x12\x41\x3d\x97\xfd\x03\x58\x13\x74\x48\x48\x54\xa6\x5e\xbd\x9a\xe3" + + "\xd2\x74\x00\x8c\xf0\xa1\xb7\x7a\xe4\x66\xee\x97\x54\x17\x9d\xe2\x1a\x6a\x55\x78\xf2\xe6\xf5\x12\x15\x1f\x34\xa1" + + "\xbf\xef\x6d\xcf\xb3\xe6\xf5\x37\x34\x5c\x95\x32\x53\xff\x2e\xa4\x6b\xe5\x2c\x24\x2b\xad\xd1\x7f\xfe\xbd\xde\x02" + + "\x9d\xe7\xe4\xc2\x97\x15\xe5\xbb\xf2\xee\xcb\x63\xcf\x1f\xea\xaa\x48\x46\x1a\x7d\x20\x5d\x73\xf3\xb1\x8b\xad\xff" + + "\xbc\x97\xb2\x46\xf5\x6f\x84\x64\x3b\xbe\x74\x40\x45\xf0\x9b\x3c\x8b\x13\x97\x5d\x61\xbc\x58\xfb\xe0\x68\xdf\x96" + + "\xe1\x2a\x5d\xb9\x66\xa7\x1b\xf4\x87\x17\x3d\x59\x56\x6d\xf9\xa6\x5b\xf4\x49\xa7\x1f\x6d\x03\x7a\x6b\xa3\x96\x95" + + "\xe6\xbe\xb7\xc7\x3b\xba\xeb\xa8\x92\xa8\x46\x5b\xe0\xef\x8e\xc0\xf5\x63\xf1\xfd\x8d\x15\x93\x75\x17\x25\xb6\x72" + + "\xd6\xaf\x6d\xf9\x3f\xfe\x7a\xf3\x6e\x61\xf6\x85\x24\xdd\xef\x2b\x11\x05\xe9\x77\xaf\x7e\xcc\x12\x18\x7b\xfe\x7f" + + "\xc6\xd7\x79\xb2\x0d\x1b\xf4\x9d\xc3\x83\xd6\x9c\xbd\x6c\xae\x77\xf6\x0a\x3e\xaf\x36\x3f\xdf\xf2\xb4\x59\xaf\xb9" + + "\xed\x4d\xa8\xc7\xb5\x1a\xbb\x72\xf7\xce\xca\x16\xed\xa9\x0f\xac\x89\x11\xbd\xc3\x43\xd0\x07\x3c\x84\xdb\x0f\x75" + + "\x4d\xee\x8a\x1a\x7e\x5a\x45\xf3\xac\xff\xfd\x22\xcf\xfa\x1f\x81\xfe\x1b\x00\x00\xff\xff\x46\x6e\x97\x23\x15\x12" + + "\x00\x00") func bindataFrontendIndexhtmlBytes() ([]byte, error) { return bindataRead( @@ -20265,7 +20265,7 @@ func bindataFrontendIndexhtml() (*asset, error) { info := bindataFileInfo{ name: "frontend/index.html", - size: 4784, + size: 4629, md5checksum: "", mode: os.FileMode(420), modTime: time.Unix(1, 0), diff --git a/cmdGet.go b/cmd/password/cmdGet.go similarity index 100% rename from cmdGet.go rename to cmd/password/cmdGet.go diff --git a/cmdServe.go b/cmd/password/cmdServe.go similarity index 100% rename from cmdServe.go rename to cmd/password/cmdServe.go diff --git a/cmdVersion.go b/cmd/password/cmdVersion.go similarity index 100% rename from cmdVersion.go rename to cmd/password/cmdVersion.go diff --git a/flags.go b/cmd/password/flags.go similarity index 100% rename from flags.go rename to cmd/password/flags.go diff --git a/cmd/password/go.mod b/cmd/password/go.mod new file mode 100644 index 0000000..0786e65 --- /dev/null +++ b/cmd/password/go.mod @@ -0,0 +1,14 @@ +module github.com/Luzifer/password/cmd/password + +go 1.12 + +require ( + github.com/Luzifer/go_helpers v2.8.1+incompatible + github.com/Luzifer/password v1.13.1 + github.com/gorilla/mux v1.7.0 + github.com/pkg/errors v0.8.1 // indirect + github.com/spf13/cobra v0.0.3 + github.com/spf13/pflag v1.0.3 // indirect + github.com/tredoe/osutil v0.0.0-20161130133508-7d3ee1afa71c // indirect + golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25 // indirect +) diff --git a/cmd/password/go.sum b/cmd/password/go.sum new file mode 100644 index 0000000..cfc1059 --- /dev/null +++ b/cmd/password/go.sum @@ -0,0 +1,17 @@ +github.com/Luzifer/go_helpers v2.8.1+incompatible h1:9YvrAn7pU2viK5vRpAnI+0gyz+Tw8rxWHVIYHi642zk= +github.com/Luzifer/go_helpers v2.8.1+incompatible/go.mod h1:5yUSe0FS7lIx1Uzmt0R3tdPFrSSaPfiCqaIA6u0Zn4Y= +github.com/Luzifer/password v1.13.1 h1:peyCOEtIF7bmApaKM9ahJ4+BbN9ZZgzj+19A7aO6988= +github.com/Luzifer/password v1.13.1/go.mod h1:F8bbXgwczd/1vyyJ9G8Z6hPvaqtpKR9VZM0E7jkZKJc= +github.com/gorilla/mux v1.7.0 h1:tOSd0UKHQd6urX6ApfOn4XdBMY6Sh1MfxV3kmaazO+U= +github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/tredoe/osutil v0.0.0-20161130133508-7d3ee1afa71c h1:5q7IHeqvAA4hWR1CfpTOS7RFsTDC36TaSZ8Dvc00bPk= +github.com/tredoe/osutil v0.0.0-20161130133508-7d3ee1afa71c/go.mod h1:M/I710pXKQToMdqt/D+mJ4QsnW6WDaajyB6DWFmDXBs= +golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25 h1:jsG6UpNLt9iAsb0S2AGW28DveNzzgmbXR+ENoPjUeIU= +golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/main.go b/cmd/password/main.go similarity index 100% rename from main.go rename to cmd/password/main.go diff --git a/frontend/index.html b/frontend/index.html index 5d1d6f8..d32d7c3 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -17,9 +17,6 @@