fix: Avoid recreating validator in SSHBackend and SSHAppBackend
All checks were successful
Release code / build (push) Successful in 5m46s
All checks were successful
Release code / build (push) Successful in 5m46s
This commit is contained in:
parent
b93bf456b5
commit
75b12f2053
2 changed files with 25 additions and 4 deletions
|
@ -26,6 +26,8 @@ import (
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var validatorInstance *validator.Validate
|
||||||
|
|
||||||
type TCPProxy struct {
|
type TCPProxy struct {
|
||||||
proxyInformation *commonbackend.AddProxy
|
proxyInformation *commonbackend.AddProxy
|
||||||
connections map[uint16]net.Conn
|
connections map[uint16]net.Conn
|
||||||
|
@ -62,6 +64,11 @@ type SSHAppBackend struct {
|
||||||
|
|
||||||
func (backend *SSHAppBackend) StartBackend(configBytes []byte) (bool, error) {
|
func (backend *SSHAppBackend) StartBackend(configBytes []byte) (bool, error) {
|
||||||
log.Info("SSHAppBackend is initializing...")
|
log.Info("SSHAppBackend is initializing...")
|
||||||
|
|
||||||
|
if validatorInstance == nil {
|
||||||
|
validatorInstance = validator.New()
|
||||||
|
}
|
||||||
|
|
||||||
backend.globalNonCriticalMessageChan = make(chan interface{})
|
backend.globalNonCriticalMessageChan = make(chan interface{})
|
||||||
backend.tcpProxies = map[uint16]*TCPProxy{}
|
backend.tcpProxies = map[uint16]*TCPProxy{}
|
||||||
backend.udpProxies = map[uint16]*UDPProxy{}
|
backend.udpProxies = map[uint16]*UDPProxy{}
|
||||||
|
@ -72,7 +79,7 @@ func (backend *SSHAppBackend) StartBackend(configBytes []byte) (bool, error) {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := validator.New().Struct(&backendData); err != nil {
|
if err := validatorInstance.Struct(&backendData); err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -585,6 +592,10 @@ func (backend *SSHAppBackend) CheckParametersForConnections(clientParameters *co
|
||||||
func (backend *SSHAppBackend) CheckParametersForBackend(arguments []byte) *commonbackend.CheckParametersResponse {
|
func (backend *SSHAppBackend) CheckParametersForBackend(arguments []byte) *commonbackend.CheckParametersResponse {
|
||||||
var backendData SSHAppBackendData
|
var backendData SSHAppBackendData
|
||||||
|
|
||||||
|
if validatorInstance == nil {
|
||||||
|
validatorInstance = validator.New()
|
||||||
|
}
|
||||||
|
|
||||||
if err := json.Unmarshal(arguments, &backendData); err != nil {
|
if err := json.Unmarshal(arguments, &backendData); err != nil {
|
||||||
return &commonbackend.CheckParametersResponse{
|
return &commonbackend.CheckParametersResponse{
|
||||||
IsValid: false,
|
IsValid: false,
|
||||||
|
@ -592,7 +603,7 @@ func (backend *SSHAppBackend) CheckParametersForBackend(arguments []byte) *commo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := validator.New().Struct(&backendData); err != nil {
|
if err := validatorInstance.Struct(&backendData); err != nil {
|
||||||
return &commonbackend.CheckParametersResponse{
|
return &commonbackend.CheckParametersResponse{
|
||||||
IsValid: false,
|
IsValid: false,
|
||||||
Message: fmt.Sprintf("failed validation of parameters: %s", err.Error()),
|
Message: fmt.Sprintf("failed validation of parameters: %s", err.Error()),
|
||||||
|
|
|
@ -19,6 +19,8 @@ import (
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var validatorInstance *validator.Validate
|
||||||
|
|
||||||
type ConnWithTimeout struct {
|
type ConnWithTimeout struct {
|
||||||
net.Conn
|
net.Conn
|
||||||
ReadTimeout time.Duration
|
ReadTimeout time.Duration
|
||||||
|
@ -76,6 +78,10 @@ type SSHBackend struct {
|
||||||
func (backend *SSHBackend) StartBackend(bytes []byte) (bool, error) {
|
func (backend *SSHBackend) StartBackend(bytes []byte) (bool, error) {
|
||||||
log.Info("SSHBackend is initializing...")
|
log.Info("SSHBackend is initializing...")
|
||||||
|
|
||||||
|
if validatorInstance == nil {
|
||||||
|
validatorInstance = validator.New()
|
||||||
|
}
|
||||||
|
|
||||||
if backend.inReinitLoop {
|
if backend.inReinitLoop {
|
||||||
for !backend.isReady {
|
for !backend.isReady {
|
||||||
time.Sleep(100 * time.Millisecond)
|
time.Sleep(100 * time.Millisecond)
|
||||||
|
@ -88,7 +94,7 @@ func (backend *SSHBackend) StartBackend(bytes []byte) (bool, error) {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := validator.New().Struct(&backendData); err != nil {
|
if err := validatorInstance.Struct(&backendData); err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,6 +417,10 @@ func (backend *SSHBackend) CheckParametersForConnections(clientParameters *commo
|
||||||
func (backend *SSHBackend) CheckParametersForBackend(arguments []byte) *commonbackend.CheckParametersResponse {
|
func (backend *SSHBackend) CheckParametersForBackend(arguments []byte) *commonbackend.CheckParametersResponse {
|
||||||
var backendData SSHBackendData
|
var backendData SSHBackendData
|
||||||
|
|
||||||
|
if validatorInstance == nil {
|
||||||
|
validatorInstance = validator.New()
|
||||||
|
}
|
||||||
|
|
||||||
if err := json.Unmarshal(arguments, &backendData); err != nil {
|
if err := json.Unmarshal(arguments, &backendData); err != nil {
|
||||||
return &commonbackend.CheckParametersResponse{
|
return &commonbackend.CheckParametersResponse{
|
||||||
IsValid: false,
|
IsValid: false,
|
||||||
|
@ -418,7 +428,7 @@ func (backend *SSHBackend) CheckParametersForBackend(arguments []byte) *commonba
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := validator.New().Struct(&backendData); err != nil {
|
if err := validatorInstance.Struct(&backendData); err != nil {
|
||||||
return &commonbackend.CheckParametersResponse{
|
return &commonbackend.CheckParametersResponse{
|
||||||
IsValid: false,
|
IsValid: false,
|
||||||
Message: fmt.Sprintf("failed validation of parameters: %s", err.Error()),
|
Message: fmt.Sprintf("failed validation of parameters: %s", err.Error()),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue