Compare commits
5 Commits
debug
..
fe7e41e4af
| Author | SHA1 | Date | |
|---|---|---|---|
| fe7e41e4af | |||
| 81d8f71937 | |||
| a71fde67e4 | |||
| 398c688fed | |||
| 958211198c |
@@ -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
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -130,6 +130,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
|
router.Use(handlers.CorsMiddleware("http://127.0.0.1:5173;http://localhost:5173"))
|
||||||
docs.SwaggerInfo.BasePath = "/api/v1"
|
docs.SwaggerInfo.BasePath = "/api/v1"
|
||||||
docs.SwaggerInfo.Title = "HellreigN"
|
docs.SwaggerInfo.Title = "HellreigN"
|
||||||
docs.SwaggerInfo.Version = "1.0"
|
docs.SwaggerInfo.Version = "1.0"
|
||||||
@@ -143,13 +144,14 @@ func main() {
|
|||||||
authGroup := v1.Group("/auth")
|
authGroup := v1.Group("/auth")
|
||||||
{
|
{
|
||||||
authGroup.POST("/login", auth.Login)
|
authGroup.POST("/login", auth.Login)
|
||||||
|
authGroup.POST("/register", auth.RegisterUser)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auth token management (requires auth)
|
// Auth token management (requires auth)
|
||||||
authTokenGroup := v1.Group("/auth")
|
authTokenGroup := v1.Group("/auth")
|
||||||
authTokenGroup.Use(auth.AuthMiddleware())
|
authTokenGroup.Use(auth.AuthMiddleware())
|
||||||
{
|
{
|
||||||
authTokenGroup.POST("/token", handlers.RequireAdmin(), auth.CreateToken)
|
authTokenGroup.POST("/token")
|
||||||
authTokenGroup.GET("/validate", auth.ValidateToken)
|
authTokenGroup.GET("/validate", auth.ValidateToken)
|
||||||
authTokenGroup.GET("/tokens", handlers.RequireAdmin(), auth.ListTokens)
|
authTokenGroup.GET("/tokens", handlers.RequireAdmin(), auth.ListTokens)
|
||||||
authTokenGroup.DELETE("/token", auth.DeleteMyToken)
|
authTokenGroup.DELETE("/token", auth.DeleteMyToken)
|
||||||
|
|||||||
+581
-125
@@ -36,7 +36,7 @@ const docTemplate = `{
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/handlers.AgentInfo"
|
"$ref": "#/definitions/internal_handlers.AgentInfo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.DeployAgentsRequest"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployAgentsRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -76,7 +76,7 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Deployment results with tokens for each server",
|
"description": "Deployment results with tokens for each server",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.DeployResponse"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResponse"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
@@ -119,7 +119,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/handlers.RegisterRequest"
|
"$ref": "#/definitions/internal_handlers.RegisterRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -127,7 +127,7 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/handlers.RegisterResponse"
|
"$ref": "#/definitions/internal_handlers.RegisterResponse"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -157,7 +157,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.RegistrationRequest"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.RegistrationRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -191,7 +191,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.LoginRequest"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -199,7 +199,7 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.LoginResponse"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginResponse"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
@@ -232,6 +232,67 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/auth/register": {
|
||||||
|
"post": {
|
||||||
|
"description": "Registers a new user with login, password, name, last name. All permissions are set to false.",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"summary": "Register user",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "Registration data",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.UserRegister"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad Request",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"409": {
|
||||||
|
"description": "Conflict",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Internal Server Error",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/auth/token": {
|
"/auth/token": {
|
||||||
"post": {
|
"post": {
|
||||||
"description": "Creates a new user with permissions",
|
"description": "Creates a new user with permissions",
|
||||||
@@ -249,7 +310,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.TokenCreate"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenCreate"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -345,7 +406,7 @@ const docTemplate = `{
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/repository.Tokens"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -431,7 +492,7 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.Tokens"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
@@ -486,7 +547,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.TokenUpdate"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdate"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -666,7 +727,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.TokenPasswordReset"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenPasswordReset"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -734,7 +795,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.TokenUpdatePermissions"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdatePermissions"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -794,7 +855,7 @@ const docTemplate = `{
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/repository.Tokens"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -824,7 +885,7 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.Tokens"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"401": {
|
"401": {
|
||||||
@@ -839,6 +900,40 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/jobs": {
|
||||||
|
"post": {
|
||||||
|
"description": "Sends a command to the specified agent, waits for execution, and returns the result",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"jobs"
|
||||||
|
],
|
||||||
|
"summary": "Create and run a job on an agent",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "Job request",
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.AddJobIn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "Created",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.AddJobOut"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/logs": {
|
"/logs": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
"security": [
|
||||||
@@ -906,7 +1001,7 @@ const docTemplate = `{
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/storage.LogEntry"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -936,7 +1031,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/handlers.InsertLogRequest"
|
"$ref": "#/definitions/internal_handlers.InsertLogRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -1006,7 +1101,7 @@ const docTemplate = `{
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/handlers.InsertLogsRequest"
|
"$ref": "#/definitions/internal_handlers.InsertLogsRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -1106,7 +1201,7 @@ const docTemplate = `{
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/storage.LogEntry"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1140,96 +1235,188 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"/scripts/interpreters": {
|
||||||
|
"get": {
|
||||||
|
"description": "Returns all script interpreters available in the system",
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "List interpreters",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"description": "Registers a new script interpreter with name, label, and argv",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Create interpreter",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "Interpreter definition",
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterCreate"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "Created",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/scripts/interpreters/:id": {
|
||||||
|
"get": {
|
||||||
|
"description": "Returns a script interpreter by ID",
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Get interpreter",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Interpreter ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"description": "Updates fields of a script interpreter",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Update interpreter",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Interpreter ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Interpreter fields",
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterUpdate"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"description": "Removes a script interpreter by ID",
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Delete interpreter",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Interpreter ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"204": {
|
||||||
|
"description": "No Content"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/scripts/run": {
|
||||||
|
"post": {
|
||||||
|
"description": "Resolves interpreter argv[] and sends the full command to the agent",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Run a script on an agent",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "Script request",
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.RunScriptIn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "Created",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.RunScriptOut"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"definitions": {
|
"definitions": {
|
||||||
"handlers.AgentInfo": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AgentDeployConfig": {
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"connected_at": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"label": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"token": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"handlers.InsertLogRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"required": [
|
|
||||||
"agent",
|
|
||||||
"level",
|
|
||||||
"message",
|
|
||||||
"service"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"agent": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"level": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"message": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"service": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"timestamp": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"handlers.InsertLogsRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"required": [
|
|
||||||
"logs"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"logs": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"$ref": "#/definitions/handlers.InsertLogRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"handlers.RegisterRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"required": [
|
|
||||||
"csr",
|
|
||||||
"token"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"csr": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"token": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"handlers.RegisterResponse": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"ca_cert": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"client_cert": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"repository.AgentDeployConfig": {
|
|
||||||
"description": "Configuration for deploying HellreigN agent to a single server",
|
"description": "Configuration for deploying HellreigN agent to a single server",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
@@ -1247,7 +1434,7 @@ const docTemplate = `{
|
|||||||
"authMethod": {
|
"authMethod": {
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/definitions/repository.AuthMethod"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AuthMethod"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"example": "key"
|
"example": "key"
|
||||||
@@ -1255,7 +1442,7 @@ const docTemplate = `{
|
|||||||
"deployType": {
|
"deployType": {
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/definitions/repository.DeployType"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployType"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"example": "docker"
|
"example": "docker"
|
||||||
@@ -1282,7 +1469,7 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.AuthMethod": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AuthMethod": {
|
||||||
"description": "SSH authentication method: key or password",
|
"description": "SSH authentication method: key or password",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
@@ -1294,7 +1481,7 @@ const docTemplate = `{
|
|||||||
"AuthMethodPassword"
|
"AuthMethodPassword"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"repository.DeployAgentsRequest": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployAgentsRequest": {
|
||||||
"description": "Request to deploy HellreigN agents to multiple servers",
|
"description": "Request to deploy HellreigN agents to multiple servers",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
@@ -1305,12 +1492,12 @@ const docTemplate = `{
|
|||||||
"type": "array",
|
"type": "array",
|
||||||
"minItems": 1,
|
"minItems": 1,
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/repository.AgentDeployConfig"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AgentDeployConfig"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.DeployResponse": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResponse": {
|
||||||
"description": "Response containing deployment results and registration tokens",
|
"description": "Response containing deployment results and registration tokens",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1321,12 +1508,12 @@ const docTemplate = `{
|
|||||||
"results": {
|
"results": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/repository.DeployResult"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResult"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.DeployResult": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResult": {
|
||||||
"description": "Result of deploying to a single server",
|
"description": "Result of deploying to a single server",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1352,7 +1539,7 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.DeployType": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployType": {
|
||||||
"description": "Type of deployment: docker or binary",
|
"description": "Type of deployment: docker or binary",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
@@ -1364,7 +1551,7 @@ const docTemplate = `{
|
|||||||
"DeployTypeBinary"
|
"DeployTypeBinary"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"repository.LoginRequest": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"login",
|
"login",
|
||||||
@@ -1379,7 +1566,7 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.LoginResponse": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"is_active": {
|
"is_active": {
|
||||||
@@ -1408,7 +1595,7 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.RegistrationRequest": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.RegistrationRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"label"
|
"label"
|
||||||
@@ -1419,7 +1606,72 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.TokenCreate": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"argv": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterCreate": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"argv",
|
||||||
|
"label",
|
||||||
|
"name"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"argv": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterUpdate": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"argv": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenCreate": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"last_name",
|
"last_name",
|
||||||
@@ -1454,7 +1706,7 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.TokenPasswordReset": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenPasswordReset": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"new_password"
|
"new_password"
|
||||||
@@ -1465,7 +1717,7 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.TokenUpdate": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdate": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"last_name": {
|
"last_name": {
|
||||||
@@ -1476,7 +1728,7 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.TokenUpdatePermissions": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdatePermissions": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"is_active": {
|
"is_active": {
|
||||||
@@ -1493,7 +1745,7 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.Tokens": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": {
|
"id": {
|
||||||
@@ -1525,7 +1777,30 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"storage.LogEntry": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.UserRegister": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"last_name",
|
||||||
|
"login",
|
||||||
|
"name",
|
||||||
|
"password"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"last_name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"agent": {
|
"agent": {
|
||||||
@@ -1544,6 +1819,187 @@ const docTemplate = `{
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.AddJobIn": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"agent_id",
|
||||||
|
"command"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"agent_id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"command": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interpreter_id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.AddJobOut": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"command": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"stderr": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdout": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.AgentInfo": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"connected_at": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.InsertLogRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"agent",
|
||||||
|
"level",
|
||||||
|
"message",
|
||||||
|
"service"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"agent": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"message": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"timestamp": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.InsertLogsRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"logs"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"logs": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.InsertLogRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.RegisterRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"csr",
|
||||||
|
"token"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"csr": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.RegisterResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"ca_cert": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"client_cert": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.RunScriptIn": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"agent_id",
|
||||||
|
"interpreter_id",
|
||||||
|
"script_text"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"agent_id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interpreter_id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"script_text": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.RunScriptOut": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"command": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"stderr": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdout": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"securityDefinitions": {
|
"securityDefinitions": {
|
||||||
|
|||||||
+581
-125
@@ -25,7 +25,7 @@
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/handlers.AgentInfo"
|
"$ref": "#/definitions/internal_handlers.AgentInfo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.DeployAgentsRequest"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployAgentsRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Deployment results with tokens for each server",
|
"description": "Deployment results with tokens for each server",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.DeployResponse"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResponse"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/handlers.RegisterRequest"
|
"$ref": "#/definitions/internal_handlers.RegisterRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/handlers.RegisterResponse"
|
"$ref": "#/definitions/internal_handlers.RegisterResponse"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.RegistrationRequest"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.RegistrationRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.LoginRequest"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.LoginResponse"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginResponse"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
@@ -221,6 +221,67 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/auth/register": {
|
||||||
|
"post": {
|
||||||
|
"description": "Registers a new user with login, password, name, last name. All permissions are set to false.",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"summary": "Register user",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "Registration data",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.UserRegister"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad Request",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"409": {
|
||||||
|
"description": "Conflict",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Internal Server Error",
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/auth/token": {
|
"/auth/token": {
|
||||||
"post": {
|
"post": {
|
||||||
"description": "Creates a new user with permissions",
|
"description": "Creates a new user with permissions",
|
||||||
@@ -238,7 +299,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.TokenCreate"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenCreate"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -334,7 +395,7 @@
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/repository.Tokens"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -420,7 +481,7 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.Tokens"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
@@ -475,7 +536,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.TokenUpdate"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdate"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -655,7 +716,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.TokenPasswordReset"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenPasswordReset"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -723,7 +784,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.TokenUpdatePermissions"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdatePermissions"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -783,7 +844,7 @@
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/repository.Tokens"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -813,7 +874,7 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/repository.Tokens"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"401": {
|
"401": {
|
||||||
@@ -828,6 +889,40 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/jobs": {
|
||||||
|
"post": {
|
||||||
|
"description": "Sends a command to the specified agent, waits for execution, and returns the result",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"jobs"
|
||||||
|
],
|
||||||
|
"summary": "Create and run a job on an agent",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "Job request",
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.AddJobIn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "Created",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.AddJobOut"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/logs": {
|
"/logs": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
"security": [
|
||||||
@@ -895,7 +990,7 @@
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/storage.LogEntry"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -925,7 +1020,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/handlers.InsertLogRequest"
|
"$ref": "#/definitions/internal_handlers.InsertLogRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -995,7 +1090,7 @@
|
|||||||
"in": "body",
|
"in": "body",
|
||||||
"required": true,
|
"required": true,
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/handlers.InsertLogsRequest"
|
"$ref": "#/definitions/internal_handlers.InsertLogsRequest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -1095,7 +1190,7 @@
|
|||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/storage.LogEntry"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1129,96 +1224,188 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"/scripts/interpreters": {
|
||||||
|
"get": {
|
||||||
|
"description": "Returns all script interpreters available in the system",
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "List interpreters",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"description": "Registers a new script interpreter with name, label, and argv",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Create interpreter",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "Interpreter definition",
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterCreate"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "Created",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/scripts/interpreters/:id": {
|
||||||
|
"get": {
|
||||||
|
"description": "Returns a script interpreter by ID",
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Get interpreter",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Interpreter ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"description": "Updates fields of a script interpreter",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Update interpreter",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Interpreter ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Interpreter fields",
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterUpdate"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"description": "Removes a script interpreter by ID",
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Delete interpreter",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Interpreter ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"204": {
|
||||||
|
"description": "No Content"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/scripts/run": {
|
||||||
|
"post": {
|
||||||
|
"description": "Resolves interpreter argv[] and sends the full command to the agent",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"scripts"
|
||||||
|
],
|
||||||
|
"summary": "Run a script on an agent",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "Script request",
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.RunScriptIn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "Created",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.RunScriptOut"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"definitions": {
|
"definitions": {
|
||||||
"handlers.AgentInfo": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AgentDeployConfig": {
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"connected_at": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"label": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"token": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"handlers.InsertLogRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"required": [
|
|
||||||
"agent",
|
|
||||||
"level",
|
|
||||||
"message",
|
|
||||||
"service"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"agent": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"level": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"message": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"service": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"timestamp": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"handlers.InsertLogsRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"required": [
|
|
||||||
"logs"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"logs": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"$ref": "#/definitions/handlers.InsertLogRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"handlers.RegisterRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"required": [
|
|
||||||
"csr",
|
|
||||||
"token"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"csr": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"token": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"handlers.RegisterResponse": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"ca_cert": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"client_cert": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"repository.AgentDeployConfig": {
|
|
||||||
"description": "Configuration for deploying HellreigN agent to a single server",
|
"description": "Configuration for deploying HellreigN agent to a single server",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
@@ -1236,7 +1423,7 @@
|
|||||||
"authMethod": {
|
"authMethod": {
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/definitions/repository.AuthMethod"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AuthMethod"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"example": "key"
|
"example": "key"
|
||||||
@@ -1244,7 +1431,7 @@
|
|||||||
"deployType": {
|
"deployType": {
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/definitions/repository.DeployType"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployType"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"example": "docker"
|
"example": "docker"
|
||||||
@@ -1271,7 +1458,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.AuthMethod": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AuthMethod": {
|
||||||
"description": "SSH authentication method: key or password",
|
"description": "SSH authentication method: key or password",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
@@ -1283,7 +1470,7 @@
|
|||||||
"AuthMethodPassword"
|
"AuthMethodPassword"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"repository.DeployAgentsRequest": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployAgentsRequest": {
|
||||||
"description": "Request to deploy HellreigN agents to multiple servers",
|
"description": "Request to deploy HellreigN agents to multiple servers",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
@@ -1294,12 +1481,12 @@
|
|||||||
"type": "array",
|
"type": "array",
|
||||||
"minItems": 1,
|
"minItems": 1,
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/repository.AgentDeployConfig"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AgentDeployConfig"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.DeployResponse": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResponse": {
|
||||||
"description": "Response containing deployment results and registration tokens",
|
"description": "Response containing deployment results and registration tokens",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1310,12 +1497,12 @@
|
|||||||
"results": {
|
"results": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/repository.DeployResult"
|
"$ref": "#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResult"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.DeployResult": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResult": {
|
||||||
"description": "Result of deploying to a single server",
|
"description": "Result of deploying to a single server",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1341,7 +1528,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.DeployType": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployType": {
|
||||||
"description": "Type of deployment: docker or binary",
|
"description": "Type of deployment: docker or binary",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
@@ -1353,7 +1540,7 @@
|
|||||||
"DeployTypeBinary"
|
"DeployTypeBinary"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"repository.LoginRequest": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"login",
|
"login",
|
||||||
@@ -1368,7 +1555,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.LoginResponse": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"is_active": {
|
"is_active": {
|
||||||
@@ -1397,7 +1584,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.RegistrationRequest": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.RegistrationRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"label"
|
"label"
|
||||||
@@ -1408,7 +1595,72 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.TokenCreate": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"argv": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterCreate": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"argv",
|
||||||
|
"label",
|
||||||
|
"name"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"argv": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterUpdate": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"argv": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenCreate": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"last_name",
|
"last_name",
|
||||||
@@ -1443,7 +1695,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.TokenPasswordReset": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenPasswordReset": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"new_password"
|
"new_password"
|
||||||
@@ -1454,7 +1706,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.TokenUpdate": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdate": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"last_name": {
|
"last_name": {
|
||||||
@@ -1465,7 +1717,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.TokenUpdatePermissions": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdatePermissions": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"is_active": {
|
"is_active": {
|
||||||
@@ -1482,7 +1734,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"repository.Tokens": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": {
|
"id": {
|
||||||
@@ -1514,7 +1766,30 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"storage.LogEntry": {
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.UserRegister": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"last_name",
|
||||||
|
"login",
|
||||||
|
"name",
|
||||||
|
"password"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"last_name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"agent": {
|
"agent": {
|
||||||
@@ -1533,6 +1808,187 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.AddJobIn": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"agent_id",
|
||||||
|
"command"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"agent_id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"command": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interpreter_id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.AddJobOut": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"command": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"stderr": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdout": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.AgentInfo": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"connected_at": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.InsertLogRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"agent",
|
||||||
|
"level",
|
||||||
|
"message",
|
||||||
|
"service"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"agent": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"message": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"timestamp": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.InsertLogsRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"logs"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"logs": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/internal_handlers.InsertLogRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.RegisterRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"csr",
|
||||||
|
"token"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"csr": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.RegisterResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"ca_cert": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"client_cert": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.RunScriptIn": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"agent_id",
|
||||||
|
"interpreter_id",
|
||||||
|
"script_text"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"agent_id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"interpreter_id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"script_text": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"internal_handlers.RunScriptOut": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"command": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"stderr": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stdout": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"securityDefinitions": {
|
"securityDefinitions": {
|
||||||
|
|||||||
+399
-96
@@ -1,62 +1,5 @@
|
|||||||
definitions:
|
definitions:
|
||||||
handlers.AgentInfo:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AgentDeployConfig:
|
||||||
properties:
|
|
||||||
connected_at:
|
|
||||||
type: string
|
|
||||||
label:
|
|
||||||
type: string
|
|
||||||
services:
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
token:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
handlers.InsertLogRequest:
|
|
||||||
properties:
|
|
||||||
agent:
|
|
||||||
type: string
|
|
||||||
level:
|
|
||||||
type: string
|
|
||||||
message:
|
|
||||||
type: string
|
|
||||||
service:
|
|
||||||
type: string
|
|
||||||
timestamp:
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- agent
|
|
||||||
- level
|
|
||||||
- message
|
|
||||||
- service
|
|
||||||
type: object
|
|
||||||
handlers.InsertLogsRequest:
|
|
||||||
properties:
|
|
||||||
logs:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/handlers.InsertLogRequest'
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- logs
|
|
||||||
type: object
|
|
||||||
handlers.RegisterRequest:
|
|
||||||
properties:
|
|
||||||
csr:
|
|
||||||
type: string
|
|
||||||
token:
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- csr
|
|
||||||
- token
|
|
||||||
type: object
|
|
||||||
handlers.RegisterResponse:
|
|
||||||
properties:
|
|
||||||
ca_cert:
|
|
||||||
type: string
|
|
||||||
client_cert:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
repository.AgentDeployConfig:
|
|
||||||
description: Configuration for deploying HellreigN agent to a single server
|
description: Configuration for deploying HellreigN agent to a single server
|
||||||
properties:
|
properties:
|
||||||
agentLabel:
|
agentLabel:
|
||||||
@@ -64,11 +7,11 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
authMethod:
|
authMethod:
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: '#/definitions/repository.AuthMethod'
|
- $ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AuthMethod'
|
||||||
example: key
|
example: key
|
||||||
deployType:
|
deployType:
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: '#/definitions/repository.DeployType'
|
- $ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployType'
|
||||||
example: docker
|
example: docker
|
||||||
ip:
|
ip:
|
||||||
example: 192.168.1.100
|
example: 192.168.1.100
|
||||||
@@ -92,7 +35,7 @@ definitions:
|
|||||||
- ip
|
- ip
|
||||||
- user
|
- user
|
||||||
type: object
|
type: object
|
||||||
repository.AuthMethod:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AuthMethod:
|
||||||
description: 'SSH authentication method: key or password'
|
description: 'SSH authentication method: key or password'
|
||||||
enum:
|
enum:
|
||||||
- key
|
- key
|
||||||
@@ -101,18 +44,18 @@ definitions:
|
|||||||
x-enum-varnames:
|
x-enum-varnames:
|
||||||
- AuthMethodKey
|
- AuthMethodKey
|
||||||
- AuthMethodPassword
|
- AuthMethodPassword
|
||||||
repository.DeployAgentsRequest:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployAgentsRequest:
|
||||||
description: Request to deploy HellreigN agents to multiple servers
|
description: Request to deploy HellreigN agents to multiple servers
|
||||||
properties:
|
properties:
|
||||||
servers:
|
servers:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/repository.AgentDeployConfig'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.AgentDeployConfig'
|
||||||
minItems: 1
|
minItems: 1
|
||||||
type: array
|
type: array
|
||||||
required:
|
required:
|
||||||
- servers
|
- servers
|
||||||
type: object
|
type: object
|
||||||
repository.DeployResponse:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResponse:
|
||||||
description: Response containing deployment results and registration tokens
|
description: Response containing deployment results and registration tokens
|
||||||
properties:
|
properties:
|
||||||
message:
|
message:
|
||||||
@@ -120,10 +63,10 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
results:
|
results:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/repository.DeployResult'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResult'
|
||||||
type: array
|
type: array
|
||||||
type: object
|
type: object
|
||||||
repository.DeployResult:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResult:
|
||||||
description: Result of deploying to a single server
|
description: Result of deploying to a single server
|
||||||
properties:
|
properties:
|
||||||
agent_label:
|
agent_label:
|
||||||
@@ -142,7 +85,7 @@ definitions:
|
|||||||
example: abc123...
|
example: abc123...
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
repository.DeployType:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployType:
|
||||||
description: 'Type of deployment: docker or binary'
|
description: 'Type of deployment: docker or binary'
|
||||||
enum:
|
enum:
|
||||||
- docker
|
- docker
|
||||||
@@ -151,7 +94,7 @@ definitions:
|
|||||||
x-enum-varnames:
|
x-enum-varnames:
|
||||||
- DeployTypeDocker
|
- DeployTypeDocker
|
||||||
- DeployTypeBinary
|
- DeployTypeBinary
|
||||||
repository.LoginRequest:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginRequest:
|
||||||
properties:
|
properties:
|
||||||
login:
|
login:
|
||||||
type: string
|
type: string
|
||||||
@@ -161,7 +104,7 @@ definitions:
|
|||||||
- login
|
- login
|
||||||
- password
|
- password
|
||||||
type: object
|
type: object
|
||||||
repository.LoginResponse:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginResponse:
|
||||||
properties:
|
properties:
|
||||||
is_active:
|
is_active:
|
||||||
type: boolean
|
type: boolean
|
||||||
@@ -180,14 +123,57 @@ definitions:
|
|||||||
token:
|
token:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
repository.RegistrationRequest:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.RegistrationRequest:
|
||||||
properties:
|
properties:
|
||||||
label:
|
label:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- label
|
- label
|
||||||
type: object
|
type: object
|
||||||
repository.TokenCreate:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter:
|
||||||
|
properties:
|
||||||
|
argv:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
created_at:
|
||||||
|
type: string
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
label:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
updated_at:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterCreate:
|
||||||
|
properties:
|
||||||
|
argv:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
label:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- argv
|
||||||
|
- label
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterUpdate:
|
||||||
|
properties:
|
||||||
|
argv:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
label:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenCreate:
|
||||||
properties:
|
properties:
|
||||||
is_active:
|
is_active:
|
||||||
type: boolean
|
type: boolean
|
||||||
@@ -211,21 +197,21 @@ definitions:
|
|||||||
- name
|
- name
|
||||||
- password
|
- password
|
||||||
type: object
|
type: object
|
||||||
repository.TokenPasswordReset:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenPasswordReset:
|
||||||
properties:
|
properties:
|
||||||
new_password:
|
new_password:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- new_password
|
- new_password
|
||||||
type: object
|
type: object
|
||||||
repository.TokenUpdate:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdate:
|
||||||
properties:
|
properties:
|
||||||
last_name:
|
last_name:
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
repository.TokenUpdatePermissions:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdatePermissions:
|
||||||
properties:
|
properties:
|
||||||
is_active:
|
is_active:
|
||||||
type: boolean
|
type: boolean
|
||||||
@@ -236,7 +222,7 @@ definitions:
|
|||||||
permission_view:
|
permission_view:
|
||||||
type: boolean
|
type: boolean
|
||||||
type: object
|
type: object
|
||||||
repository.Tokens:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens:
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
@@ -257,7 +243,23 @@ definitions:
|
|||||||
token:
|
token:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
storage.LogEntry:
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.UserRegister:
|
||||||
|
properties:
|
||||||
|
last_name:
|
||||||
|
type: string
|
||||||
|
login:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
password:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- last_name
|
||||||
|
- login
|
||||||
|
- name
|
||||||
|
- password
|
||||||
|
type: object
|
||||||
|
gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry:
|
||||||
properties:
|
properties:
|
||||||
agent:
|
agent:
|
||||||
type: string
|
type: string
|
||||||
@@ -270,6 +272,126 @@ definitions:
|
|||||||
timestamp:
|
timestamp:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
internal_handlers.AddJobIn:
|
||||||
|
properties:
|
||||||
|
agent_id:
|
||||||
|
type: string
|
||||||
|
command:
|
||||||
|
type: string
|
||||||
|
interpreter_id:
|
||||||
|
type: integer
|
||||||
|
stdin:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- agent_id
|
||||||
|
- command
|
||||||
|
type: object
|
||||||
|
internal_handlers.AddJobOut:
|
||||||
|
properties:
|
||||||
|
command:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
status:
|
||||||
|
type: integer
|
||||||
|
stderr:
|
||||||
|
type: string
|
||||||
|
stdin:
|
||||||
|
type: string
|
||||||
|
stdout:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
internal_handlers.AgentInfo:
|
||||||
|
properties:
|
||||||
|
connected_at:
|
||||||
|
type: string
|
||||||
|
label:
|
||||||
|
type: string
|
||||||
|
services:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
token:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
internal_handlers.InsertLogRequest:
|
||||||
|
properties:
|
||||||
|
agent:
|
||||||
|
type: string
|
||||||
|
level:
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
service:
|
||||||
|
type: string
|
||||||
|
timestamp:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- agent
|
||||||
|
- level
|
||||||
|
- message
|
||||||
|
- service
|
||||||
|
type: object
|
||||||
|
internal_handlers.InsertLogsRequest:
|
||||||
|
properties:
|
||||||
|
logs:
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/internal_handlers.InsertLogRequest'
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- logs
|
||||||
|
type: object
|
||||||
|
internal_handlers.RegisterRequest:
|
||||||
|
properties:
|
||||||
|
csr:
|
||||||
|
type: string
|
||||||
|
token:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- csr
|
||||||
|
- token
|
||||||
|
type: object
|
||||||
|
internal_handlers.RegisterResponse:
|
||||||
|
properties:
|
||||||
|
ca_cert:
|
||||||
|
type: string
|
||||||
|
client_cert:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
internal_handlers.RunScriptIn:
|
||||||
|
properties:
|
||||||
|
agent_id:
|
||||||
|
type: string
|
||||||
|
interpreter_id:
|
||||||
|
type: integer
|
||||||
|
script_text:
|
||||||
|
type: string
|
||||||
|
stdin:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- agent_id
|
||||||
|
- interpreter_id
|
||||||
|
- script_text
|
||||||
|
type: object
|
||||||
|
internal_handlers.RunScriptOut:
|
||||||
|
properties:
|
||||||
|
command:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
status:
|
||||||
|
type: integer
|
||||||
|
stderr:
|
||||||
|
type: string
|
||||||
|
stdin:
|
||||||
|
type: string
|
||||||
|
stdout:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
info:
|
info:
|
||||||
contact: {}
|
contact: {}
|
||||||
paths:
|
paths:
|
||||||
@@ -284,7 +406,7 @@ paths:
|
|||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/handlers.AgentInfo'
|
$ref: '#/definitions/internal_handlers.AgentInfo'
|
||||||
type: array
|
type: array
|
||||||
security:
|
security:
|
||||||
- Bearer: []
|
- Bearer: []
|
||||||
@@ -303,14 +425,14 @@ paths:
|
|||||||
name: request
|
name: request
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.DeployAgentsRequest'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployAgentsRequest'
|
||||||
produces:
|
produces:
|
||||||
- application/json
|
- application/json
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: Deployment results with tokens for each server
|
description: Deployment results with tokens for each server
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.DeployResponse'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.DeployResponse'
|
||||||
"400":
|
"400":
|
||||||
description: Invalid request
|
description: Invalid request
|
||||||
schema:
|
schema:
|
||||||
@@ -338,14 +460,14 @@ paths:
|
|||||||
name: request
|
name: request
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/handlers.RegisterRequest'
|
$ref: '#/definitions/internal_handlers.RegisterRequest'
|
||||||
produces:
|
produces:
|
||||||
- application/json
|
- application/json
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/handlers.RegisterResponse'
|
$ref: '#/definitions/internal_handlers.RegisterResponse'
|
||||||
summary: Register agent
|
summary: Register agent
|
||||||
tags:
|
tags:
|
||||||
- agents
|
- agents
|
||||||
@@ -359,7 +481,7 @@ paths:
|
|||||||
name: request
|
name: request
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.RegistrationRequest'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.RegistrationRequest'
|
||||||
produces:
|
produces:
|
||||||
- application/json
|
- application/json
|
||||||
responses:
|
responses:
|
||||||
@@ -385,12 +507,12 @@ paths:
|
|||||||
name: request
|
name: request
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.LoginRequest'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginRequest'
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.LoginResponse'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.LoginResponse'
|
||||||
"400":
|
"400":
|
||||||
description: Bad Request
|
description: Bad Request
|
||||||
schema:
|
schema:
|
||||||
@@ -412,6 +534,47 @@ paths:
|
|||||||
summary: Login
|
summary: Login
|
||||||
tags:
|
tags:
|
||||||
- auth
|
- auth
|
||||||
|
/auth/register:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: Registers a new user with login, password, name, last name. All
|
||||||
|
permissions are set to false.
|
||||||
|
parameters:
|
||||||
|
- description: Registration data
|
||||||
|
in: body
|
||||||
|
name: request
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.UserRegister'
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
schema:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
"409":
|
||||||
|
description: Conflict
|
||||||
|
schema:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
"500":
|
||||||
|
description: Internal Server Error
|
||||||
|
schema:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
summary: Register user
|
||||||
|
tags:
|
||||||
|
- auth
|
||||||
/auth/token:
|
/auth/token:
|
||||||
delete:
|
delete:
|
||||||
description: Deletes the current authenticated user
|
description: Deletes the current authenticated user
|
||||||
@@ -447,7 +610,7 @@ paths:
|
|||||||
name: request
|
name: request
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.TokenCreate'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenCreate'
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@@ -486,7 +649,7 @@ paths:
|
|||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/repository.Tokens'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens'
|
||||||
type: array
|
type: array
|
||||||
"500":
|
"500":
|
||||||
description: Internal Server Error
|
description: Internal Server Error
|
||||||
@@ -543,7 +706,7 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.Tokens'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens'
|
||||||
"400":
|
"400":
|
||||||
description: Bad Request
|
description: Bad Request
|
||||||
schema:
|
schema:
|
||||||
@@ -580,7 +743,7 @@ paths:
|
|||||||
name: request
|
name: request
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.TokenUpdate'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdate'
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@@ -699,7 +862,7 @@ paths:
|
|||||||
name: request
|
name: request
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.TokenPasswordReset'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenPasswordReset'
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@@ -744,7 +907,7 @@ paths:
|
|||||||
name: request
|
name: request
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.TokenUpdatePermissions'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.TokenUpdatePermissions'
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@@ -783,7 +946,7 @@ paths:
|
|||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/repository.Tokens'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens'
|
||||||
type: array
|
type: array
|
||||||
"500":
|
"500":
|
||||||
description: Internal Server Error
|
description: Internal Server Error
|
||||||
@@ -803,7 +966,7 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/repository.Tokens'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.Tokens'
|
||||||
"401":
|
"401":
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
schema:
|
schema:
|
||||||
@@ -813,6 +976,29 @@ paths:
|
|||||||
summary: Validate token
|
summary: Validate token
|
||||||
tags:
|
tags:
|
||||||
- auth
|
- auth
|
||||||
|
/jobs:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: Sends a command to the specified agent, waits for execution, and
|
||||||
|
returns the result
|
||||||
|
parameters:
|
||||||
|
- description: Job request
|
||||||
|
in: body
|
||||||
|
name: body
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/internal_handlers.AddJobIn'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: Created
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/internal_handlers.AddJobOut'
|
||||||
|
summary: Create and run a job on an agent
|
||||||
|
tags:
|
||||||
|
- jobs
|
||||||
/logs:
|
/logs:
|
||||||
get:
|
get:
|
||||||
description: Searches logs with various filters
|
description: Searches logs with various filters
|
||||||
@@ -854,7 +1040,7 @@ paths:
|
|||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/storage.LogEntry'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry'
|
||||||
type: array
|
type: array
|
||||||
security:
|
security:
|
||||||
- Bearer: []
|
- Bearer: []
|
||||||
@@ -871,7 +1057,7 @@ paths:
|
|||||||
name: body
|
name: body
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/handlers.InsertLogRequest'
|
$ref: '#/definitions/internal_handlers.InsertLogRequest'
|
||||||
produces:
|
produces:
|
||||||
- application/json
|
- application/json
|
||||||
responses:
|
responses:
|
||||||
@@ -914,7 +1100,7 @@ paths:
|
|||||||
name: body
|
name: body
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/handlers.InsertLogsRequest'
|
$ref: '#/definitions/internal_handlers.InsertLogsRequest'
|
||||||
produces:
|
produces:
|
||||||
- application/json
|
- application/json
|
||||||
responses:
|
responses:
|
||||||
@@ -980,7 +1166,7 @@ paths:
|
|||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/storage.LogEntry'
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_storage.LogEntry'
|
||||||
type: array
|
type: array
|
||||||
security:
|
security:
|
||||||
- Bearer: []
|
- Bearer: []
|
||||||
@@ -1004,6 +1190,123 @@ paths:
|
|||||||
summary: Get distinct services
|
summary: Get distinct services
|
||||||
tags:
|
tags:
|
||||||
- logs
|
- logs
|
||||||
|
/scripts/interpreters:
|
||||||
|
get:
|
||||||
|
description: Returns all script interpreters available in the system
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter'
|
||||||
|
type: array
|
||||||
|
summary: List interpreters
|
||||||
|
tags:
|
||||||
|
- scripts
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: Registers a new script interpreter with name, label, and argv
|
||||||
|
parameters:
|
||||||
|
- description: Interpreter definition
|
||||||
|
in: body
|
||||||
|
name: body
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterCreate'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: Created
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter'
|
||||||
|
summary: Create interpreter
|
||||||
|
tags:
|
||||||
|
- scripts
|
||||||
|
/scripts/interpreters/:id:
|
||||||
|
delete:
|
||||||
|
description: Removes a script interpreter by ID
|
||||||
|
parameters:
|
||||||
|
- description: Interpreter ID
|
||||||
|
in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
"204":
|
||||||
|
description: No Content
|
||||||
|
summary: Delete interpreter
|
||||||
|
tags:
|
||||||
|
- scripts
|
||||||
|
get:
|
||||||
|
description: Returns a script interpreter by ID
|
||||||
|
parameters:
|
||||||
|
- description: Interpreter ID
|
||||||
|
in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter'
|
||||||
|
summary: Get interpreter
|
||||||
|
tags:
|
||||||
|
- scripts
|
||||||
|
put:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: Updates fields of a script interpreter
|
||||||
|
parameters:
|
||||||
|
- description: Interpreter ID
|
||||||
|
in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
- description: Interpreter fields
|
||||||
|
in: body
|
||||||
|
name: body
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreterUpdate'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/gitea_d3m0k1d_ru_d3m0k1d_HellreigN_backend_internal_repository.ScriptInterpreter'
|
||||||
|
summary: Update interpreter
|
||||||
|
tags:
|
||||||
|
- scripts
|
||||||
|
/scripts/run:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: Resolves interpreter argv[] and sends the full command to the agent
|
||||||
|
parameters:
|
||||||
|
- description: Script request
|
||||||
|
in: body
|
||||||
|
name: body
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/internal_handlers.RunScriptIn'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: Created
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/internal_handlers.RunScriptOut'
|
||||||
|
summary: Run a script on an agent
|
||||||
|
tags:
|
||||||
|
- scripts
|
||||||
securityDefinitions:
|
securityDefinitions:
|
||||||
Bearer:
|
Bearer:
|
||||||
description: Type "Bearer" followed by a space and the JWT token.
|
description: Type "Bearer" followed by a space and the JWT token.
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ require (
|
|||||||
gitea.d3m0k1d.ru/d3m0k1d/HellreigN/proto v0.0.0-20260403210401-a6212c89fc0e
|
gitea.d3m0k1d.ru/d3m0k1d/HellreigN/proto v0.0.0-20260403210401-a6212c89fc0e
|
||||||
github.com/ClickHouse/clickhouse-go/v2 v2.44.0
|
github.com/ClickHouse/clickhouse-go/v2 v2.44.0
|
||||||
github.com/gin-gonic/gin v1.12.0
|
github.com/gin-gonic/gin v1.12.0
|
||||||
|
github.com/samber/lo v1.53.0
|
||||||
github.com/swaggo/files v1.0.1
|
github.com/swaggo/files v1.0.1
|
||||||
github.com/swaggo/gin-swagger v1.6.1
|
github.com/swaggo/gin-swagger v1.6.1
|
||||||
github.com/swaggo/swag v1.16.6
|
github.com/swaggo/swag v1.16.6
|
||||||
|
|||||||
@@ -138,6 +138,8 @@ github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94
|
|||||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
|
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
|
||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
|
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
|
||||||
|
github.com/samber/lo v1.53.0 h1:t975lj2py4kJPQ6haz1QMgtId2gtmfktACxIXArw3HM=
|
||||||
|
github.com/samber/lo v1.53.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=
|
||||||
github.com/segmentio/asm v1.2.1 h1:DTNbBqs57ioxAD4PrArqftgypG4/qNpXoJx8TVXxPR0=
|
github.com/segmentio/asm v1.2.1 h1:DTNbBqs57ioxAD4PrArqftgypG4/qNpXoJx8TVXxPR0=
|
||||||
github.com/segmentio/asm v1.2.1/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
|
github.com/segmentio/asm v1.2.1/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
|
||||||
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
|
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/models"
|
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/models"
|
||||||
@@ -78,26 +77,21 @@ func (self *Commander) removeAgent(aid string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Agent) AddJob(job models.JobForInsert) (int64, error) {
|
func (self *Agent) AddJob(job models.JobForInsert) (int64, error) {
|
||||||
log.Printf("[DEBUG] AddJob: agent=%s, command=%v", self.aid, job.Command)
|
|
||||||
jid, err := self.jobber.InitJob(self.ctx, self.aid, job)
|
jid, err := self.jobber.InitJob(self.ctx, self.aid, job)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[DEBUG] AddJob: InitJob failed: %v", err)
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] AddJob: InitJob returned jid=%d, sending to self.in channel", jid)
|
self.jobs[jid] = newJob()
|
||||||
self.in <- &proto.Command{
|
self.in <- &proto.Command{
|
||||||
Id: jid,
|
Id: jid,
|
||||||
Command: job.Command,
|
Command: job.Command,
|
||||||
Stdin: job.Stdin,
|
Stdin: job.Stdin,
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] AddJob: sent to self.in channel successfully")
|
|
||||||
return jid, err
|
return jid, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Agent) WaitJob(jid int64) (*models.Job, error) {
|
func (self *Agent) WaitJob(jid int64) (*models.Job, error) {
|
||||||
log.Printf("[DEBUG] WaitJob: agent=%s, jid=%d, waiting on self.jobs[%d].out", self.aid, jid, jid)
|
|
||||||
result := <-self.jobs[jid].out
|
result := <-self.jobs[jid].out
|
||||||
log.Printf("[DEBUG] WaitJob: agent=%s, jid=%d, received result", self.aid, jid)
|
|
||||||
return &result.fc, result.err
|
return &result.fc, result.err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +135,6 @@ func (self *Agent) recv() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] recv: agent=%s, received finished job id=%d", self.aid, msg.Id)
|
|
||||||
return self.jobber.UpdateJobInDB(self.ctx, msg.Id, models.JobForUpdate{
|
return self.jobber.UpdateJobInDB(self.ctx, msg.Id, models.JobForUpdate{
|
||||||
Stdout: msg.Stdout,
|
Stdout: msg.Stdout,
|
||||||
Stderr: msg.Stderr,
|
Stderr: msg.Stderr,
|
||||||
@@ -149,33 +142,24 @@ func (self *Agent) recv() error {
|
|||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
log.Printf("[DEBUG] recv: agent=%s, EOF received", self.aid)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if err != nil {
|
// TODO: that would blow up at some point
|
||||||
log.Printf("[DEBUG] recv: agent=%s, error: %v", self.aid, err)
|
|
||||||
}
|
|
||||||
out := self.jobs[job.ID].out
|
out := self.jobs[job.ID].out
|
||||||
out <- JobOut{
|
out <- JobOut{
|
||||||
fc: job,
|
fc: job,
|
||||||
err: err,
|
err: err,
|
||||||
}
|
}
|
||||||
close(out)
|
close(out)
|
||||||
log.Printf("[DEBUG] recv: agent=%s, sent result for job id=%d", self.aid, job.ID)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Agent) send() error {
|
func (self *Agent) send() error {
|
||||||
for job := range self.in {
|
for job := range self.in {
|
||||||
log.Printf("[DEBUG] send: agent=%s, job id=%d, command=%v", self.aid, job.Id, job.Command)
|
|
||||||
self.jobs[job.Id] = newJob()
|
|
||||||
if err := self.bidi.Send(job); err != nil {
|
if err := self.bidi.Send(job); err != nil {
|
||||||
log.Printf("[DEBUG] send: agent=%s, failed to send job id=%d: %v", self.aid, job.Id, err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] send: agent=%s, sent job id=%d to agent", self.aid, job.Id)
|
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] send: agent=%s, self.in channel closed", self.aid)
|
|
||||||
return io.EOF
|
return io.EOF
|
||||||
// self.jobs[]
|
// self.jobs[]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,37 @@ func (ag *AuthGroup) Login(c *gin.Context) {
|
|||||||
c.JSON(http.StatusOK, resp)
|
c.JSON(http.StatusOK, resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RegisterUser registers a new user with all permissions set to false.
|
||||||
|
// @Summary Register user
|
||||||
|
// @Description Registers a new user with login, password, name, last name. All permissions are set to false.
|
||||||
|
// @Tags auth
|
||||||
|
// @Accept json
|
||||||
|
// @Param request body repository.UserRegister true "Registration data"
|
||||||
|
// @Success 200 {object} map[string]string
|
||||||
|
// @Failure 400 {object} map[string]string
|
||||||
|
// @Failure 409 {object} map[string]string
|
||||||
|
// @Failure 500 {object} map[string]string
|
||||||
|
// @Router /auth/register [post]
|
||||||
|
func (ag *AuthGroup) RegisterUser(c *gin.Context) {
|
||||||
|
var req repository.UserRegister
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid request body"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ag.Repo.ExistsByLogin(req.Login) {
|
||||||
|
c.JSON(http.StatusConflict, gin.H{"error": "login already exists"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := ag.Repo.RegisterUser(req); err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to register user"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, gin.H{"message": "user registered"})
|
||||||
|
}
|
||||||
|
|
||||||
// CreateToken creates a new user.
|
// CreateToken creates a new user.
|
||||||
// @Summary Create user
|
// @Summary Create user
|
||||||
// @Description Creates a new user with permissions
|
// @Description Creates a new user with permissions
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package handlers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/samber/lo"
|
||||||
|
)
|
||||||
|
|
||||||
|
func CorsMiddleware(origincfg string) gin.HandlerFunc {
|
||||||
|
origins := strings.Split(origincfg, ";")
|
||||||
|
if origins[0] == "" {
|
||||||
|
panic("zero cors origins wtf is your config")
|
||||||
|
}
|
||||||
|
return func(c *gin.Context) {
|
||||||
|
origin := c.GetHeader("Origin")
|
||||||
|
if !lo.Contains(origins, origin) {
|
||||||
|
origin = origins[0]
|
||||||
|
}
|
||||||
|
c.Writer.Header().Set("Access-Control-Allow-Origin", origin)
|
||||||
|
// c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
|
||||||
|
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, Authorization")
|
||||||
|
c.Writer.Header().Set("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PATCH, DELETE, PUT")
|
||||||
|
|
||||||
|
if c.Request.Method == "OPTIONS" {
|
||||||
|
c.AbortWithStatus(http.StatusNoContent)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Next()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"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"
|
||||||
@@ -45,21 +47,16 @@ type AddJobOut struct {
|
|||||||
// @Success 201 {object} AddJobOut
|
// @Success 201 {object} AddJobOut
|
||||||
// @Router /jobs [post]
|
// @Router /jobs [post]
|
||||||
func (self *JobsHandlers) AddJob(c *gin.Context) {
|
func (self *JobsHandlers) AddJob(c *gin.Context) {
|
||||||
log.Printf("[DEBUG] AddJob handler: request received")
|
|
||||||
err := func() error {
|
err := func() error {
|
||||||
var in AddJobIn
|
var in AddJobIn
|
||||||
if err := c.Bind(&in); err != nil {
|
if err := c.Bind(&in); err != nil {
|
||||||
log.Printf("[DEBUG] AddJob handler: bind failed: %v", err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] AddJob handler: agent_id=%s, command=%s, interpreter_id=%d", in.AgentID, in.Command, in.InterpreterID)
|
|
||||||
agent, ok := self.cmder.GetAgent(in.AgentID)
|
agent, ok := self.cmder.GetAgent(in.AgentID)
|
||||||
if !ok {
|
if !ok {
|
||||||
log.Printf("[DEBUG] AddJob handler: agent %s not found", in.AgentID)
|
|
||||||
c.Status(http.StatusNotFound)
|
c.Status(http.StatusNotFound)
|
||||||
return fmt.Errorf("agent not found")
|
return fmt.Errorf("agent not found")
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] AddJob handler: agent found, resolving command")
|
|
||||||
|
|
||||||
var command []string
|
var command []string
|
||||||
if in.InterpreterID == 0 {
|
if in.InterpreterID == 0 {
|
||||||
@@ -68,27 +65,21 @@ func (self *JobsHandlers) AddJob(c *gin.Context) {
|
|||||||
var err error
|
var err error
|
||||||
command, err = self.svc.ResolveCommand(c.Request.Context(), in.InterpreterID, in.Command)
|
command, err = self.svc.ResolveCommand(c.Request.Context(), in.InterpreterID, in.Command)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[DEBUG] AddJob handler: ResolveCommand failed: %v", err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[DEBUG] AddJob handler: calling agent.AddJob with command=%v", command)
|
|
||||||
jid, err := agent.AddJob(models.JobForInsert{
|
jid, err := agent.AddJob(models.JobForInsert{
|
||||||
Command: command,
|
Command: command,
|
||||||
Stdin: in.Stdin,
|
Stdin: in.Stdin,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[DEBUG] AddJob handler: agent.AddJob failed: %v", err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] AddJob handler: agent.AddJob returned jid=%d, calling WaitJob", jid)
|
|
||||||
job, err := agent.WaitJob(jid)
|
job, err := agent.WaitJob(jid)
|
||||||
if err != nil {
|
if err != nil && !errors.Is(err, &exec.ExitError{}) {
|
||||||
log.Printf("[DEBUG] AddJob handler: agent.WaitJob failed: %v", err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Printf("[DEBUG] AddJob handler: agent.WaitJob returned job id=%d, status=%d", job.ID, job.Status)
|
|
||||||
c.JSON(http.StatusCreated, AddJobOut{
|
c.JSON(http.StatusCreated, AddJobOut{
|
||||||
ID: job.ID,
|
ID: job.ID,
|
||||||
Command: job.Command,
|
Command: job.Command,
|
||||||
@@ -97,7 +88,6 @@ func (self *JobsHandlers) AddJob(c *gin.Context) {
|
|||||||
Stderr: job.Stderr,
|
Stderr: job.Stderr,
|
||||||
Status: job.Status,
|
Status: job.Status,
|
||||||
})
|
})
|
||||||
log.Printf("[DEBUG] AddJob handler: response sent")
|
|
||||||
return nil
|
return nil
|
||||||
}()
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -21,6 +21,22 @@ func NewScriptHandlers(svc *service.ScriptService, cmder *commander.Commander) S
|
|||||||
return ScriptHandlers{svc: svc, cmder: cmder}
|
return ScriptHandlers{svc: svc, cmder: cmder}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RunScriptIn struct {
|
||||||
|
AgentID string `json:"agent_id" binding:"required"`
|
||||||
|
InterpreterID int64 `json:"interpreter_id" binding:"required"`
|
||||||
|
ScriptText string `json:"script_text" binding:"required"`
|
||||||
|
Stdin *string `json:"stdin"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RunScriptOut struct {
|
||||||
|
ID int64 `json:"id"`
|
||||||
|
Command []string `json:"command"`
|
||||||
|
Stdin *string `json:"stdin"`
|
||||||
|
Stdout string `json:"stdout"`
|
||||||
|
Stderr string `json:"stderr"`
|
||||||
|
Status int32 `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
// RunScript executes a script on a target agent.
|
// RunScript executes a script on a target agent.
|
||||||
// @Summary Run a script on an agent
|
// @Summary Run a script on an agent
|
||||||
// @Description Resolves interpreter argv[] and sends the full command to the agent
|
// @Description Resolves interpreter argv[] and sends the full command to the agent
|
||||||
@@ -32,12 +48,6 @@ func NewScriptHandlers(svc *service.ScriptService, cmder *commander.Commander) S
|
|||||||
// @Router /scripts/run [post]
|
// @Router /scripts/run [post]
|
||||||
func (self *ScriptHandlers) RunScript(c *gin.Context) {
|
func (self *ScriptHandlers) RunScript(c *gin.Context) {
|
||||||
err := func() error {
|
err := func() error {
|
||||||
type RunScriptIn struct {
|
|
||||||
AgentID string `json:"agent_id" binding:"required"`
|
|
||||||
InterpreterID int64 `json:"interpreter_id" binding:"required"`
|
|
||||||
ScriptText string `json:"script_text" binding:"required"`
|
|
||||||
Stdin *string `json:"stdin"`
|
|
||||||
}
|
|
||||||
var in RunScriptIn
|
var in RunScriptIn
|
||||||
if err := c.Bind(&in); err != nil {
|
if err := c.Bind(&in); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -67,14 +77,6 @@ func (self *ScriptHandlers) RunScript(c *gin.Context) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
type RunScriptOut struct {
|
|
||||||
ID int64 `json:"id"`
|
|
||||||
Command []string `json:"command"`
|
|
||||||
Stdin *string `json:"stdin"`
|
|
||||||
Stdout string `json:"stdout"`
|
|
||||||
Stderr string `json:"stderr"`
|
|
||||||
Status int32 `json:"status"`
|
|
||||||
}
|
|
||||||
c.JSON(http.StatusCreated, RunScriptOut{
|
c.JSON(http.StatusCreated, RunScriptOut{
|
||||||
ID: job.ID,
|
ID: job.ID,
|
||||||
Command: job.Command,
|
Command: job.Command,
|
||||||
|
|||||||
@@ -25,6 +25,14 @@ type TokenCreate struct {
|
|||||||
IsActive bool `json:"is_active"`
|
IsActive bool `json:"is_active"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UserRegister is the request body for public user registration (all permissions false).
|
||||||
|
type UserRegister struct {
|
||||||
|
Name string `json:"name" binding:"required"`
|
||||||
|
LastName string `json:"last_name" binding:"required"`
|
||||||
|
Login string `json:"login" binding:"required"`
|
||||||
|
Password string `json:"password" binding:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
// TokenUpdate is the request body for updating an existing user.
|
// TokenUpdate is the request body for updating an existing user.
|
||||||
type TokenUpdate struct {
|
type TokenUpdate struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
|||||||
@@ -64,6 +64,34 @@ func (r *Repository) CreateToken(tc TokenCreate) (string, error) {
|
|||||||
return strconv.FormatInt(id, 10), nil
|
return strconv.FormatInt(id, 10), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RegisterUser inserts a new user with all permissions set to false and is_active=false.
|
||||||
|
func (r *Repository) RegisterUser(ur UserRegister) (string, error) {
|
||||||
|
hashed, err := bcrypt.GenerateFromPassword([]byte(ur.Password), bcrypt.DefaultCost)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
token, err := utils.RandomToken()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := r.DB.Exec(
|
||||||
|
`INSERT INTO tokens (name, last_name, login, password, token, permission_view, permission_manage_agent, permission_admin, is_active)
|
||||||
|
VALUES (?, ?, ?, ?, ?, 0, 0, 0, 0)`,
|
||||||
|
ur.Name, ur.LastName, ur.Login, string(hashed), token,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
id, err := result.LastInsertId()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return strconv.FormatInt(id, 10), nil
|
||||||
|
}
|
||||||
|
|
||||||
// Login authenticates by login/password, generates a new token, and returns LoginResponse.
|
// Login authenticates by login/password, generates a new token, and returns LoginResponse.
|
||||||
func (r *Repository) Login(login, password string) (*LoginResponse, error) {
|
func (r *Repository) Login(login, password string) (*LoginResponse, error) {
|
||||||
var t Tokens
|
var t Tokens
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
backend_url: http://backend:8080
|
backend_url: http://backend:8080
|
||||||
grpc_url: backend:9001
|
grpc_url: backend:9001
|
||||||
label: test-agent-1
|
label: test-agent-1
|
||||||
registration_token: "156616b56774d59ba53f1eb4b096488bb5f755bbf5b737d93a42bb1b583ad7fb"
|
registration_token: "3db3bc64affa93c3b95762a41cbad9c58762f8e49faa1bb1ec1588a75fb9188d"
|
||||||
cert_dir: /etc/hellreign-agent/certs
|
cert_dir: /etc/hellreign-agent/certs
|
||||||
services:
|
services:
|
||||||
- name: system
|
- name: system
|
||||||
|
|||||||
@@ -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