From 221010919b210034ba75d42951caf3965f66aa9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20B=C3=BCtow?= Date: Wed, 12 Feb 2020 22:46:45 +0000 Subject: exec will always err if status is > 0 --- internal/clients/handlers/basehandler.go | 4 +++- internal/io/run/run.go | 2 +- internal/server/handlers/runcommand.go | 21 ++++++--------------- 3 files changed, 10 insertions(+), 17 deletions(-) (limited to 'internal') diff --git a/internal/clients/handlers/basehandler.go b/internal/clients/handlers/basehandler.go index 68b8ddc..7b071c9 100644 --- a/internal/clients/handlers/basehandler.go +++ b/internal/clients/handlers/basehandler.go @@ -122,7 +122,9 @@ func (h *baseHandler) handleHiddenMessage(message string) { logger.Error("Unable to retrieve exitstatus", message, err) return } - h.status = i logger.Debug("Retrieved exitstatus", h.status) + if i > h.status { + h.status = i + } } } diff --git a/internal/io/run/run.go b/internal/io/run/run.go index c0c6868..3cf7935 100644 --- a/internal/io/run/run.go +++ b/internal/io/run/run.go @@ -32,7 +32,7 @@ func (r Run) Start(ctx context.Context, lines chan<- line.Line) (pid int, ec int done := make(chan struct{}) defer close(done) - ec = -1 + ec = 255 pid = -1 if len(r.args) > 0 { diff --git a/internal/server/handlers/runcommand.go b/internal/server/handlers/runcommand.go index 1ae0fda..b7fbb8b 100644 --- a/internal/server/handlers/runcommand.go +++ b/internal/server/handlers/runcommand.go @@ -43,31 +43,22 @@ func (r runCommand) start(ctx context.Context, commands []string) { qualifiedPath, err := exec.LookPath(path) if err != nil { logger.Error(r.server.user, err) - r.server.sendServerMessage(logger.Warn(r.server.user, "Unable to execute command(s), check server logs")) - r.server.sendServerMessage(fmt.Sprintf(".run exitstatus -%d", -1)) + r.server.sendServerMessage(logger.Error(r.server.user, "Unable to execute command(s), check server logs")) + r.server.sendServerMessage(".run exitstatus 255") return } if !r.server.user.HasFilePermission(qualifiedPath, "runcommands") { logger.Error(r.server.user, "No permission to execute path", qualifiedPath) - r.server.sendServerMessage(logger.Warn(r.server.user, "Unable to execute command(s), check server logs")) - r.server.sendServerMessage(fmt.Sprintf(".run exitstatus -%d", -1)) + r.server.sendServerMessage(logger.Error(r.server.user, "Unable to execute command(s), check server logs")) + r.server.sendServerMessage(".run exitstatus 255") return } r.run = run.New(qualifiedPath, args) - pid, ec, err := r.run.Start(ctx, r.server.lines) + pid, ec, _ := r.run.Start(ctx, r.server.lines) - if err != nil { - message := fmt.Sprintf("Unable to execute remote command '%s'", qualifiedPath, args) - logger.Error(r.server.user, message, ec, pid, err) - r.server.sendServerMessage(logger.Error(message, ec, pid, err)) - r.server.sendServerMessage(fmt.Sprintf(".run exitstatus -%d", ec)) - return - } - - message := fmt.Sprintf("Remote process '%d' exited with status '%d'", pid, ec) r.server.sendServerMessage(fmt.Sprintf(".run exitstatus %d", ec)) - r.server.sendServerMessage(logger.Info("run", pid, ec, message)) + r.server.sendServerMessage(logger.Info(fmt.Sprintf("Process %d exited with status %d", pid, ec))) } } -- cgit v1.2.3