diff --git a/agent/internal/commander/impl.go b/agent/internal/commander/impl.go index 3bdae44..7bb9ebb 100644 --- a/agent/internal/commander/impl.go +++ b/agent/internal/commander/impl.go @@ -10,15 +10,13 @@ import ( "golang.org/x/sync/errgroup" ) -type CommandExecutor struct { -} +type CommandExecutor struct{} -func (*CommandExecutor) Execute(command *proto.Command) (*proto.FinishedCommand, error) { +func (*CommandExecutor) Execute(command *proto.Command) (fc *proto.FinishedCommand, err error) { + fc = new(proto.FinishedCommand) + fc.Id = command.Id cmd := exec.Command(command.Command[0], command.Command[1:]...) - var ( - stdin io.WriteCloser - err error - ) + var stdin io.WriteCloser if command.Stdin != nil { stdin, err = cmd.StdinPipe() if err != nil { @@ -56,10 +54,8 @@ func (*CommandExecutor) Execute(command *proto.Command) (*proto.FinishedCommand, if err := eg.Wait(); err != nil { return nil, err } - return &proto.FinishedCommand{ - Id: command.Id, - Status: int32(cmd.ProcessState.ExitCode()), - Stdout: stdoutbuf.String(), - Stderr: stderrbuf.String(), - }, nil + fc.Status = int32(cmd.ProcessState.ExitCode()) + fc.Stdout = stdoutbuf.String() + fc.Stderr = stderrbuf.String() + return } diff --git a/backend/internal/handlers/jobs.go b/backend/internal/handlers/jobs.go index c26d26c..acf8de5 100644 --- a/backend/internal/handlers/jobs.go +++ b/backend/internal/handlers/jobs.go @@ -1,8 +1,11 @@ package handlers import ( + "errors" "fmt" "net/http" + "os" + "os/exec" "gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/grpcsrv/commander" "gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/models" @@ -74,7 +77,7 @@ func (self *JobsHandlers) AddJob(c *gin.Context) { return err } job, err := agent.WaitJob(jid) - if err != nil { + if err != nil && !errors.Is(err, &exec.ExitError{}) { return err } c.JSON(http.StatusCreated, AddJobOut{