github.com/jcmturner/gokrb5/v8@v8.4.4/client/settings.go (about) 1 package client 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "log" 7 ) 8 9 // Settings holds optional client settings. 10 type Settings struct { 11 disablePAFXFast bool 12 assumePreAuthentication bool 13 preAuthEType int32 14 logger *log.Logger 15 } 16 17 // jsonSettings is used when marshaling the Settings details to JSON format. 18 type jsonSettings struct { 19 DisablePAFXFast bool 20 AssumePreAuthentication bool 21 } 22 23 // NewSettings creates a new client settings struct. 24 func NewSettings(settings ...func(*Settings)) *Settings { 25 s := new(Settings) 26 for _, set := range settings { 27 set(s) 28 } 29 return s 30 } 31 32 // DisablePAFXFAST used to configure the client to not use PA_FX_FAST. 33 // 34 // s := NewSettings(DisablePAFXFAST(true)) 35 func DisablePAFXFAST(b bool) func(*Settings) { 36 return func(s *Settings) { 37 s.disablePAFXFast = b 38 } 39 } 40 41 // DisablePAFXFAST indicates is the client should disable the use of PA_FX_FAST. 42 func (s *Settings) DisablePAFXFAST() bool { 43 return s.disablePAFXFast 44 } 45 46 // AssumePreAuthentication used to configure the client to assume pre-authentication is required. 47 // 48 // s := NewSettings(AssumePreAuthentication(true)) 49 func AssumePreAuthentication(b bool) func(*Settings) { 50 return func(s *Settings) { 51 s.assumePreAuthentication = b 52 } 53 } 54 55 // AssumePreAuthentication indicates if the client should proactively assume using pre-authentication. 56 func (s *Settings) AssumePreAuthentication() bool { 57 return s.assumePreAuthentication 58 } 59 60 // Logger used to configure client with a logger. 61 // 62 // s := NewSettings(kt, Logger(l)) 63 func Logger(l *log.Logger) func(*Settings) { 64 return func(s *Settings) { 65 s.logger = l 66 } 67 } 68 69 // Logger returns the client logger instance. 70 func (s *Settings) Logger() *log.Logger { 71 return s.logger 72 } 73 74 // Log will write to the service's logger if it is configured. 75 func (cl *Client) Log(format string, v ...interface{}) { 76 if cl.settings.Logger() != nil { 77 cl.settings.Logger().Output(2, fmt.Sprintf(format, v...)) 78 } 79 } 80 81 // JSON returns a JSON representation of the settings. 82 func (s *Settings) JSON() (string, error) { 83 js := jsonSettings{ 84 DisablePAFXFast: s.disablePAFXFast, 85 AssumePreAuthentication: s.assumePreAuthentication, 86 } 87 b, err := json.MarshalIndent(js, "", " ") 88 if err != nil { 89 return "", err 90 } 91 return string(b), nil 92 93 }