Skip to content

Commit a17d70e

Browse files
committed
configure bitwarden
1 parent 4bcf4b1 commit a17d70e

File tree

1 file changed

+38
-37
lines changed

1 file changed

+38
-37
lines changed

main.go

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ package main
22

33
import (
44
"bytes"
5-
"crypto/tls"
65
"context"
6+
"crypto/tls"
77
"encoding/json"
88
"flag"
99
"fmt"
1010
"image/color"
1111
"math"
1212
"net/http"
13-
"net/http/httputil"
1413
"os"
1514
"os/exec"
1615
"strconv"
@@ -56,10 +55,10 @@ type basicAuthTransport struct {
5655

5756
// Struct to hold Bitwarden login fields
5857
type BitwardenItem struct {
59-
Login struct {
60-
Username string `json:"username"`
61-
Password string `json:"password"`
62-
} `json:"login"`
58+
Login struct {
59+
Username string `json:"username"`
60+
Password string `json:"password"`
61+
} `json:"login"`
6362
}
6463

6564
func (bat *basicAuthTransport) RoundTrip(req *http.Request) (*http.Response, error) {
@@ -95,23 +94,23 @@ func (bat *basicAuthTransport) transport() http.RoundTripper {
9594

9695
// Get BW_SESSION from env
9796
func getSessionToken() string {
98-
return os.Getenv("BW_SESSION")
97+
return os.Getenv("BW_SESSION")
9998
}
10099

101100
// Run Bitwarden CLI to get the item JSON
102101
func getBitwardenItemJSON(itemName string) ([]byte, error) {
103-
cmd := exec.Command("bw", "get", "item", itemName)
104-
cmd.Env = append(os.Environ(), "BW_SESSION="+getSessionToken())
102+
cmd := exec.Command("bw", "get", "item", itemName)
103+
cmd.Env = append(os.Environ(), "BW_SESSION="+getSessionToken())
105104

106-
var out bytes.Buffer
107-
cmd.Stdout = &out
105+
var out bytes.Buffer
106+
cmd.Stdout = &out
108107

109-
err := cmd.Run()
110-
if err != nil {
111-
return nil, err
112-
}
108+
err := cmd.Run()
109+
if err != nil {
110+
return nil, err
111+
}
113112

114-
return out.Bytes(), nil
113+
return out.Bytes(), nil
115114
}
116115

117116
func loadMetricsFromFile(path string) ([]Metric, error) {
@@ -142,28 +141,29 @@ func GetConfig() (*Config, error) {
142141
}, nil
143142
}
144143

145-
func (c *Config) getMetricValue(metric string) (int, error) {
144+
func (c *Config) getMetricValue(metric string, bitwarden string) (int, error) {
146145

147146
prometheus := c.PrometheusURL
148-
// doing bitwarden stuff here to get prometheus credentials
149-
itemName := "Prometheus Agent RemoteWrite"
150-
jsonData, err := getBitwardenItemJSON(itemName)
151-
if err != nil {
152-
fmt.Printf("Failed to get item from Bitwarden: %v\n", err)
153-
}
154-
155-
var item BitwardenItem
156-
err = json.Unmarshal(jsonData, &item)
157-
if err != nil {
158-
fmt.Printf("Failed to parse Bitwarden JSON: %v\n", err)
159-
}
160-
161-
username := item.Login.Username
162-
password := item.Login.Password
163-
164-
if os.Getenv("PROMETHEUS_URL") != "" {
165-
prometheus = os.Getenv("PROMETHEUS_URL")
166-
}
147+
username := os.Getenv("PROM_USER")
148+
password := os.Getenv("PROM_PASS")
149+
150+
if bitwarden != "" {
151+
// doing bitwarden stuff here to get prometheus credentials
152+
itemName := "Prometheus Agent RemoteWrite"
153+
jsonData, err := getBitwardenItemJSON(itemName)
154+
if err != nil {
155+
fmt.Printf("Failed to get item from Bitwarden: %v\n", err)
156+
}
157+
158+
var item BitwardenItem
159+
err = json.Unmarshal(jsonData, &item)
160+
if err != nil {
161+
fmt.Printf("Failed to parse Bitwarden JSON: %v\n", err)
162+
}
163+
164+
username = item.Login.Username
165+
password = item.Login.Password
166+
}
167167

168168
customClient := &http.Client{
169169
Transport: &http.Transport{
@@ -226,6 +226,7 @@ func main() {
226226

227227
verbose := flag.Bool("v", false, "enable verbose logging")
228228
debug := flag.Bool("d", false, "enable debugging")
229+
bitwarden := flag.Bool("bwd", false, "enable Bitwarden password store")
229230
flag.Parse()
230231

231232
config, err := GetConfig()
@@ -256,7 +257,7 @@ func main() {
256257
)
257258

258259
for _, metric := range config.Metrics {
259-
val, err := config.getMetricValue(metric.Name)
260+
val, err := config.getMetricValue(metric.Name, *bitwarden)
260261

261262
var icon *canvas.Text
262263
var statusText string

0 commit comments

Comments
 (0)