promgate/envconfig.go
2020-06-04 11:58:44 +02:00

50 lines
992 B
Go

package main
import (
"crypto/x509"
"fmt"
"io/ioutil"
"net/url"
"strings"
)
func (cp *CertPool) Decode(value string) error {
*cp = CertPool{x509.NewCertPool()}
caPEM, err := ioutil.ReadFile(value)
if err != nil {
return fmt.Errorf("unable to open CA file: %w", err)
}
ok := cp.AppendCertsFromPEM(caPEM)
if !ok {
return fmt.Errorf("unable to parse CA")
}
return nil
}
func (cl *CertList) Decode(value string) error {
crlData, err := ioutil.ReadFile(value)
if err != nil {
return fmt.Errorf("unable to open CRL file: %w", err)
}
crl, err := x509.ParseCRL(crlData)
if err != nil {
return fmt.Errorf("unable to parse CRL file: %w", err)
}
*cl = CertList{crl}
return nil
}
func (t *Targets) Decode(value string) error {
splitted := strings.Split(value, ",")
*t = Targets{
targets: make([]*url.URL, len(splitted)),
}
for i, urlString := range splitted {
u, err := url.Parse(urlString)
if err != nil {
return err
}
t.targets[i] = u
}
return nil
}