Compare commits
2 Commits
a71fde67e4
...
fe7e41e4af
| Author | SHA1 | Date | |
|---|---|---|---|
| fe7e41e4af | |||
| 81d8f71937 |
@@ -10,15 +10,13 @@ import (
|
|||||||
"golang.org/x/sync/errgroup"
|
"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:]...)
|
cmd := exec.Command(command.Command[0], command.Command[1:]...)
|
||||||
var (
|
var stdin io.WriteCloser
|
||||||
stdin io.WriteCloser
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
if command.Stdin != nil {
|
if command.Stdin != nil {
|
||||||
stdin, err = cmd.StdinPipe()
|
stdin, err = cmd.StdinPipe()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -56,10 +54,8 @@ func (*CommandExecutor) Execute(command *proto.Command) (*proto.FinishedCommand,
|
|||||||
if err := eg.Wait(); err != nil {
|
if err := eg.Wait(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &proto.FinishedCommand{
|
fc.Status = int32(cmd.ProcessState.ExitCode())
|
||||||
Id: command.Id,
|
fc.Stdout = stdoutbuf.String()
|
||||||
Status: int32(cmd.ProcessState.ExitCode()),
|
fc.Stderr = stderrbuf.String()
|
||||||
Stdout: stdoutbuf.String(),
|
return
|
||||||
Stderr: stderrbuf.String(),
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
|
||||||
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/grpcsrv/commander"
|
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/grpcsrv/commander"
|
||||||
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/models"
|
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/models"
|
||||||
@@ -74,7 +77,7 @@ func (self *JobsHandlers) AddJob(c *gin.Context) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
job, err := agent.WaitJob(jid)
|
job, err := agent.WaitJob(jid)
|
||||||
if err != nil {
|
if err != nil && !errors.Is(err, &exec.ExitError{}) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusCreated, AddJobOut{
|
c.JSON(http.StatusCreated, AddJobOut{
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
CREATE TABLE [jobs_new_17f2f1dd010f] (
|
||||||
|
[id] INTEGER PRIMARY KEY,
|
||||||
|
[agent_id] TEXT NOT NULL,
|
||||||
|
[command] TEXT NOT NULL,
|
||||||
|
[stdin] TEXT,
|
||||||
|
[stdout] TEXT,
|
||||||
|
[stderr] TEXT,
|
||||||
|
[status] INTEGER,
|
||||||
|
[created_at] FLOAT DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
[updated_at] FLOAT DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
INSERT INTO [jobs_new_17f2f1dd010f] ([rowid], [id], [agent_id], [command], [stdin], [stdout], [stderr], [status], [created_at], [updated_at])
|
||||||
|
SELECT [rowid], [id], [agent_id], [command], [stdin], [stdout], [stderr], [status], [created_at], [updated_at] FROM [jobs];
|
||||||
|
DROP TABLE [jobs];
|
||||||
|
ALTER TABLE [jobs_new_17f2f1dd010f] RENAME TO [jobs];
|
||||||
Reference in New Issue
Block a user