92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
package controller
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"time"
|
|
|
|
"go.uber.org/zap"
|
|
"golang.org/x/crypto/ssh"
|
|
)
|
|
|
|
type Option func(*Controller)
|
|
|
|
func WithDataDir(dataDir *DataDir) Option {
|
|
return func(controller *Controller) {
|
|
controller.dataDir = dataDir
|
|
}
|
|
}
|
|
|
|
func WithListenAddr(listenAddr string) Option {
|
|
return func(controller *Controller) {
|
|
controller.listenAddr = listenAddr
|
|
}
|
|
}
|
|
|
|
func WithAPIPrefix(apiPrefix string) Option {
|
|
return func(c *Controller) {
|
|
c.apiPrefix = apiPrefix
|
|
}
|
|
}
|
|
|
|
func WithTLSConfig(tlsConfig *tls.Config) Option {
|
|
return func(controller *Controller) {
|
|
controller.tlsConfig = tlsConfig
|
|
}
|
|
}
|
|
|
|
func WithSSHServer(listenAddr string, signer ssh.Signer, noClientAuth bool) Option {
|
|
return func(controller *Controller) {
|
|
controller.sshListenAddr = listenAddr
|
|
controller.sshSigner = signer
|
|
controller.sshNoClientAuth = noClientAuth
|
|
}
|
|
}
|
|
|
|
func WithInsecureAuthDisabled() Option {
|
|
return func(controller *Controller) {
|
|
controller.insecureAuthDisabled = true
|
|
}
|
|
}
|
|
|
|
func WithSwaggerDocs() Option {
|
|
return func(controller *Controller) {
|
|
controller.enableSwaggerDocs = true
|
|
}
|
|
}
|
|
|
|
func WithWorkerOfflineTimeout(workerOfflineTimeout time.Duration) Option {
|
|
return func(controller *Controller) {
|
|
controller.workerOfflineTimeout = workerOfflineTimeout
|
|
}
|
|
}
|
|
|
|
func WithExperimentalRPCV2() Option {
|
|
return func(controller *Controller) {
|
|
controller.experimentalRPCV2 = true
|
|
}
|
|
}
|
|
|
|
func WithDisableDBCompression() Option {
|
|
return func(controller *Controller) {
|
|
controller.disableDBCompression = true
|
|
}
|
|
}
|
|
|
|
func WithPingInterval(pingInterval time.Duration) Option {
|
|
return func(controller *Controller) {
|
|
controller.pingInterval = pingInterval
|
|
}
|
|
}
|
|
|
|
func WithSynthetic() Option {
|
|
return func(controller *Controller) {
|
|
controller.synthetic = true
|
|
}
|
|
}
|
|
|
|
func WithLogger(logger *zap.Logger) Option {
|
|
return func(controller *Controller) {
|
|
controller.logger = logger.Sugar()
|
|
}
|
|
}
|