@@ -36,7 +36,7 @@ func (a *autocertProvider) TLSConfig(hosts ...string) (*tls.Config, error) {
|
||||
dir := cacheDir()
|
||||
if err := os.MkdirAll(dir, 0700); err != nil {
|
||||
if logger.V(logger.InfoLevel) {
|
||||
logger.Infof("warning: autocert not using a cache: %v", err)
|
||||
logger.Info("warning: autocert not using a cache: %v", err)
|
||||
}
|
||||
} else {
|
||||
m.Cache = autocert.DirCache(dir)
|
||||
|
@@ -15,7 +15,7 @@ type httpServer struct {
|
||||
mux *http.ServeMux
|
||||
opts server.Options
|
||||
|
||||
mtx sync.RWMutex
|
||||
sync.RWMutex
|
||||
address string
|
||||
exit chan chan error
|
||||
}
|
||||
@@ -30,8 +30,8 @@ func NewServer(address string, opts ...server.Option) server.Server {
|
||||
}
|
||||
|
||||
func (s *httpServer) Address() string {
|
||||
s.mtx.RLock()
|
||||
defer s.mtx.RUnlock()
|
||||
s.RLock()
|
||||
defer s.RUnlock()
|
||||
return s.address
|
||||
}
|
||||
|
||||
@@ -57,6 +57,9 @@ func (s *httpServer) Start() error {
|
||||
var l net.Listener
|
||||
var err error
|
||||
|
||||
s.RLock()
|
||||
config := s.opts
|
||||
s.RUnlock()
|
||||
if s.opts.EnableACME && s.opts.ACMEProvider != nil {
|
||||
// should we check the address to make sure its using :443?
|
||||
l, err = s.opts.ACMEProvider.Listen(s.opts.ACMEHosts...)
|
||||
@@ -70,19 +73,19 @@ func (s *httpServer) Start() error {
|
||||
return err
|
||||
}
|
||||
|
||||
if logger.V(logger.InfoLevel) {
|
||||
logger.Infof("HTTP API Listening on %s", l.Addr().String())
|
||||
if config.Logger.V(logger.InfoLevel) {
|
||||
config.Logger.Info("HTTP API Listening on %s", l.Addr().String())
|
||||
}
|
||||
|
||||
s.mtx.Lock()
|
||||
s.Lock()
|
||||
s.address = l.Addr().String()
|
||||
s.mtx.Unlock()
|
||||
s.Unlock()
|
||||
|
||||
go func() {
|
||||
if err := http.Serve(l, s.mux); err != nil {
|
||||
// temporary fix
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Errorf("serve err: %v", err)
|
||||
if config.Logger.V(logger.ErrorLevel) {
|
||||
config.Logger.Error("serve err: %v", err)
|
||||
}
|
||||
s.Stop()
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/unistack-org/micro/v3/api/resolver"
|
||||
"github.com/unistack-org/micro/v3/api/server/acme"
|
||||
"github.com/unistack-org/micro/v3/logger"
|
||||
)
|
||||
|
||||
// Option func
|
||||
@@ -21,11 +22,14 @@ type Options struct {
|
||||
TLSConfig *tls.Config
|
||||
Resolver resolver.Resolver
|
||||
Wrappers []Wrapper
|
||||
Logger logger.Logger
|
||||
}
|
||||
|
||||
// NewOptions returns new Options
|
||||
func NewOptions(opts ...Option) Options {
|
||||
options := Options{}
|
||||
options := Options{
|
||||
Logger: logger.DefaultLogger,
|
||||
}
|
||||
for _, o := range opts {
|
||||
o(&options)
|
||||
}
|
||||
@@ -81,3 +85,9 @@ func Resolver(r resolver.Resolver) Option {
|
||||
o.Resolver = r
|
||||
}
|
||||
}
|
||||
|
||||
func Logger(l logger.Logger) Option {
|
||||
return func(o *Options) {
|
||||
o.Logger = l
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user