2
0
mirror of https://github.com/xcat2/confluent.git synced 2025-09-02 16:28:27 +00:00
Files
confluent/confluent_osdeploy/utils/goapiclient/main.go
2025-03-05 17:14:55 -05:00

58 lines
1.4 KiB
Go

package main
import (
"flag"
"fmt"
"io"
"os"
"net/http"
"crypto/x509"
"crypto/tls"
)
func main() {
certauthority := flag.String("c", "/etc/confluent/ca.pem", "Certificate authorities to use, in PEM format")
targurl := flag.String("u", "", "Url to connect to")
keyfile := flag.String("k", "/etc/confluent/confluent.apikey", "Confluent API key file")
nodename := flag.String("n", "", "Node Name")
usejson := flag.Bool("j", false, "Use JSON")
flag.Parse()
certpool := x509.NewCertPool()
currcacerts, err := os.ReadFile(*certauthority)
if err != nil {
panic(err)
}
confluentapikey, err := os.ReadFile(*keyfile)
if confluentapikey[len(confluentapikey) - 1] == 0xa {
confluentapikey = confluentapikey[:len(confluentapikey)-1]
}
if err != nil {
panic(err)
}
certpool.AppendCertsFromPEM(currcacerts)
client := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
RootCAs: certpool,
},
},
}
rq, err := http.NewRequest(http.MethodGet, *targurl, nil)
if err != nil { panic(err )}
if *usejson { rq.Header.Set("Accept", "application/json") }
if *nodename == "" {
*nodename, err = os.Hostname()
}
rq.Header.Set("CONFLUENT_NODENAME", *nodename)
fmt.Println(string(confluentapikey))
rq.Header.Set("CONFLUENT_APIKEY", string(confluentapikey))
if err != nil { panic(err )}
rsp, err := client.Do(rq)
if err != nil { panic(err )}
rspdata, err := io.ReadAll(rsp.Body)
rsptxt := string(rspdata)
fmt.Println(rsptxt)
}