47 lines
919 B
Go
47 lines
919 B
Go
package main
|
|
|
|
const (
|
|
// FILE backend
|
|
FILE string = "file"
|
|
// CONSUL backend
|
|
CONSUL string = "consul"
|
|
// ETCD backend
|
|
ETCD string = "etcd"
|
|
// ZOOKEEPER backend
|
|
ZOOKEEPER string = "zookeeper"
|
|
// BOLTDB backend
|
|
BOLTDB string = "boltdb"
|
|
)
|
|
|
|
// Config represents a configuration for dumping cerificates
|
|
type Config struct {
|
|
Path string
|
|
CertInfo fileInfo
|
|
KeyInfo fileInfo
|
|
DomainSubDir bool
|
|
Watch bool
|
|
BackendConfig interface{}
|
|
}
|
|
|
|
// Backend represents an object storage of ACME data
|
|
type Backend interface {
|
|
getStoredData(watch bool) (<-chan *StoredData, <-chan error)
|
|
}
|
|
|
|
func run(config *Config) error {
|
|
data, errors := config.BackendConfig.(Backend).getStoredData(config.Watch)
|
|
for {
|
|
select {
|
|
case err := <-errors:
|
|
return err
|
|
case acmeData, ok := <-data:
|
|
if !ok {
|
|
return nil
|
|
}
|
|
if err := dump(config, acmeData); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|