chore: Cleanup code by switching to type switching instead of string switching.

This commit is contained in:
Tera << 8 2025-02-16 18:11:01 -05:00
parent 17e1491f96
commit 62cc8b39ad
Signed by: imterah
GPG key ID: 8FA7DD57BA6CEA37
3 changed files with 37 additions and 133 deletions

View file

@ -1,7 +1,6 @@
package backendutil package backendutil
import ( import (
"fmt"
"net" "net"
"os" "os"
@ -35,21 +34,15 @@ func (helper *BackendApplicationHelper) Start() error {
log.Debug("Sucessfully connected") log.Debug("Sucessfully connected")
for { for {
commandType, commandRaw, err := commonbackend.Unmarshal(helper.socket) _, commandRaw, err := commonbackend.Unmarshal(helper.socket)
if err != nil { if err != nil {
return err return err
} }
switch commandType { switch command := commandRaw.(type) {
case "start": case *commonbackend.Start:
command, ok := commandRaw.(*commonbackend.Start) ok, err := helper.Backend.StartBackend(command.Arguments)
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err = helper.Backend.StartBackend(command.Arguments)
var ( var (
message string message string
@ -78,13 +71,7 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "backendStatusRequest": case *commonbackend.BackendStatusRequest:
_, ok := commandRaw.(*commonbackend.BackendStatusRequest)
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err := helper.Backend.GetBackendStatus() ok, err := helper.Backend.GetBackendStatus()
var ( var (
@ -114,14 +101,8 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "stop": case *commonbackend.Stop:
_, ok := commandRaw.(*commonbackend.Stop) ok, err := helper.Backend.StopBackend()
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err = helper.Backend.StopBackend()
var ( var (
message string message string
@ -150,14 +131,8 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "addProxy": case *commonbackend.AddProxy:
command, ok := commandRaw.(*commonbackend.AddProxy) ok, err := helper.Backend.StartProxy(command)
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err = helper.Backend.StartProxy(command)
var hasAnyFailed bool var hasAnyFailed bool
if !ok { if !ok {
@ -185,14 +160,8 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "removeProxy": case *commonbackend.RemoveProxy:
command, ok := commandRaw.(*commonbackend.RemoveProxy) ok, err := helper.Backend.StopProxy(command)
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err = helper.Backend.StopProxy(command)
var hasAnyFailed bool var hasAnyFailed bool
if !ok { if !ok {
@ -220,13 +189,7 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "proxyConnectionsRequest": case *commonbackend.ProxyConnectionsRequest:
_, ok := commandRaw.(*commonbackend.ProxyConnectionsRequest)
if !ok {
return fmt.Errorf("failed to typecast")
}
connections := helper.Backend.GetAllClientConnections() connections := helper.Backend.GetAllClientConnections()
serverParams := &commonbackend.ProxyConnectionsResponse{ serverParams := &commonbackend.ProxyConnectionsResponse{
@ -243,13 +206,7 @@ func (helper *BackendApplicationHelper) Start() error {
if _, err = helper.socket.Write(byteData); err != nil { if _, err = helper.socket.Write(byteData); err != nil {
return err return err
} }
case "checkClientParameters": case *commonbackend.CheckClientParameters:
command, ok := commandRaw.(*commonbackend.CheckClientParameters)
if !ok {
return fmt.Errorf("failed to typecast")
}
resp := helper.Backend.CheckParametersForConnections(command) resp := helper.Backend.CheckParametersForConnections(command)
resp.Type = "checkParametersResponse" resp.Type = "checkParametersResponse"
resp.InResponseTo = "checkClientParameters" resp.InResponseTo = "checkClientParameters"
@ -263,13 +220,7 @@ func (helper *BackendApplicationHelper) Start() error {
if _, err = helper.socket.Write(byteData); err != nil { if _, err = helper.socket.Write(byteData); err != nil {
return err return err
} }
case "checkServerParameters": case *commonbackend.CheckServerParameters:
command, ok := commandRaw.(*commonbackend.CheckServerParameters)
if !ok {
return fmt.Errorf("failed to typecast")
}
resp := helper.Backend.CheckParametersForBackend(command.Arguments) resp := helper.Backend.CheckParametersForBackend(command.Arguments)
resp.Type = "checkParametersResponse" resp.Type = "checkParametersResponse"
resp.InResponseTo = "checkServerParameters" resp.InResponseTo = "checkServerParameters"
@ -283,6 +234,8 @@ func (helper *BackendApplicationHelper) Start() error {
if _, err = helper.socket.Write(byteData); err != nil { if _, err = helper.socket.Write(byteData); err != nil {
return err return err
} }
default:
log.Warnf("Unsupported command recieved: %T", command)
} }
} }
} }

View file

@ -14,12 +14,12 @@ echo "building externalbackendlauncher"
go build -ldflags="-s -w" -trimpath . go build -ldflags="-s -w" -trimpath .
popd > /dev/null popd > /dev/null
pushd sshappbackend/remote-code > /dev/null if [ ! -d "sshappbackend/local-code/remote-bin" ]; then
echo "building sshappbackend/remote-code" mkdir "sshappbackend/local-code/remote-bin"
if [ ! -d bin ]; then
mkdir bin
fi fi
pushd sshappbackend/remote-code > /dev/null
echo "building sshappbackend/remote-code"
# Disable dynamic linking by disabling CGo. # Disable dynamic linking by disabling CGo.
# We need to make the remote code as generic as possible, so we do this # We need to make the remote code as generic as possible, so we do this
echo " - building for arm64" echo " - building for arm64"

View file

@ -1,7 +1,6 @@
package backendutil_custom package backendutil_custom
import ( import (
"fmt"
"net" "net"
"os" "os"
@ -37,21 +36,15 @@ func (helper *BackendApplicationHelper) Start() error {
log.Debug("Sucessfully connected") log.Debug("Sucessfully connected")
for { for {
commandType, commandRaw, err := datacommands.Unmarshal(helper.socket) _, commandRaw, err := datacommands.Unmarshal(helper.socket)
if err != nil && err.Error() != "couldn't match command ID" { if err != nil && err.Error() != "couldn't match command ID" {
return err return err
} }
switch commandType { switch command := commandRaw.(type) {
case "proxyConnectionsRequest": case *datacommands.ProxyConnectionsRequest:
proxyConnectionRequest, ok := commandRaw.(*datacommands.ProxyConnectionsRequest) connections := helper.Backend.GetAllClientConnections(command.ProxyID)
if !ok {
return fmt.Errorf("failed to typecast")
}
connections := helper.Backend.GetAllClientConnections(proxyConnectionRequest.ProxyID)
serverParams := &datacommands.ProxyConnectionsResponse{ serverParams := &datacommands.ProxyConnectionsResponse{
Type: "proxyConnectionsResponse", Type: "proxyConnectionsResponse",
@ -67,14 +60,8 @@ func (helper *BackendApplicationHelper) Start() error {
if _, err = helper.socket.Write(byteData); err != nil { if _, err = helper.socket.Write(byteData); err != nil {
return err return err
} }
case "removeProxy": case *datacommands.RemoveProxy:
command, ok := commandRaw.(*datacommands.RemoveProxy) ok, err := helper.Backend.StopProxy(command)
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err = helper.Backend.StopProxy(command)
var hasAnyFailed bool var hasAnyFailed bool
if !ok { if !ok {
@ -100,21 +87,15 @@ func (helper *BackendApplicationHelper) Start() error {
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
default: default:
commandType, commandRaw, err := commonbackend.Unmarshal(helper.socket) _, commandRaw, err := commonbackend.Unmarshal(helper.socket)
if err != nil { if err != nil {
return err return err
} }
switch commandType { switch command := commandRaw.(type) {
case "start": case *commonbackend.Start:
command, ok := commandRaw.(*commonbackend.Start) ok, err := helper.Backend.StartBackend(command.Arguments)
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err = helper.Backend.StartBackend(command.Arguments)
var ( var (
message string message string
@ -143,14 +124,8 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "stop": case *commonbackend.Stop:
_, ok := commandRaw.(*commonbackend.Stop) ok, err := helper.Backend.StopBackend()
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err = helper.Backend.StopBackend()
var ( var (
message string message string
@ -179,13 +154,7 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "backendStatusRequest": case *commonbackend.BackendStatusRequest:
_, ok := commandRaw.(*commonbackend.BackendStatusRequest)
if !ok {
return fmt.Errorf("failed to typecast")
}
ok, err := helper.Backend.GetBackendStatus() ok, err := helper.Backend.GetBackendStatus()
var ( var (
@ -215,13 +184,7 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "addProxy": case *commonbackend.AddProxy:
command, ok := commandRaw.(*commonbackend.AddProxy)
if !ok {
return fmt.Errorf("failed to typecast")
}
id, ok, err := helper.Backend.StartProxy(command) id, ok, err := helper.Backend.StartProxy(command)
var hasAnyFailed bool var hasAnyFailed bool
@ -247,13 +210,7 @@ func (helper *BackendApplicationHelper) Start() error {
} }
helper.socket.Write(responseMarshalled) helper.socket.Write(responseMarshalled)
case "checkClientParameters": case *commonbackend.CheckClientParameters:
command, ok := commandRaw.(*commonbackend.CheckClientParameters)
if !ok {
return fmt.Errorf("failed to typecast")
}
resp := helper.Backend.CheckParametersForConnections(command) resp := helper.Backend.CheckParametersForConnections(command)
resp.Type = "checkParametersResponse" resp.Type = "checkParametersResponse"
resp.InResponseTo = "checkClientParameters" resp.InResponseTo = "checkClientParameters"
@ -267,13 +224,7 @@ func (helper *BackendApplicationHelper) Start() error {
if _, err = helper.socket.Write(byteData); err != nil { if _, err = helper.socket.Write(byteData); err != nil {
return err return err
} }
case "checkServerParameters": case *commonbackend.CheckServerParameters:
command, ok := commandRaw.(*commonbackend.CheckServerParameters)
if !ok {
return fmt.Errorf("failed to typecast")
}
resp := helper.Backend.CheckParametersForBackend(command.Arguments) resp := helper.Backend.CheckParametersForBackend(command.Arguments)
resp.Type = "checkParametersResponse" resp.Type = "checkParametersResponse"
resp.InResponseTo = "checkServerParameters" resp.InResponseTo = "checkServerParameters"
@ -288,7 +239,7 @@ func (helper *BackendApplicationHelper) Start() error {
return err return err
} }
default: default:
log.Warn("Unsupported command recieved: %s", commandType) log.Warnf("Unsupported command recieved: %T", command)
} }
} }
} }