diff --git a/pkg/config/custom.go b/pkg/config/custom.go index eaa8856..06550d6 100644 --- a/pkg/config/custom.go +++ b/pkg/config/custom.go @@ -22,6 +22,9 @@ type ServiceConfig struct { EconetEmail string `yaml:"econetEmail" json:"econetEmail,omitempty" env:"ECONET_EMAIL"` EconetPassword string `yaml:"econetPassword" json:"econetPassword,omitempty" env:"ECONET_PASSWORD"` + // Necessary due to ancient TLS certificate run by cloudblade that isn't trusted in modern ca-certificate bundles + EconetTLSInsecure bool `yaml:"econetTLSInsecure" json:"econetTLSInsecure,omitempty" env:"ECONET_TLS_INSECURE" default:"false"` + // CostPerKWH is the electricity price in US dollars per kWh (e.g. 0.18 // means 18 cents/kWh, NOT 18). It derives the econet_energy_cost_dollars // metric from kWh energy usage. diff --git a/pkg/econet/econet.go b/pkg/econet/econet.go index 71cba63..e8eba0a 100644 --- a/pkg/econet/econet.go +++ b/pkg/econet/econet.go @@ -5,8 +5,10 @@ package econet import ( "context" + "crypto/tls" "fmt" "log/slog" + "net/http" rheemcloud "github.com/kevinburke/rheemcloud-go" @@ -55,6 +57,13 @@ func connect(ctx context.Context, cfg *config.ServiceConfig) (*rheemcloud.Client } client, err := rheemcloud.Connect(ctx, cfg.EconetEmail, cfg.EconetPassword, &rheemcloud.Config{ Logger: slog.Default(), + HTTPClient: &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: cfg.EconetTLSInsecure, + }, + }, + }, }) if err != nil { return nil, fmt.Errorf("econet: connect failed: %w", err)