Skip to content
This repository has been archived by the owner on Oct 14, 2024. It is now read-only.

Commit

Permalink
backend implementation of the periodic scan configs using cron expres…
Browse files Browse the repository at this point in the history
…sions
  • Loading branch information
FrimIdan committed Mar 19, 2023
1 parent 44dbf4a commit 01dc84d
Show file tree
Hide file tree
Showing 15 changed files with 417 additions and 281 deletions.
6 changes: 6 additions & 0 deletions api/models/models.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions api/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -960,6 +960,9 @@ components:
minimum: 1
maximum: 20
description: "The maximum number of scanners that can run in parallel for each scan"
disabled:
description: 'if true, the scan config is disabled and no scan should run from it'
type: boolean

ScanConfigRelationship:
type: object
Expand All @@ -980,6 +983,8 @@ components:
readOnly: true
maxParallelScanners:
readOnly: true
disabled:
readOnly: true
required: ['id']

ScanConfig:
Expand All @@ -1005,6 +1010,9 @@ components:
default: 2
# required:
# - name
# - scanFamiliesConfig
# - scope
# - scheduled

ScanConfigExists:
type: object
Expand Down
105 changes: 53 additions & 52 deletions api/server/server.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 12 additions & 26 deletions backend/pkg/database/demo.go
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,7 @@ func createTargets() []models.Target {

func createScanConfigs() []models.ScanConfig {
// Scan config 1
scanFamiliesConfig1 := &models.ScanFamiliesConfig{
scanFamiliesConfig1 := models.ScanFamiliesConfig{
Exploits: &models.ExploitsConfig{
Enabled: utils.BoolPtr(false),
},
Expand Down Expand Up @@ -562,17 +562,8 @@ func createScanConfigs() []models.ScanConfig {
log.Fatalf("failed to convert scope1: %v", err)
}

single1 := models.SingleScheduleScanConfig{
OperationTime: time.Now().Add(-10 * time.Hour),
}
var scheduled1 models.RuntimeScheduleScanConfigType
err = scheduled1.FromSingleScheduleScanConfig(single1)
if err != nil {
log.Fatalf("failed to create FromSingleScheduleScanConfig: %v", err)
}

// Scan config 2
scanFamiliesConfig2 := &models.ScanFamiliesConfig{
scanFamiliesConfig2 := models.ScanFamiliesConfig{
Exploits: &models.ExploitsConfig{
Enabled: utils.BoolPtr(true),
},
Expand Down Expand Up @@ -631,27 +622,22 @@ func createScanConfigs() []models.ScanConfig {
log.Fatalf("failed to convert scanConfig2Scope: %v", err)
}

single2 := models.SingleScheduleScanConfig{
OperationTime: time.Now().Add(-5 * time.Minute),
}
var scanConfig2Scheduled models.RuntimeScheduleScanConfigType
err = scanConfig2Scheduled.FromSingleScheduleScanConfig(single2)
if err != nil {
log.Fatalf("failed to create FromSingleScheduleScanConfig: %v", err)
}

return []models.ScanConfig{
{
Name: utils.PointerTo("demo scan 1"),
ScanFamiliesConfig: scanFamiliesConfig1,
Scheduled: &scheduled1,
Name: utils.PointerTo("demo scan 1"),
ScanFamiliesConfig: &scanFamiliesConfig1,
Scheduled: &models.RuntimeScheduleScanConfig{
OperationTime: utils.PointerTo(time.Now().Add(5 * time.Hour)),
},
Scope: &scanScopeType1,
MaxParallelScanners: utils.PointerTo(2),
},
{
Name: utils.PointerTo("demo scan 2"),
ScanFamiliesConfig: scanFamiliesConfig2,
Scheduled: &scanConfig2Scheduled,
Name: utils.PointerTo("demo scan 2"),
ScanFamiliesConfig: &scanFamiliesConfig2,
Scheduled: &models.RuntimeScheduleScanConfig{
CronLine: utils.PointerTo("0 */4 * * *"),
},
Scope: &scanScopeType2,
MaxParallelScanners: utils.PointerTo(3),
},
Expand Down
30 changes: 15 additions & 15 deletions backend/pkg/database/gorm/odata.go
Original file line number Diff line number Diff line change
Expand Up @@ -350,16 +350,16 @@ var schemaMetas = map[string]odatasql.SchemaMeta{
"ScanConfig": {
Table: "scan_configs",
Fields: odatasql.Schema{
"id": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"name": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"id": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"name": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"disabled": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"scanFamiliesConfig": odatasql.FieldMeta{
FieldType: odatasql.ComplexFieldType,
ComplexFieldSchemas: []string{"ScanFamiliesConfig"},
},
"scheduled": odatasql.FieldMeta{
FieldType: odatasql.ComplexFieldType,
ComplexFieldSchemas: []string{"SingleScheduleScanConfig"},
DiscriminatorProperty: "objectType",
FieldType: odatasql.ComplexFieldType,
ComplexFieldSchemas: []string{"RuntimeScheduleScanConfig"},
},
"scope": odatasql.FieldMeta{
FieldType: odatasql.ComplexFieldType,
Expand All @@ -373,15 +373,15 @@ var schemaMetas = map[string]odatasql.SchemaMeta{
},
"ScanConfigData": {
Fields: odatasql.Schema{
"name": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"name": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"disabled": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"scanFamiliesConfig": odatasql.FieldMeta{
FieldType: odatasql.ComplexFieldType,
ComplexFieldSchemas: []string{"ScanFamiliesConfig"},
},
"scheduled": odatasql.FieldMeta{
FieldType: odatasql.ComplexFieldType,
ComplexFieldSchemas: []string{"SingleScheduleScanConfig"},
DiscriminatorProperty: "objectType",
FieldType: odatasql.ComplexFieldType,
ComplexFieldSchemas: []string{"RuntimeScheduleScanConfig"},
},
"scope": odatasql.FieldMeta{
FieldType: odatasql.ComplexFieldType,
Expand All @@ -393,6 +393,12 @@ var schemaMetas = map[string]odatasql.SchemaMeta{
},
},
},
"RuntimeScheduleScanConfig": {
Fields: odatasql.Schema{
"cronLine": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"operationTime": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
},
},
"ScanFamiliesConfig": {
Fields: odatasql.Schema{
"exploits": odatasql.FieldMeta{
Expand Down Expand Up @@ -460,12 +466,6 @@ var schemaMetas = map[string]odatasql.SchemaMeta{
"enabled": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
},
},
"SingleScheduleScanConfig": {
Fields: odatasql.Schema{
"objectType": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
"operationTime": odatasql.FieldMeta{FieldType: odatasql.PrimitiveFieldType},
},
},
scopesSchemaName: {
Table: "scopes",
Fields: odatasql.Schema{
Expand Down
Loading

0 comments on commit 01dc84d

Please sign in to comment.