Skip to content

Commit

Permalink
Sync Tn/add op vars (#976)
Browse files Browse the repository at this point in the history
* add global variables table

* set up global vars ui and backend

* add tests / test data

* remove logs

* fix tests

* resolve TODOS

* add button to add new variables

* remove pagination

* change text

* clean up outdated comments

* add user_vars and vars_user_map tables

* update copyright

* remove ID from DTO

* delete unneeded permissions

* shorten name for brevity

* shorten name for brevity lowercase

* setup backend for op vars

* set up front end routing

* add table for op vars

* fix column issues

* add 'add var' button (no css)

* add seed data for op vars

* fix tests

* fix delete Op test

* add op var tests

* remove old todos

* fix button css

* remove duplicate line

* fix typo

* fix duplicate name bug

* ensure operation names are unique in an operation

* get similar errors for modifying op var

* fix delete bug

* update tests to match new functionality

* make vars capitlized no spaces

* fix tests

* send variables to services (#950)

---------

Co-authored-by: Tyler Noblett <Tyler.Noblett@outlook.com>
Co-authored-by: Tyler Noblett <Tyler.noblett@originate.com>
  • Loading branch information
3 people committed Nov 9, 2023
1 parent 4da4de0 commit df289ea
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 5 deletions.
54 changes: 49 additions & 5 deletions backend/enhancementservices/event_new_evidence.go
Expand Up @@ -8,17 +8,20 @@ import (
"fmt"

"github.com/ashirt-ops/ashirt-server/backend/database"
"github.com/ashirt-ops/ashirt-server/backend/dtos"
"github.com/ashirt-ops/ashirt-server/backend/helpers"
"github.com/ashirt-ops/ashirt-server/backend/models"

sq "github.com/Masterminds/squirrel"
)

type NewEvidencePayload struct {
Type string `json:"type" db:"type"`
EvidenceUUID string `json:"evidenceUuid" db:"uuid"`
OperationSlug string `json:"operationSlug" db:"operation_slug"`
ContentType string `json:"contentType" db:"content_type"`
Type string `json:"type" db:"type"`
EvidenceUUID string `json:"evidenceUuid" db:"uuid"`
OperationSlug string `json:"operationSlug" db:"operation_slug"`
ContentType string `json:"contentType" db:"content_type"`
GlobalVariables []dtos.GlobalVar `json:"globalVariables"`
OperationVars []dtos.OperationVar `json:"operationVariables"`
}

type ExpandedNewEvidencePayload struct {
Expand Down Expand Up @@ -78,7 +81,21 @@ func batchBuildNewEvidencePayloadSpecial(ctx context.Context, db database.Connec
func batchBuildNewEvidencePayloadFromIDs(db database.ConnectionProxy, evidenceIDs []int64) ([]ExpandedNewEvidencePayload, error) {
var payloads []ExpandedNewEvidencePayload

err := db.Select(&payloads, sq.Select(
var globalVariables []models.GlobalVar

err := db.Select(&globalVariables, sq.Select("name", "value").From("global_vars"))
if err != nil {
return nil, fmt.Errorf("unable to gather global variables for worker")
}
var globalVariablesDTO []dtos.GlobalVar
for _, v := range globalVariables {
globalVariablesDTO = append(globalVariablesDTO, dtos.GlobalVar{
Name: v.Name,
Value: v.Value,
})
}

err = db.Select(&payloads, sq.Select(
"e.id AS id",
"e.uuid AS uuid",
"e.content_type",
Expand All @@ -95,5 +112,32 @@ func batchBuildNewEvidencePayloadFromIDs(db database.ConnectionProxy, evidenceID
return nil, fmt.Errorf("unable to gather evidence data for worker")
}

for i := range payloads {
var operationVariables []models.OperationVar

err := db.Select(&operationVariables,
sq.Select("ov.name", "ov.value", "ov.slug").
From("operation_vars ov").
Join("var_operation_map vom ON ov.id = vom.var_id").
Join("operations o ON o.id = vom.operation_id").
Where(sq.Eq{"o.slug": payloads[i].OperationSlug}))
if err != nil {
return nil, fmt.Errorf("unable to gather operation variables for worker")
}

var operationVariablesDTO []dtos.OperationVar
for _, v := range operationVariables {
operationVariablesDTO = append(operationVariablesDTO, dtos.OperationVar{
Name: v.Name,
Value: v.Value,
VarSlug: v.Slug,
OperationSlug: payloads[i].OperationSlug,
})
}

payloads[i].OperationVars = operationVariablesDTO
payloads[i].GlobalVariables = globalVariablesDTO
}

return payloads, nil
}
Expand Up @@ -12,6 +12,8 @@ export type EvidenceCreatedMessage = {
evidenceUuid: string,
operationSlug: string,
contentType: typeof SupportedContentTypes[number]
globalVariables: Record<string, unknown>[]
operationVariables: Record<string, unknown>[]
}

/**
Expand Down
Expand Up @@ -12,6 +12,8 @@ export type EvidenceCreatedMessage = {
evidenceUuid: string,
operationSlug: string,
contentType: typeof SupportedContentTypes[number]
globalVariables: Record<string, unknown>[]
operationVariables: Record<string, unknown>[]
}

/**
Expand Down

0 comments on commit df289ea

Please sign in to comment.