2019-06-03 18:44:43 +01:00
|
|
|
package server
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/tls"
|
2020-04-07 19:29:26 +01:00
|
|
|
"net/http"
|
2019-10-09 16:42:05 +01:00
|
|
|
|
2021-10-12 12:55:53 +01:00
|
|
|
"go-micro.dev/v4/api/resolver"
|
|
|
|
"go-micro.dev/v4/api/server/acme"
|
2022-09-30 20:32:55 +02:00
|
|
|
"go-micro.dev/v4/api/server/cors"
|
|
|
|
"go-micro.dev/v4/logger"
|
2019-06-03 18:44:43 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
type Option func(o *Options)
|
|
|
|
|
|
|
|
type Options struct {
|
2020-04-07 19:29:26 +01:00
|
|
|
ACMEProvider acme.Provider
|
|
|
|
Resolver resolver.Resolver
|
2022-09-29 16:44:53 +02:00
|
|
|
Logger logger.Logger
|
2023-04-26 00:16:34 +00:00
|
|
|
CORSConfig *cors.Config
|
|
|
|
TLSConfig *tls.Config
|
|
|
|
ACMEHosts []string
|
|
|
|
Wrappers []Wrapper
|
|
|
|
EnableACME bool
|
|
|
|
EnableCORS bool
|
|
|
|
EnableTLS bool
|
2020-04-07 19:29:26 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
type Wrapper func(h http.Handler) http.Handler
|
|
|
|
|
2022-09-29 16:44:53 +02:00
|
|
|
func NewOptions(opts ...Option) Options {
|
|
|
|
options := Options{
|
|
|
|
Logger: logger.DefaultLogger,
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, o := range opts {
|
|
|
|
o(&options)
|
|
|
|
}
|
|
|
|
|
|
|
|
return options
|
|
|
|
}
|
|
|
|
|
2020-04-07 19:29:26 +01:00
|
|
|
func WrapHandler(w Wrapper) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.Wrappers = append(o.Wrappers, w)
|
|
|
|
}
|
2019-10-09 16:42:05 +01:00
|
|
|
}
|
|
|
|
|
2020-03-04 11:40:53 +00:00
|
|
|
func EnableCORS(b bool) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.EnableCORS = b
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-09-17 17:17:12 +08:00
|
|
|
func CORSConfig(c *cors.Config) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.CORSConfig = c
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-10-09 16:42:05 +01:00
|
|
|
func EnableACME(b bool) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.EnableACME = b
|
|
|
|
}
|
2019-06-03 18:44:43 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func ACMEHosts(hosts ...string) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.ACMEHosts = hosts
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-10-09 16:42:05 +01:00
|
|
|
func ACMEProvider(p acme.Provider) Option {
|
2019-06-03 18:44:43 +01:00
|
|
|
return func(o *Options) {
|
2019-10-09 16:42:05 +01:00
|
|
|
o.ACMEProvider = p
|
2019-06-03 18:44:43 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func EnableTLS(b bool) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.EnableTLS = b
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TLSConfig(t *tls.Config) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.TLSConfig = t
|
|
|
|
}
|
|
|
|
}
|
2020-04-02 17:44:48 +01:00
|
|
|
|
2020-04-07 16:24:51 +01:00
|
|
|
func Resolver(r resolver.Resolver) Option {
|
2020-04-02 17:44:48 +01:00
|
|
|
return func(o *Options) {
|
2020-04-07 16:24:51 +01:00
|
|
|
o.Resolver = r
|
2020-04-02 17:44:48 +01:00
|
|
|
}
|
|
|
|
}
|
2022-09-29 16:44:53 +02:00
|
|
|
|
2022-09-30 16:27:07 +02:00
|
|
|
// Logger sets the underline logging framework.
|
2022-09-29 16:44:53 +02:00
|
|
|
func Logger(l logger.Logger) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.Logger = l
|
|
|
|
}
|
|
|
|
}
|