fix: Adds missing backend status command implementations.

This commit is contained in:
Tera << 8 2025-01-06 00:09:14 -05:00
parent 605ad31dd6
commit 93f2f9cbee
Signed by: imterah
GPG key ID: 8FA7DD57BA6CEA37
4 changed files with 45 additions and 0 deletions

View file

@ -72,6 +72,42 @@ func (helper *BackendApplicationHelper) Start() error {
continue
}
helper.socket.Write(responseMarshalled)
case "backendStatusRequest":
_, ok := commandRaw.(*commonbackend.BackendStatusRequest)
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err := helper.Backend.GetBackendStatus()
var (
message string
statusCode int
)
if err != nil {
message = err.Error()
statusCode = commonbackend.StatusFailure
} else {
statusCode = commonbackend.StatusSuccess
}
response := &commonbackend.BackendStatusResponse{
Type: "backendStatusResponse",
IsRunning: ok,
StatusCode: statusCode,
Message: message,
}
responseMarshalled, err := commonbackend.Marshal(response.Type, response)
if err != nil {
log.Error("failed to marshal response: %s", err.Error())
continue
}
helper.socket.Write(responseMarshalled)
case "stop":
_, ok := commandRaw.(*commonbackend.Stop)

View file

@ -5,6 +5,7 @@ import "git.terah.dev/imterah/hermes/backend/commonbackend"
type BackendInterface interface {
StartBackend(arguments []byte) (bool, error)
StopBackend() (bool, error)
GetBackendStatus() (bool, error)
StartProxy(command *commonbackend.AddProxy) (bool, error)
StopProxy(command *commonbackend.RemoveProxy) (bool, error)
GetAllClientConnections() []*commonbackend.ProxyClientConnection

View file

@ -19,6 +19,10 @@ func (backend *DummyBackend) StopBackend() (bool, error) {
return true, nil
}
func (backend *DummyBackend) GetBackendStatus() (bool, error) {
return true, nil
}
func (backend *DummyBackend) StartProxy(command *commonbackend.AddProxy) (bool, error) {
return true, nil
}

View file

@ -96,6 +96,10 @@ func (backend *SSHBackend) StopBackend() (bool, error) {
return true, nil
}
func (backend *SSHBackend) GetBackendStatus() (bool, error) {
return backend.conn != nil, nil
}
func (backend *SSHBackend) StartProxy(command *commonbackend.AddProxy) (bool, error) {
listenerObject := &SSHListener{
SourceIP: command.SourceIP,