in compliance/elasticsearch.go [27:62]
func NewElasticsearchClient() (*Elasticsearch, error) {
config := elasticsearch.Config{
Addresses: []string{
elasticPackageGetEnv("ELASTICSEARCH_HOST"),
},
Username: elasticPackageGetEnv("ELASTICSEARCH_USERNAME"),
Password: elasticPackageGetEnv("ELASTICSEARCH_PASSWORD"),
}
if caCert := elasticPackageGetEnv("CA_CERT"); caCert != "" {
certPool, err := x509.SystemCertPool()
if err != nil {
return nil, fmt.Errorf("failed to get system certificate pool: %w", err)
}
pem, err := os.ReadFile(caCert)
if err != nil {
return nil, fmt.Errorf("failed to read certificate \"%s\": %w", caCert, err)
}
if ok := certPool.AppendCertsFromPEM(pem); !ok {
return nil, fmt.Errorf("no certs were appended from \"%s\"", caCert)
}
config.Transport = &http.Transport{
TLSClientConfig: &tls.Config{
RootCAs: certPool,
},
}
}
client, err := elasticsearch.NewClient(config)
if err != nil {
return nil, err
}
return &Elasticsearch{
client: client,
}, nil
}