11import { CreateScanRequest , UpdateScanRequest } from "../requests/validators/scanRequest" ;
22import { v4 as uuidv4 } from 'uuid' ;
33import * as scanStorage from "../../storage/scan.storage" ;
4- import { ScanStatus , ScanRequestResponse } from "../../models/scan" ;
5- import { ProbeStatus } from "../../models/probe" ;
4+ import { ScanStatus , ScanRequestResponse , ScanWithProbes } from "../../models/scan" ;
5+ import { Probe , ProbeStatus } from "../../models/probe" ;
66import { Scan } from '../../models/scan'
77import { Report , SupabaseReport } from '../../models/report'
88import { publishProbeRequest } from "../../storage/awsSqsQueue" ;
9- import { saveReport } from "../../storage/mongo/mongoReport.storage" ;
109import { createReport } from "../../storage/report.storage" ;
1110import { ScanDoesNotExist } from "../../exceptions/exceptions" ;
12- import { deleteProbes } from "../../storage/probe.storage" ;
11+ import { deleteProbes , updateProbesByScanId } from "../../storage/probe.storage" ;
1312
1413
1514export const requestScan = async ( scanRequest : CreateScanRequest ) : Promise < ScanRequestResponse > => {
1615 const newScanId = uuidv4 ( ) ;
1716 console . log ( `[REQUEST][${ newScanId } ] Received scan request ${ newScanId } ` )
1817
1918 // Assing uids to probes
20- const probes = scanRequest . probes . map ( ( probe ) => {
19+ const probes : Partial < Probe > [ ] = scanRequest . probes . map ( ( probe ) => {
2120 return {
2221 ...probe ,
23- uid : uuidv4 ( )
22+ id : uuidv4 ( )
2423 }
2524 } )
2625
@@ -40,18 +39,19 @@ export const requestScan = async (scanRequest: CreateScanRequest): Promise<ScanR
4039
4140 console . log ( `[REQUEST][${ newScanId } ] Saving probe start data...` )
4241 await scanStorage . saveProbesStartData ( probes . map ( ( probe ) => ( {
43- id : probe . uid ,
42+ id : probe . id ,
4443 status : ProbeStatus . PENDING ,
4544 scanId : newScanId ,
46- name : probe . name
45+ name : probe . name ,
46+ settings : probe . settings
4747 } ) ) )
4848 console . log ( `[REQUEST][${ newScanId } ] Probe start data saved !` )
4949
5050
5151 console . log ( `[REQUEST][${ newScanId } ] Publishing request to Queue...` )
5252 await publishProbeRequest ( probes . map ( ( probe ) => ( {
5353 context : {
54- id : probe . uid ,
54+ id : probe . id ,
5555 name : probe . name ,
5656 target : scanRequest . target
5757 } ,
@@ -97,7 +97,8 @@ export const updateScan = async (scanId: string, scanWithProbes: UpdateScanReque
9797 id : uuidv4 ( ) ,
9898 status : ProbeStatus . PENDING ,
9999 scanId,
100- name : probe . name
100+ name : probe . name ,
101+ settings : probe . settings
101102 } ) ) )
102103 console . log ( `[REQUEST][SCAN][UPDATE][${ scanId } ] Probes created successfully` )
103104 }
@@ -115,4 +116,24 @@ export const updateScan = async (scanId: string, scanWithProbes: UpdateScanReque
115116 const updatedScan = await scanStorage . updateScan ( scanId , payload )
116117 console . log ( `[REQUEST][SCAN][UPDATE][${ scanId } ] Scan updated` )
117118 return updatedScan
119+ }
120+
121+ export const restartScan = async ( scan : ScanWithProbes ) : Promise < void > => {
122+ console . log ( `[REQUEST][SCAN][RESTART][${ scan . id } ] Restarting scan...` )
123+ const report = await setupScanNewReport ( scan )
124+ await scanStorage . updateScan ( scan . id , { currentReportId : report . id } )
125+
126+ console . log ( `[REQUEST][SCAN][RESTART][${ scan . id } ] Updating probes...` )
127+ await updateProbesByScanId ( scan . id , { status : ProbeStatus . PENDING } )
128+
129+ console . log ( `[REQUEST][SCAN][RESTART][${ scan . id } ] Publishing request to Queue...` )
130+ await publishProbeRequest ( scan . probes . map ( ( probe ) => ( {
131+ context : {
132+ id : probe . id ,
133+ name : probe . name ,
134+ target : scan . target
135+ } ,
136+ settings : probe . settings
137+ } ) ) ) ;
138+ console . log ( `[REQUEST][SCAN][RESTART][${ scan . id } ] Published request to Queue !` )
118139}
0 commit comments