From 16dad2f1cf5633684bcf2443805569391d38f92b Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 10 Apr 2024 17:43:39 +0200 Subject: [PATCH] imported go_client for future tests --- go_client/TODO.md | 9 +++++++++ go_client/go.mod | 15 ++++++++++++++ go_client/go.sum | 22 ++++++++++++++++++++ go_client/main.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 go_client/TODO.md create mode 100644 go_client/go.mod create mode 100644 go_client/go.sum create mode 100644 go_client/main.go diff --git a/go_client/TODO.md b/go_client/TODO.md new file mode 100644 index 0000000..7769b84 --- /dev/null +++ b/go_client/TODO.md @@ -0,0 +1,9 @@ +- Basic API calls + - Login/logout +- kv IO test module +- Token + - Lookup + - Generation + +(- TLS module) +(- Auth module) \ No newline at end of file diff --git a/go_client/go.mod b/go_client/go.mod new file mode 100644 index 0000000..a29e464 --- /dev/null +++ b/go_client/go.mod @@ -0,0 +1,15 @@ +module github.com/C0ffeeCode/rvault + +go 1.21.9 + +require ( + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-retryablehttp v0.7.5 // indirect + github.com/hashicorp/go-rootcerts v1.0.2 // indirect + github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect + github.com/hashicorp/vault-client-go v0.4.3 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/ryanuber/go-glob v1.0.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/time v0.5.0 // indirect +) diff --git a/go_client/go.sum b/go_client/go.sum new file mode 100644 index 0000000..e39cfb2 --- /dev/null +++ b/go_client/go.sum @@ -0,0 +1,22 @@ +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M= +github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= +github.com/hashicorp/vault-client-go v0.4.3 h1:zG7STGVgn/VK6rnZc0k8PGbfv2x/sJExRKHSUg3ljWc= +github.com/hashicorp/vault-client-go v0.4.3/go.mod h1:4tDw7Uhq5XOxS1fO+oMtotHL7j4sB9cp0T7U6m4FzDY= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= diff --git a/go_client/main.go b/go_client/main.go new file mode 100644 index 0000000..c172975 --- /dev/null +++ b/go_client/main.go @@ -0,0 +1,51 @@ +package main + +import ( + "context" + "log" + "time" + + "github.com/hashicorp/vault-client-go" + "github.com/hashicorp/vault-client-go/schema" +) + +// vault cmd args: >vault server -dev -dev-root-token-id="my-token" + +func main() { + ctx := context.Background() + + // prepare a client with the given base address + client, err := vault.New( + vault.WithAddress("http://127.0.0.1:8200"), + vault.WithRequestTimeout(30*time.Second), + ) + if err != nil { + log.Fatal(err) + } + log.Println("client prepared") + + // authenticate with a root token (insecure) + if err := client.SetToken("my-token"); err != nil { + log.Fatal(err) + } + + // write a secret + _, err = client.Secrets.KvV2Write(ctx, "foo", schema.KvV2WriteRequest{ + Data: map[string]any{ + "password1": "abc123", + "password2": "correct horse battery staple", + }}, + vault.WithMountPath("secret"), + ) + if err != nil { + log.Fatal(err) + } + log.Println("secret written successfully") + + // read the secret + s, err := client.Secrets.KvV2Read(ctx, "foo", vault.WithMountPath("secret")) + if err != nil { + log.Fatal(err) + } + log.Println("secret retrieved:", s.Data.Data) +}