internal/ldap: use variadic options

This commit is contained in:
Michael Aldridge 2022-08-27 16:46:54 -05:00
parent 3d431cbdf1
commit b8cd3bb4bc
3 changed files with 20 additions and 6 deletions

View file

@ -3,15 +3,15 @@ package ldap
import ( import (
"strings" "strings"
"github.com/hashicorp/go-hclog"
ldap "github.com/ps78674/ldapserver" ldap "github.com/ps78674/ldapserver"
) )
// New returns a new ldap server instance // New returns a new ldap server instance
func New(l hclog.Logger, nacl naClient) *server { func New(opts ...Option) *server {
x := new(server) x := new(server)
x.l = l.Named("ldap") for _, o := range opts {
x.c = nacl o(x)
}
x.Server = ldap.NewServer() x.Server = ldap.NewServer()
x.routes = ldap.NewRouteMux() x.routes = ldap.NewRouteMux()

14
internal/ldap/option.go Normal file
View file

@ -0,0 +1,14 @@
package ldap
import (
"github.com/hashicorp/go-hclog"
)
// Option handle configuration of the underlying ldap.server type.
type Option func(*server)
// WithLogger sets the loggers for the server.
func WithLogger(l hclog.Logger) Option { return func(s *server) { s.l = l.Named("ldap") } }
// WithNetAuth sets the NetAuth client for the server.
func WithNetAuth(n naClient) Option { return func(s *server) { s.c = n } }

View file

@ -9,8 +9,8 @@ import (
"github.com/hashicorp/go-hclog" "github.com/hashicorp/go-hclog"
"github.com/netauth/ldap/internal/ldap" "github.com/netauth/ldap/internal/ldap"
"github.com/netauth/netauth/pkg/netauth" "github.com/netauth/netauth/pkg/netauth"
"github.com/spf13/viper"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"github.com/spf13/viper"
) )
func init() { func init() {
@ -62,7 +62,7 @@ func main() {
os.Exit(2) os.Exit(2)
} }
ls := ldap.New(appLogger, nacl) ls := ldap.New(ldap.WithLogger(appLogger), ldap.WithNetAuth(nacl))
ls.SetDomain(viper.GetString("ldap.domain")) ls.SetDomain(viper.GetString("ldap.domain"))