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,
 | |
| 	}
 | |
| }
 |