Read select environment variables when generating the default configuration
This commit is contained in:
parent
ca7cd6496a
commit
51a6ecd826
48
api/api.go
48
api/api.go
|
@ -2,9 +2,11 @@ package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"crypto/tls"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
@ -124,6 +126,52 @@ func DefaultConfig() *Config {
|
||||||
config.Address = addr
|
config.Address = addr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if token := os.Getenv("CONSUL_HTTP_TOKEN"); token != "" {
|
||||||
|
config.Token = token
|
||||||
|
}
|
||||||
|
|
||||||
|
if auth := os.Getenv("CONSUL_HTTP_AUTH"); auth != "" {
|
||||||
|
var username, password string
|
||||||
|
if strings.Contains(auth, ":") {
|
||||||
|
split := strings.SplitN(auth, ":", 2)
|
||||||
|
username = split[0]
|
||||||
|
password = split[1]
|
||||||
|
} else {
|
||||||
|
username = auth
|
||||||
|
}
|
||||||
|
|
||||||
|
config.HttpAuth = &HttpBasicAuth{
|
||||||
|
Username: username,
|
||||||
|
Password: password,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ssl := os.Getenv("CONSUL_HTTP_SSL"); ssl != "" {
|
||||||
|
enabled, err := strconv.ParseBool(ssl)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("[WARN] client: could not parse CONSUL_HTTP_SSL: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if enabled {
|
||||||
|
config.Scheme = "https"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if verify := os.Getenv("CONSUL_HTTP_SSL_VERIFY"); verify != "" {
|
||||||
|
doVerify, err := strconv.ParseBool(verify)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("[WARN] client: could not parse CONSUL_HTTP_SSL_VERIFY: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !doVerify {
|
||||||
|
config.HttpClient.Transport = &http.Transport{
|
||||||
|
TLSClientConfig: &tls.Config{
|
||||||
|
InsecureSkipVerify: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return config
|
return config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -190,6 +190,51 @@ func testKey() string {
|
||||||
buf[10:16])
|
buf[10:16])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDefaultConfig_env(t *testing.T) {
|
||||||
|
addr := "1.2.3.4:5678"
|
||||||
|
token := "abcd1234"
|
||||||
|
auth := "username:password"
|
||||||
|
|
||||||
|
os.Setenv("CONSUL_HTTP_ADDR", addr)
|
||||||
|
defer os.Setenv("CONSUL_HTTP_ADDR", "")
|
||||||
|
os.Setenv("CONSUL_HTTP_TOKEN", token)
|
||||||
|
defer os.Setenv("CONSUL_HTTP_TOKEN", "")
|
||||||
|
os.Setenv("CONSUL_HTTP_AUTH", auth)
|
||||||
|
defer os.Setenv("CONSUL_HTTP_AUTH", "")
|
||||||
|
os.Setenv("CONSUL_HTTP_SSL", "1")
|
||||||
|
defer os.Setenv("CONSUL_HTTP_SSL", "")
|
||||||
|
os.Setenv("CONSUL_HTTP_SSL_VERIFY", "0")
|
||||||
|
defer os.Setenv("CONSUL_HTTP_SSL_VERIFY", "")
|
||||||
|
|
||||||
|
config := DefaultConfig()
|
||||||
|
|
||||||
|
if config.Address != addr {
|
||||||
|
t.Errorf("expected %q to be %q", config.Address, addr)
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.Token != token {
|
||||||
|
t.Errorf("expected %q to be %q", config.Token, token)
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.HttpAuth == nil {
|
||||||
|
t.Fatalf("expected HttpAuth to be enabled")
|
||||||
|
}
|
||||||
|
if config.HttpAuth.Username != "username" {
|
||||||
|
t.Errorf("expected %q to be %q", config.HttpAuth.Username, "username")
|
||||||
|
}
|
||||||
|
if config.HttpAuth.Password != "password" {
|
||||||
|
t.Errorf("expected %q to be %q", config.HttpAuth.Password, "password")
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.Scheme != "https" {
|
||||||
|
t.Errorf("expected %q to be %q", config.Scheme, "https")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !config.HttpClient.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify {
|
||||||
|
t.Errorf("expected SSL verification to be off")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestSetQueryOptions(t *testing.T) {
|
func TestSetQueryOptions(t *testing.T) {
|
||||||
c, s := makeClient(t)
|
c, s := makeClient(t)
|
||||||
defer s.stop()
|
defer s.stop()
|
||||||
|
|
Loading…
Reference in a new issue