mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2025-12-06 15:22:47 +01:00
@@ -14,6 +14,7 @@ func automationResponseID(automation *model.AutomationResponse) []driver.Documen
|
||||
if automation == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return automationID(automation.ID)
|
||||
}
|
||||
|
||||
@@ -27,6 +28,7 @@ func (s *Service) ListAutomations(ctx context.Context) ([]*model.AutomationRespo
|
||||
|
||||
func (s *Service) CreateAutomation(ctx context.Context, form *model.AutomationForm) (doc *model.AutomationResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "CreateAutomation", automationResponseID(doc))
|
||||
|
||||
return s.database.AutomationCreate(ctx, form)
|
||||
}
|
||||
|
||||
@@ -36,10 +38,12 @@ func (s *Service) GetAutomation(ctx context.Context, id string) (*model.Automati
|
||||
|
||||
func (s *Service) UpdateAutomation(ctx context.Context, id string, form *model.AutomationForm) (doc *model.AutomationResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "UpdateAutomation", automationResponseID(doc))
|
||||
|
||||
return s.database.AutomationUpdate(ctx, id, form)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteAutomation(ctx context.Context, id string) (err error) {
|
||||
defer s.publishRequest(ctx, err, "DeleteAutomation", automationID(id))
|
||||
|
||||
return s.database.AutomationDelete(ctx, id)
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ func dashboardResponseID(doc *model.DashboardResponse) []driver.DocumentID {
|
||||
if doc == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return templateID(doc.ID)
|
||||
}
|
||||
|
||||
@@ -27,6 +28,7 @@ func (s *Service) ListDashboards(ctx context.Context) ([]*model.DashboardRespons
|
||||
|
||||
func (s *Service) CreateDashboard(ctx context.Context, dashboard *model.Dashboard) (doc *model.DashboardResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "CreateDashboard", dashboardResponseID(doc))
|
||||
|
||||
return s.database.DashboardCreate(ctx, dashboard)
|
||||
}
|
||||
|
||||
@@ -36,14 +38,16 @@ func (s *Service) GetDashboard(ctx context.Context, id string) (*model.Dashboard
|
||||
|
||||
func (s *Service) UpdateDashboard(ctx context.Context, id string, form *model.Dashboard) (doc *model.DashboardResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "UpdateDashboard", dashboardResponseID(doc))
|
||||
|
||||
return s.database.DashboardUpdate(ctx, id, form)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteDashboard(ctx context.Context, id string) (err error) {
|
||||
defer s.publishRequest(ctx, err, "DeleteDashboard", dashboardID(id))
|
||||
|
||||
return s.database.DashboardDelete(ctx, id)
|
||||
}
|
||||
|
||||
func (s *Service) DashboardData(ctx context.Context, aggregation string, filter *string) (map[string]interface{}, error) {
|
||||
func (s *Service) DashboardData(ctx context.Context, aggregation string, filter *string) (map[string]any, error) {
|
||||
return s.database.WidgetData(ctx, aggregation, filter)
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ func jobResponseID(job *model.JobResponse) []driver.DocumentID {
|
||||
if job == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return jobID(job.ID)
|
||||
}
|
||||
|
||||
@@ -48,5 +49,6 @@ func (s *Service) GetJob(ctx context.Context, id string) (*model.JobResponse, er
|
||||
|
||||
func (s *Service) UpdateJob(ctx context.Context, id string, job *model.JobUpdate) (doc *model.JobResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "UpdateJob", jobResponseID(doc))
|
||||
|
||||
return s.database.JobUpdate(ctx, id, job)
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@ import (
|
||||
|
||||
func (s *Service) GetLogs(ctx context.Context, reference string) ([]*model.LogEntry, error) {
|
||||
id, _ := url.QueryUnescape(reference)
|
||||
|
||||
return s.database.LogList(ctx, id)
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ func playbookResponseID(playbook *model.PlaybookTemplateResponse) []driver.Docum
|
||||
if playbook == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return playbookID(playbook.ID)
|
||||
}
|
||||
|
||||
@@ -27,6 +28,7 @@ func (s *Service) ListPlaybooks(ctx context.Context) ([]*model.PlaybookTemplateR
|
||||
|
||||
func (s *Service) CreatePlaybook(ctx context.Context, form *model.PlaybookTemplateForm) (doc *model.PlaybookTemplateResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "CreatePlaybook", playbookResponseID(doc))
|
||||
|
||||
return s.database.PlaybookCreate(ctx, form)
|
||||
}
|
||||
|
||||
@@ -36,10 +38,12 @@ func (s *Service) GetPlaybook(ctx context.Context, id string) (*model.PlaybookTe
|
||||
|
||||
func (s *Service) UpdatePlaybook(ctx context.Context, id string, form *model.PlaybookTemplateForm) (doc *model.PlaybookTemplateResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "UpdatePlaybook", playbookResponseID(doc))
|
||||
|
||||
return s.database.PlaybookUpdate(ctx, id, form)
|
||||
}
|
||||
|
||||
func (s *Service) DeletePlaybook(ctx context.Context, id string) (err error) {
|
||||
defer s.publishRequest(ctx, err, "DeletePlaybook", playbookID(id))
|
||||
|
||||
return s.database.PlaybookDelete(ctx, id)
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"github.com/arangodb/go-driver"
|
||||
|
||||
@@ -33,6 +34,10 @@ func (s *Service) publishRequest(ctx context.Context, err error, function string
|
||||
userID = user.ID
|
||||
}
|
||||
|
||||
go s.bus.PublishRequest(userID, function, ids)
|
||||
go func() {
|
||||
if err := s.bus.PublishRequest(userID, function, ids); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ func templateResponseID(template *model.TicketTemplateResponse) []driver.Documen
|
||||
if template == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return templateID(template.ID)
|
||||
}
|
||||
|
||||
@@ -27,6 +28,7 @@ func (s *Service) ListTemplates(ctx context.Context) ([]*model.TicketTemplateRes
|
||||
|
||||
func (s *Service) CreateTemplate(ctx context.Context, form *model.TicketTemplateForm) (doc *model.TicketTemplateResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "CreateTemplate", templateResponseID(doc))
|
||||
|
||||
return s.database.TemplateCreate(ctx, form)
|
||||
}
|
||||
|
||||
@@ -36,10 +38,12 @@ func (s *Service) GetTemplate(ctx context.Context, id string) (*model.TicketTemp
|
||||
|
||||
func (s *Service) UpdateTemplate(ctx context.Context, id string, form *model.TicketTemplateForm) (doc *model.TicketTemplateResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "UpdateTemplate", templateResponseID(doc))
|
||||
|
||||
return s.database.TemplateUpdate(ctx, id, form)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteTemplate(ctx context.Context, id string) (err error) {
|
||||
defer s.publishRequest(ctx, err, "DeleteTemplate", templateID(id))
|
||||
|
||||
return s.database.TemplateDelete(ctx, id)
|
||||
}
|
||||
|
||||
@@ -18,11 +18,13 @@ func ticketWithTicketsID(ticketResponse *model.TicketWithTickets) []driver.Docum
|
||||
if ticketResponse == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return ticketID(ticketResponse.ID)
|
||||
}
|
||||
|
||||
func ticketID(ticketID int64) []driver.DocumentID {
|
||||
id := fmt.Sprintf("%s/%d", database.TicketCollectionName, ticketID)
|
||||
|
||||
return []driver.DocumentID{driver.DocumentID(id)}
|
||||
}
|
||||
|
||||
@@ -31,6 +33,7 @@ func ticketIDs(ticketResponses []*model.TicketResponse) []driver.DocumentID {
|
||||
for _, ticketResponse := range ticketResponses {
|
||||
ids = append(ids, ticketID(ticketResponse.ID)...)
|
||||
}
|
||||
|
||||
return ids
|
||||
}
|
||||
|
||||
@@ -63,6 +66,7 @@ func (s *Service) CreateTicket(ctx context.Context, form *model.TicketForm) (doc
|
||||
if len(createdTickets) > 0 {
|
||||
return createdTickets[0], err
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -72,6 +76,7 @@ func (s *Service) CreateTicketBatch(ctx context.Context, ticketFormArray *model.
|
||||
}
|
||||
createdTickets, err := s.database.TicketBatchCreate(ctx, *ticketFormArray)
|
||||
defer s.publishRequest(ctx, err, "CreateTicket", ticketIDs(createdTickets))
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -81,16 +86,19 @@ func (s *Service) GetTicket(ctx context.Context, i int64) (*model.TicketWithTick
|
||||
|
||||
func (s *Service) UpdateTicket(ctx context.Context, i int64, ticket *model.Ticket) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "UpdateTicket", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.TicketUpdate(ctx, i, ticket)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteTicket(ctx context.Context, i int64) (err error) {
|
||||
defer s.publishRequest(ctx, err, "DeleteTicket", ticketID(i))
|
||||
|
||||
return s.database.TicketDelete(ctx, i)
|
||||
}
|
||||
|
||||
func (s *Service) AddArtifact(ctx context.Context, i int64, artifact *model.Artifact) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "AddArtifact", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.AddArtifact(ctx, i, artifact)
|
||||
}
|
||||
|
||||
@@ -100,16 +108,19 @@ func (s *Service) GetArtifact(ctx context.Context, i int64, s2 string) (*model.A
|
||||
|
||||
func (s *Service) SetArtifact(ctx context.Context, i int64, s2 string, artifact *model.Artifact) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "SetArtifact", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.ArtifactUpdate(ctx, i, s2, artifact)
|
||||
}
|
||||
|
||||
func (s *Service) RemoveArtifact(ctx context.Context, i int64, s2 string) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "RemoveArtifact", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.RemoveArtifact(ctx, i, s2)
|
||||
}
|
||||
|
||||
func (s *Service) EnrichArtifact(ctx context.Context, i int64, s2 string, form *model.EnrichmentForm) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "EnrichArtifact", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.EnrichArtifact(ctx, i, s2, form)
|
||||
}
|
||||
|
||||
@@ -123,46 +134,55 @@ func (s *Service) RunArtifact(ctx context.Context, id int64, name string, automa
|
||||
|
||||
jobID := uuid.NewString()
|
||||
origin := &model.Origin{ArtifactOrigin: &model.ArtifactOrigin{TicketId: id, Artifact: name}}
|
||||
|
||||
return s.bus.PublishJob(jobID, automation, map[string]string{"default": name}, &model.Context{Artifact: artifact}, origin)
|
||||
}
|
||||
|
||||
func (s *Service) AddComment(ctx context.Context, i int64, form *model.CommentForm) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "AddComment", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.AddComment(ctx, i, form)
|
||||
}
|
||||
|
||||
func (s *Service) RemoveComment(ctx context.Context, i int64, i2 int) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "RemoveComment", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.RemoveComment(ctx, i, int64(i2))
|
||||
}
|
||||
|
||||
func (s *Service) AddTicketPlaybook(ctx context.Context, i int64, form *model.PlaybookTemplateForm) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "AddTicketPlaybook", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.AddTicketPlaybook(ctx, i, form)
|
||||
}
|
||||
|
||||
func (s *Service) RemoveTicketPlaybook(ctx context.Context, i int64, s2 string) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "RemoveTicketPlaybook", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.RemoveTicketPlaybook(ctx, i, s2)
|
||||
}
|
||||
|
||||
func (s *Service) SetTaskData(ctx context.Context, i int64, s3 string, s2 string, data map[string]interface{}) (doc *model.TicketWithTickets, err error) {
|
||||
func (s *Service) SetTaskData(ctx context.Context, i int64, s3 string, s2 string, data map[string]any) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "SetTask", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.TaskUpdateData(ctx, i, s3, s2, data)
|
||||
}
|
||||
|
||||
func (s *Service) SetTaskOwner(ctx context.Context, i int64, s3 string, s2 string, owner string) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "SetTask", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.TaskUpdateOwner(ctx, i, s3, s2, owner)
|
||||
}
|
||||
|
||||
func (s *Service) CompleteTask(ctx context.Context, i int64, s3 string, s2 string, m map[string]interface{}) (doc *model.TicketWithTickets, err error) {
|
||||
func (s *Service) CompleteTask(ctx context.Context, i int64, s3 string, s2 string, m map[string]any) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "CompleteTask", ticketWithTicketsID(doc))
|
||||
|
||||
return s.database.TaskComplete(ctx, i, s3, s2, m)
|
||||
}
|
||||
|
||||
func (s *Service) RunTask(ctx context.Context, i int64, s3 string, s2 string) (err error) {
|
||||
defer s.publishRequest(ctx, err, "RunTask", ticketID(i))
|
||||
|
||||
return s.database.TaskRun(ctx, i, s3, s2)
|
||||
}
|
||||
|
||||
@@ -171,11 +191,13 @@ func (s *Service) SetReferences(ctx context.Context, i int64, references *model.
|
||||
return nil, &api.HTTPError{Status: http.StatusUnprocessableEntity, Internal: errors.New("no references given")}
|
||||
}
|
||||
defer s.publishRequest(ctx, err, "SetReferences", ticketID(i))
|
||||
|
||||
return s.database.SetReferences(ctx, i, *references)
|
||||
}
|
||||
|
||||
func (s *Service) SetSchema(ctx context.Context, i int64, s2 string) (doc *model.TicketWithTickets, err error) {
|
||||
defer s.publishRequest(ctx, err, "SetSchema", ticketID(i))
|
||||
|
||||
return s.database.SetTemplate(ctx, i, s2)
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ func ticketTypeResponseID(ticketType *model.TicketTypeResponse) []driver.Documen
|
||||
if ticketType == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return userDataID(ticketType.ID)
|
||||
}
|
||||
|
||||
@@ -27,6 +28,7 @@ func (s *Service) ListTicketTypes(ctx context.Context) ([]*model.TicketTypeRespo
|
||||
|
||||
func (s *Service) CreateTicketType(ctx context.Context, form *model.TicketTypeForm) (doc *model.TicketTypeResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "CreateTicketType", ticketTypeResponseID(doc))
|
||||
|
||||
return s.database.TicketTypeCreate(ctx, form)
|
||||
}
|
||||
|
||||
@@ -36,10 +38,12 @@ func (s *Service) GetTicketType(ctx context.Context, id string) (*model.TicketTy
|
||||
|
||||
func (s *Service) UpdateTicketType(ctx context.Context, id string, form *model.TicketTypeForm) (doc *model.TicketTypeResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "UpdateTicketType", ticketTypeResponseID(doc))
|
||||
|
||||
return s.database.TicketTypeUpdate(ctx, id, form)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteTicketType(ctx context.Context, id string) (err error) {
|
||||
defer s.publishRequest(ctx, err, "DeleteTicketType", ticketTypeID(id))
|
||||
|
||||
return s.database.TicketTypeDelete(ctx, id)
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ func newUserResponseID(user *model.NewUserResponse) []driver.DocumentID {
|
||||
if user == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return userID(user.ID)
|
||||
}
|
||||
|
||||
@@ -23,6 +24,7 @@ func userResponseID(user *model.UserResponse) []driver.DocumentID {
|
||||
if user == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return userID(user.ID)
|
||||
}
|
||||
|
||||
@@ -36,6 +38,7 @@ func (s *Service) ListUsers(ctx context.Context) ([]*model.UserResponse, error)
|
||||
|
||||
func (s *Service) CreateUser(ctx context.Context, form *model.UserForm) (doc *model.NewUserResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "CreateUser", newUserResponseID(doc))
|
||||
|
||||
return s.database.UserCreate(ctx, form)
|
||||
}
|
||||
|
||||
@@ -45,11 +48,13 @@ func (s *Service) GetUser(ctx context.Context, s2 string) (*model.UserResponse,
|
||||
|
||||
func (s *Service) UpdateUser(ctx context.Context, s2 string, form *model.UserForm) (doc *model.UserResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "UpdateUser", userID(s2))
|
||||
|
||||
return s.database.UserUpdate(ctx, s2, form)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteUser(ctx context.Context, s2 string) (err error) {
|
||||
defer s.publishRequest(ctx, err, "DeleteUser", userID(s2))
|
||||
|
||||
return s.database.UserDelete(ctx, s2)
|
||||
}
|
||||
|
||||
@@ -59,5 +64,6 @@ func (s *Service) CurrentUser(ctx context.Context) (*model.UserResponse, error)
|
||||
return nil, errors.New("no user in context")
|
||||
}
|
||||
s.publishRequest(ctx, nil, "CurrentUser", userResponseID(user))
|
||||
|
||||
return user, nil
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ func userDataResponseID(userData *model.UserDataResponse) []driver.DocumentID {
|
||||
if userData == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return userDataID(userData.ID)
|
||||
}
|
||||
|
||||
@@ -33,6 +34,7 @@ func (s *Service) GetUserData(ctx context.Context, id string) (*model.UserDataRe
|
||||
|
||||
func (s *Service) UpdateUserData(ctx context.Context, id string, data *model.UserData) (doc *model.UserDataResponse, err error) {
|
||||
defer s.publishRequest(ctx, err, "CreateUser", userDataResponseID(doc))
|
||||
|
||||
return s.database.UserDataUpdate(ctx, id, data)
|
||||
}
|
||||
|
||||
@@ -52,5 +54,6 @@ func (s *Service) UpdateCurrentUserData(ctx context.Context, data *model.UserDat
|
||||
}
|
||||
|
||||
defer s.publishRequest(ctx, err, "UpdateCurrentUserData", userDataResponseID(doc))
|
||||
|
||||
return s.database.UserDataUpdate(ctx, user.ID, data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user