43 lines
		
	
	
		
			895 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			895 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package certmagic is the ACME provider from github.com/mholt/certmagic
 | 
						|
package certmagic
 | 
						|
 | 
						|
import (
 | 
						|
	"net"
 | 
						|
 | 
						|
	"github.com/mholt/certmagic"
 | 
						|
 | 
						|
	"github.com/micro/go-micro/api/server/acme"
 | 
						|
)
 | 
						|
 | 
						|
type certmagicProvider struct {
 | 
						|
	opts *acme.Options
 | 
						|
}
 | 
						|
 | 
						|
func (c *certmagicProvider) NewListener(ACMEHosts ...string) (net.Listener, error) {
 | 
						|
	if c.opts.ChallengeProvider != nil {
 | 
						|
		// Enabling DNS Challenge disables the other challenges
 | 
						|
		certmagic.Default.DNSProvider = c.opts.ChallengeProvider
 | 
						|
	}
 | 
						|
	if c.opts.OnDemand {
 | 
						|
		certmagic.Default.OnDemand = new(certmagic.OnDemandConfig)
 | 
						|
	}
 | 
						|
	return certmagic.Listen(ACMEHosts)
 | 
						|
}
 | 
						|
 | 
						|
// New returns a certmagic provider
 | 
						|
func New(options ...acme.Option) acme.Provider {
 | 
						|
	o := &acme.Options{}
 | 
						|
	if len(options) == 0 {
 | 
						|
		for _, op := range acme.Default() {
 | 
						|
			op(o)
 | 
						|
		}
 | 
						|
	} else {
 | 
						|
		for _, op := range options {
 | 
						|
			op(o)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return &certmagicProvider{
 | 
						|
		opts: o,
 | 
						|
	}
 | 
						|
}
 |