package ssh import ( "errors" "github.com/Neur0toxine/sshpoke/internal/server/driver/ssh/types" "github.com/Neur0toxine/sshpoke/internal/server/driver/util" ) type Params struct { Address string `mapstructure:"address" validate:"required"` HostKeys string `mapstructure:"host_keys"` DefaultHost *string `mapstructure:"default_host,omitempty"` ForwardPort uint16 `mapstructure:"forward_port"` Auth types.Auth `mapstructure:"auth"` KeepAlive types.KeepAlive `mapstructure:"keepalive"` DomainExtractRegex string `mapstructure:"domain_extract_regex" validate:"validregexp"` Mode types.DomainMode `mapstructure:"mode" validate:"required,oneof=single multi"` FakeRemoteHost bool `mapstructure:"fake_remote_host"` NoPTY bool `mapstructure:"nopty"` Shell bool `mapstructure:"shell"` Commands types.Commands `mapstructure:"commands"` } func (p *Params) Validate() error { if err := util.Validator.Struct(p); err != nil { return err } if p.NoPTY && (len(p.Commands.OnConnect) > 0 || len(p.Commands.OnDisconnect) > 0) { return errors.New("commands aren't available without PTY (nopty = true)") } return p.Auth.Validate() }