/
vault.go
68 lines (49 loc) · 1.16 KB
/
vault.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package vault
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
"github.com/tidwall/gjson"
)
var VaultToken string
type VaultRequest struct {
Jwt string `json:"jwt"`
Role string `json:"role"`
}
func KVSecrets(env, name, vaultToken string) {
VaultToken = vaultToken
GetKeyValuesSecrets(env, name)
}
func GetKeyValuesSecrets(env, name string) string {
vaultURL := "url" + "env" + "/data/" + name
getcred, err := http.NewRequest("GET", vaultURL, nil)
if err != nil {
log.Fatal(err)
}
getcred.Header.Add("X-Vault-Token", VaultToken)
client := &http.Client{}
resp, err := client.Do(getcred)
if resp.StatusCode != http.StatusOK {
fmt.Println("Projeto não encontrado")
return ""
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
respJSON := string(body)
data := gjson.Get(respJSON, "data.data")
KVSecretsExpose(data)
return data.String()
}
func KVSecretsExpose(rjson gjson.Result) {
rjson.ForEach(func(key gjson.Result, value gjson.Result) bool {
k := fmt.Sprintf("%v", key.Value())
k = strings.ToUpper(string(k))
va := fmt.Sprintf("%v=\"%v\"\n", k, value.String())
fmt.Println(va)
return true
})
}